{"version":3,"file":"jiotranslate-web.development.umd.cjs","sources":["../../core/dist/jiotranslate.esm.js","../src/package/constants.ts","../src/package/tools/isSSR.ts","../src/package/observers/general/DomHelper.ts","../src/package/observers/general/ElementMeta.ts","../src/package/observers/general/helpers.ts","../src/package/observers/general/ElementHighlighter.ts","../src/package/observers/general/MouseEventHandler.ts","../src/package/observers/general/ElementRegistry.ts","../src/package/observers/general/ElementStore.ts","../src/package/observers/general/NodeHandler.ts","../src/package/observers/general/GeneralObserver.ts","../../../node_modules/.pnpm/fast-text-encoding@1.0.6/node_modules/fast-text-encoding/text.min.js","../src/package/observers/invisible/secret.ts","../src/package/observers/invisible/ValueMemory.ts","../src/package/observers/invisible/InvisibleWrapper.ts","../src/package/InvisibleObserver.ts","../src/package/observers/text/helpers.ts","../src/package/observers/text/TextWrapper.ts","../src/package/TextObserver.ts","../src/package/ObserverPlugin.ts","../src/package/tools/decodeApiKey.ts","../src/package/DevBackend.ts","../src/package/tools/extension.ts","../src/package/BrowserExtensionPlugin/constants.ts","../src/package/BrowserExtensionPlugin/loadInContextLib.ts","../src/package/BrowserExtensionPlugin/BrowserExtensionPlugin.ts","../src/package/LanguageStorage.ts","../src/package/LanguageDetector.ts","../src/package/BackendFetch.ts","../src/package/JioTranslate.ts","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/index.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js","../../../node_modules/.pnpm/@babel+runtime@7.23.9/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/.pnpm/@babel+runtime@7.23.9/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/subscribable.js","../../../node_modules/.pnpm/@babel+runtime@7.23.9/node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/utils.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/focusManager.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/onlineManager.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/retryer.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/notifyManager.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/logger.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/query.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/queryCache.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/mutation.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/mutationCache.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/infiniteQueryBehavior.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/queryClient.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/queryObserver.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/core/mutationObserver.js","../../../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js","../../../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js","../../../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js","../../../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/index.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/reactBatchedUpdates.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/setBatchUpdatesFn.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/logger.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/setLogger.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/QueryClientProvider.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/QueryErrorResetBoundary.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/utils.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/useMutation.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/useBaseQuery.js","../../../node_modules/.pnpm/react-query@3.39.3_react-dom@18.3.1_react@18.3.1/node_modules/react-query/es/react/useQuery.js","../src/package/ui/client/QueryProvider.tsx","../../../node_modules/.pnpm/@codemirror+state@6.4.1/node_modules/@codemirror/state/dist/index.js","../../../node_modules/.pnpm/style-mod@4.1.2/node_modules/style-mod/src/style-mod.js","../../../node_modules/.pnpm/w3c-keyname@2.2.8/node_modules/w3c-keyname/index.js","../../../node_modules/.pnpm/@codemirror+view@6.33.0/node_modules/@codemirror/view/dist/index.js","../../../node_modules/.pnpm/@tginternal+editor@1.15.1_@codemirror+lint@6.5.0_@codemirror+state@6.4.1_@codemirror+view@6.33.0/node_modules/@tginternal/editor/dist/tolgee-editor.js","../src/package/ui/tools/sleep.ts","../../../node_modules/.pnpm/use-context-selector@1.4.4_react-dom@18.3.1_react@18.3.1_scheduler@0.23.2/node_modules/use-context-selector/dist/index.modern.mjs","../src/package/ui/tools/createProvider.tsx","../src/package/ui/KeyDialog/languageHelpers.ts","../src/package/ui/client/HttpError.ts","../src/package/ui/tools/validateUrl.ts","../src/package/ui/client/client.ts","../src/package/ui/client/useQueryApi.ts","../src/package/ui/KeyDialog/dialogContext/tools.ts","../src/package/ui/KeyDialog/dialogContext/useGallery.ts","../src/package/ui/tools/checkPlatformVersion.ts","../src/package/ui/tools/limitSurroundingKeys.ts","../src/package/ui/KeyDialog/State/translationStates.ts","../src/package/ui/tools/permissions.ts","../src/package/ui/KeyDialog/dialogContext/usePermissions.ts","../src/package/ui/KeyDialog/dialogContext/index.ts","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/colors/common.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/colors/red.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/colors/purple.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/colors/blue.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/colors/lightBlue.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/colors/green.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/colors/orange.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/colors/grey.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/identifier.js","../../../node_modules/.pnpm/@babel+runtime@7.23.9/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/.pnpm/@emotion+memoize@0.8.1/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../../../node_modules/.pnpm/@emotion+is-prop-valid@1.2.2/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../../../node_modules/.pnpm/@emotion+sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Enum.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Utility.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Parser.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Serializer.js","../../../node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Middleware.js","../../../node_modules/.pnpm/@emotion+cache@11.13.1/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../../../node_modules/.pnpm/@emotion+utils@1.2.1/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../../../node_modules/.pnpm/@emotion+hash@0.9.1/node_modules/@emotion/hash/dist/emotion-hash.esm.js","../../../node_modules/.pnpm/@emotion+unitless@0.8.1/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../../../node_modules/.pnpm/@emotion+serialize@1.1.4/node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../../../node_modules/.pnpm/@emotion+use-insertion-effect-with-fallbacks@1.0.1_react@18.3.1/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../../../node_modules/.pnpm/@emotion+react@11.11.4_@types+react@18.2.74_react@18.3.1/node_modules/@emotion/react/dist/emotion-element-43c6fea0.browser.esm.js","../../../node_modules/.pnpm/@emotion+react@11.11.4_@types+react@18.2.74_react@18.3.1/node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../../../node_modules/.pnpm/@emotion+styled@11.11.5_@emotion+react@11.11.4_@types+react@18.2.74_react@18.3.1/node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../../../node_modules/.pnpm/@emotion+styled@11.11.5_@emotion+react@11.11.4_@types+react@18.2.74_react@18.3.1/node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../../../node_modules/.pnpm/@mui+styled-engine@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_react@18.3.1/node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../../../node_modules/.pnpm/@mui+styled-engine@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_react@18.3.1/node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../../../node_modules/.pnpm/@mui+styled-engine@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_react@18.3.1/node_modules/@mui/styled-engine/index.js","../../../node_modules/.pnpm/@babel+runtime@7.24.4/node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/.pnpm/@babel+runtime@7.24.4/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/deepmerge/deepmerge.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/createTheme/shape.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/merge.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/breakpoints.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/capitalize/capitalize.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/style.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/memoize.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/spacing.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/createTheme/createSpacing.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/compose.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/borders.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/cssGrid.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/palette.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/sizing.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/createTheme/applyStyles.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/createTheme/createTheme.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/useThemeWithoutDefault.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/useTheme.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/ClassNameGenerator/ClassNameGenerator.js","../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/createBox.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/generateUtilityClass/generateUtilityClass.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/generateUtilityClasses/generateUtilityClasses.js","../../../node_modules/.pnpm/react-is@18.2.0/node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/.pnpm/react-is@18.2.0/node_modules/react-is/index.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/getDisplayName/getDisplayName.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/resolveProps/resolveProps.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useEnhancedEffect/useEnhancedEffect.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/clamp/clamp.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/createChainedFunction/createChainedFunction.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/debounce/debounce.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/isMuiElement/isMuiElement.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/ownerDocument/ownerDocument.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/ownerWindow/ownerWindow.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/setRef/setRef.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useId/useId.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useControlled/useControlled.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useEventCallback/useEventCallback.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useForkRef/useForkRef.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useLazyRef/useLazyRef.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useOnMount/useOnMount.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useTimeout/useTimeout.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/getScrollbarSize/getScrollbarSize.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/usePreviousProps/usePreviousProps.js","../../../node_modules/.pnpm/@mui+utils@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/utils/composeClasses/composeClasses.js","../../../node_modules/.pnpm/@mui+private-theming@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/private-theming/useTheme/ThemeContext.js","../../../node_modules/.pnpm/@mui+private-theming@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/private-theming/useTheme/useTheme.js","../../../node_modules/.pnpm/@mui+private-theming@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/private-theming/ThemeProvider/nested.js","../../../node_modules/.pnpm/@mui+private-theming@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/RtlProvider/index.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/createMixins.js","../../../node_modules/.pnpm/@babel+runtime@7.24.4/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/colorManipulator.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/createPalette.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/createTypography.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/shadows.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/createTransitions.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/zIndex.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/createTheme.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/defaultTheme.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/useTheme.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/useThemeProps.js","../../../node_modules/.pnpm/@babel+runtime@7.24.4/node_modules/@babel/runtime/helpers/extends.js","../../../node_modules/.pnpm/@babel+runtime@7.24.4/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/createStyled.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/slotShouldForwardProp.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/rootShouldForwardProp.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/styled.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/ThemeProvider.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/styles/getOverlayAlpha.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/SvgIcon/svgIconClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/SvgIcon/SvgIcon.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/utils/createSvgIcon.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/zero-styled/index.js","../../../node_modules/.pnpm/@babel+runtime@7.24.4/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../node_modules/.pnpm/@babel+runtime@7.24.4/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@18.3.1_react@18.3.1/node_modules/react-transition-group/esm/config.js","../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@18.3.1_react@18.3.1/node_modules/react-transition-group/esm/TransitionGroupContext.js","../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@18.3.1_react@18.3.1/node_modules/react-transition-group/esm/Transition.js","../../../node_modules/.pnpm/@babel+runtime@7.24.4/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@18.3.1_react@18.3.1/node_modules/react-transition-group/esm/utils/ChildMapping.js","../../../node_modules/.pnpm/react-transition-group@4.4.5_react-dom@18.3.1_react@18.3.1/node_modules/react-transition-group/esm/TransitionGroup.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/transitions/utils.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Paper/paperClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Paper/Paper.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/utils/isHostComponent.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/utils/appendOwnerState.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/utils/ClassNameConfigurator.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/utils/extractEventHandlers.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/utils/resolveComponentProps.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/utils/omitEventHandlers.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/utils/mergeSlotProps.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/utils/useSlotProps.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/utils/useSlot.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ButtonBase/Ripple.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ButtonBase/TouchRipple.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ButtonBase/ButtonBase.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Alert/alertClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/IconButton/iconButtonClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/IconButton/IconButton.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/Close.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Alert/Alert.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Typography/typographyClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Typography/Typography.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/AlertTitle/alertTitleClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/AlertTitle/AlertTitle.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/generateUtilityClass/index.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/generateUtilityClasses/index.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/FocusTrap/FocusTrap.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/Portal/Portal.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/unstable_useModal/ModalManager.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/unstable_useModal/useModal.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/enums.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/math.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/userAgent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/within.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getVariation.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/flip.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/hide.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/offset.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/debounce.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/createPopper.js","../../../node_modules/.pnpm/@popperjs+core@2.11.8/node_modules/@popperjs/core/lib/popper.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/Popper/popperClasses.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/Popper/Popper.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","../../../node_modules/.pnpm/@mui+base@5.0.0-beta.40_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/base/useAutocomplete/useAutocomplete.js","../../../node_modules/.pnpm/@mui+system@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react@18.3.1/node_modules/@mui/system/useThemeWithoutDefault.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Popper/Popper.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ListSubheader/ListSubheader.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/Cancel.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Chip/chipClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Chip/Chip.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/FormControl/formControlState.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/FormControl/FormControlContext.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/FormControl/useFormControl.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/InputBase/utils.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/InputBase/inputBaseClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/InputBase/InputBase.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Input/inputClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/FilledInput/filledInputClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Autocomplete/Autocomplete.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Fade/Fade.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Backdrop/backdropClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Backdrop/Backdrop.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Box/boxClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Box/Box.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Button/buttonClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Button/Button.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/switchBaseClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/SwitchBase.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/CheckBox.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Checkbox/checkboxClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Checkbox/Checkbox.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Modal/modalClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Modal/Modal.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Dialog/dialogClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Dialog/DialogContext.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Dialog/Dialog.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Divider/dividerClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/FilledInput/FilledInput.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/FormControl/formControlClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/FormControl/FormControl.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Grow/Grow.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Input/Input.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Link/linkClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Link/getTextDecoration.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Link/Link.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/List/ListContext.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/List/listClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/List/List.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ListItemText/listItemTextClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/ListItemText/ListItemText.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/MenuList/MenuList.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Popover/popoverClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Popover/Popover.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Menu/menuClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Menu/Menu.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/MenuItem/menuItemClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/MenuItem/MenuItem.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Select/selectClasses.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Select/SelectInput.js","../../../node_modules/.pnpm/@mui+material@5.15.14_@emotion+react@11.11.4_@emotion+styled@11.11.5_@types+react@18.2.74_react-dom@18.3.1_react@18.3.1/node_modules/@mui/material/Select/Select.js","../src/package/ui/KeyDialog/NewWindow.tsx","../src/package/ui/KeyDialog/TranslationDialogWrapper.tsx","../src/package/ui/KeyDialog/editor/editorTheme.ts","../src/package/ui/KeyDialog/editor/TranslationPlurals.tsx","../src/package/ui/KeyDialog/editor/EditorWrapper.tsx","../../../node_modules/.pnpm/@lezer+common@1.2.1/node_modules/@lezer/common/dist/index.js","../../../node_modules/.pnpm/@lezer+highlight@1.2.0/node_modules/@lezer/highlight/dist/index.js","../../../node_modules/.pnpm/@codemirror+language@6.10.1/node_modules/@codemirror/language/dist/index.js","../../../node_modules/.pnpm/@codemirror+commands@6.3.3/node_modules/@codemirror/commands/dist/index.js","../../../node_modules/.pnpm/codemirror@6.0.1_@lezer+common@1.2.1/node_modules/codemirror/dist/index.js","../src/package/ui/KeyDialog/editor/Editor.tsx","../src/package/ui/KeyDialog/editor/PluralEditor.tsx","../src/package/ui/common/FieldTitle.tsx","../src/package/ui/tools/isTranslationEmpty.ts","../src/package/ui/KeyDialog/TranslationTextField.tsx","../src/package/ui/KeyDialog/TranslationFields.tsx","../src/package/ui/KeyDialog/LanguageSelect.tsx","../src/package/ui/common/LoadingButton.tsx","../src/package/ui/KeyDialog/NsSelect.tsx","../../../node_modules/.pnpm/@mui+icons-material@5.15.14_@mui+material@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/icons-material/esm/Close.js","../../../node_modules/.pnpm/@mui+icons-material@5.15.14_@mui+material@5.15.14_@types+react@18.2.74_react@18.3.1/node_modules/@mui/icons-material/esm/OpenInNew.js","../src/package/ui/KeyDialog/Tags/Wrapper.tsx","../src/package/ui/KeyDialog/Tags/Tag.tsx","../../../node_modules/.pnpm/use-debounce@10.0.0_react@18.3.1/node_modules/use-debounce/dist/index.module.js","../src/package/ui/KeyDialog/Tags/CloseButton.tsx","../src/package/ui/KeyDialog/Tags/CustomPopper.tsx","../src/package/ui/KeyDialog/Tags/TagInput.tsx","../src/package/ui/KeyDialog/Tags/Tags.tsx","../src/package/ui/KeyDialog/Link.tsx","../src/package/ui/KeyDialog/ErrorAlert.tsx","../src/package/ui/KeyDialog/KeyForm.tsx","../src/package/ui/getRootElement.ts","../src/package/ui/ThemeProvider.tsx","../src/package/ui/KeyDialog/TranslationDialog.tsx","../src/package/ui/KeyDialog/KeyDialog.tsx","../../../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/client.js","../src/package/ui/KeyContextMenu/KeyContextMenu.tsx","../src/package/ui/InContextUi.tsx","../src/package/ContextUi.ts","../src/package/InContextTools.ts","../src/package/entry-development.ts"],"sourcesContent":["function isPromise(value) {\n    return Boolean(value && typeof value.then === 'function');\n}\nfunction valueOrPromise(value, callback) {\n    if (isPromise(value)) {\n        return Promise.resolve(value).then(callback);\n    }\n    else {\n        return callback(value);\n    }\n}\nfunction handleRegularOrAsyncErr(onError, createError, callback) {\n    function handle(e) {\n        const error = createError(e);\n        onError.emit(error);\n        // eslint-disable-next-line no-console\n        console.error(error);\n        throw error;\n    }\n    try {\n        const result = callback();\n        if (isPromise(result)) {\n            return result.catch(handle);\n        }\n        return result;\n    }\n    catch (e) {\n        handle(e);\n    }\n}\nfunction missingOptionError(option) {\n    const options = (Array.isArray(option) ? option : [option]).map((val) => `'${val}'`);\n    const lastPart = options.slice(-2).join(' or ');\n    const firstPart = options.slice(0, -2);\n    const stringifiedOptions = [...firstPart, lastPart].join(', ');\n    return `JioTranslate: You need to specify ${stringifiedOptions} option`;\n}\nfunction isObject(item) {\n    return typeof item === 'object' && !Array.isArray(item) && item !== null;\n}\nfunction getFallback(value) {\n    if (typeof value === 'string') {\n        return [value];\n    }\n    if (Array.isArray(value)) {\n        return value;\n    }\n    return undefined;\n}\nfunction getFallbackArray(value) {\n    return getFallback(value) || [];\n}\nfunction getFallbackFromStruct(language, fallbackLanguage) {\n    if (isObject(fallbackLanguage)) {\n        return getFallbackArray(fallbackLanguage === null || fallbackLanguage === void 0 ? void 0 : fallbackLanguage[language]);\n    }\n    else {\n        return getFallbackArray(fallbackLanguage);\n    }\n}\nfunction unique(arr) {\n    return Array.from(new Set(arr));\n}\nfunction sanitizeUrl(url) {\n    return url ? url.replace(/\\/+$/, '') : url;\n}\nfunction getErrorMessage(error) {\n    if (typeof error === 'string') {\n        return error;\n    }\n    else if (typeof (error === null || error === void 0 ? void 0 : error.message) === 'string') {\n        return error.message;\n    }\n}\nconst defaultFetchFunction = (input, options) => fetch(input, options);\nfunction headersInitToRecord(headersInit) {\n    return Object.fromEntries(new Headers(headersInit).entries());\n}\nconst createFetchFunction = (fetchFn = defaultFetchFunction) => {\n    return (input, init) => {\n        let headers = headersInitToRecord(init === null || init === void 0 ? void 0 : init.headers);\n        if (headers['x-api-key']) {\n            headers = Object.assign({ 'x-JioTranslate-sdk-type': 'JS', 'x-JioTranslate-sdk-version': 'prerelease' }, headers);\n        }\n        return fetchFn(input, Object.assign(Object.assign({}, init), { headers }));\n    };\n};\n\nfunction EventEmitter(isActive) {\n    let handlers = [];\n    return Object.freeze({\n        listen(handler) {\n            const handlerWrapper = (e) => {\n                handler(e);\n            };\n            handlers.push(handlerWrapper);\n            return {\n                unsubscribe() {\n                    handlers = handlers.filter((i) => handlerWrapper !== i);\n                },\n            };\n        },\n        emit(data) {\n            if (isActive()) {\n                handlers.forEach((handler) => handler({ value: data }));\n            }\n        },\n    });\n}\n\nfunction EventEmitterSelective(isActive, getFallbackNs, getDefaultNs) {\n    const listeners = new Set();\n    const partialListeners = new Set();\n    function callHandlers(ns) {\n        // everything is implicitly subscribed to fallbacks\n        // as it can always fall through to it\n        const fallbackNamespaces = new Set(getFallbackNs());\n        partialListeners.forEach((handler) => {\n            const nsMatches = ns === undefined ||\n                (ns === null || ns === void 0 ? void 0 : ns.findIndex((ns) => fallbackNamespaces.has(ns) || handler.namespaces.has(ns))) !== -1;\n            if (nsMatches) {\n                handler.fn({ value: undefined });\n            }\n        });\n    }\n    let queue = [];\n    // merge events in queue into one event\n    function solveQueue() {\n        if (queue.length === 0) {\n            return;\n        }\n        const queueCopy = queue;\n        queue = [];\n        listeners.forEach((handler) => {\n            handler({ value: undefined });\n        });\n        let namespaces = new Set();\n        queueCopy.forEach((ns) => {\n            if (ns === undefined) {\n                // when no ns specified, it affects all namespaces\n                namespaces = undefined;\n            }\n            else if (namespaces !== undefined) {\n                ns.forEach((ns) => namespaces.add(ns));\n            }\n        });\n        const namespacesArray = namespaces\n            ? Array.from(namespaces.keys())\n            : undefined;\n        callHandlers(namespacesArray);\n    }\n    return Object.freeze({\n        emit(ns, delayed) {\n            if (isActive()) {\n                queue.push(ns);\n                if (!delayed) {\n                    solveQueue();\n                }\n                else {\n                    setTimeout(solveQueue, 0);\n                }\n            }\n        },\n        listen(handler) {\n            listeners.add(handler);\n            const result = {\n                unsubscribe: () => {\n                    listeners.delete(handler);\n                },\n            };\n            return result;\n        },\n        listenSome(handler) {\n            const handlerWrapper = {\n                fn: (e) => {\n                    handler(e);\n                },\n                namespaces: new Set(),\n            };\n            partialListeners.add(handlerWrapper);\n            const result = {\n                unsubscribe: () => {\n                    partialListeners.delete(handlerWrapper);\n                },\n                subscribeNs: (ns) => {\n                    getFallbackArray(ns).forEach((val) => handlerWrapper.namespaces.add(val));\n                    if (ns === undefined) {\n                        // subscribing to default ns\n                        handlerWrapper.namespaces.add(getDefaultNs());\n                    }\n                    return result;\n                },\n            };\n            return result;\n        },\n    });\n}\n\nfunction Events(getFallbackNs, getDefaultNs) {\n    let emitterActive = true;\n    function isActive() {\n        return emitterActive;\n    }\n    const self = Object.freeze({\n        onPendingLanguageChange: EventEmitter(isActive),\n        onLanguageChange: EventEmitter(isActive),\n        onLoadingChange: EventEmitter(isActive),\n        onFetchingChange: EventEmitter(isActive),\n        onInitialLoaded: EventEmitter(isActive),\n        onRunningChange: EventEmitter(isActive),\n        onCacheChange: EventEmitter(isActive),\n        onUpdate: EventEmitterSelective(isActive, getFallbackNs, getDefaultNs),\n        onPermanentChange: EventEmitter(isActive),\n        onError: EventEmitter(isActive),\n        setEmitterActive(active) {\n            emitterActive = active;\n        },\n        on: ((event, handler) => {\n            switch (event) {\n                case 'pendingLanguage':\n                    return self.onPendingLanguageChange.listen(handler);\n                case 'language':\n                    return self.onLanguageChange.listen(handler);\n                case 'loading':\n                    return self.onLoadingChange.listen(handler);\n                case 'fetching':\n                    return self.onFetchingChange.listen(handler);\n                case 'initialLoad':\n                    return self.onInitialLoaded.listen(handler);\n                case 'running':\n                    return self.onRunningChange.listen(handler);\n                case 'cache':\n                    return self.onCacheChange.listen(handler);\n                case 'update':\n                    return self.onUpdate.listen(handler);\n                case 'permanentChange':\n                    return self.onPermanentChange.listen(handler);\n                case 'error':\n                    return self.onError.listen(handler);\n            }\n        }),\n    });\n    self.onInitialLoaded.listen(() => self.onUpdate.emit());\n    self.onLanguageChange.listen(() => self.onUpdate.emit());\n    self.onCacheChange.listen(({ value }) => self.onUpdate.emit([value.namespace], true));\n    return self;\n}\n\nclass RecordFetchError extends Error {\n    constructor(descriptor, cause, isDev = false) {\n        const { language, namespace } = descriptor;\n        super(`JioTranslate: Failed to fetch record for \"${language}\"${namespace && ` and \"${namespace}\"`}`);\n        this.cause = cause;\n        this.isDev = isDev;\n        this.name = 'RecordFetchError';\n        this.language = language;\n        this.namespace = namespace;\n    }\n}\nclass LanguageDetectorError extends Error {\n    constructor(message, cause) {\n        super(message);\n        this.cause = cause;\n        this.name = 'LanguageDetectorError';\n    }\n}\nclass LanguageStorageError extends Error {\n    constructor(message, cause) {\n        super(message);\n        this.cause = cause;\n        this.name = 'LanguageStorageError';\n    }\n}\n\nconst flattenTranslations = (data) => {\n    const result = new Map();\n    Object.entries(data).forEach(([key, value]) => {\n        // ignore empty values\n        if (value === undefined || value === null) {\n            return;\n        }\n        if (typeof value === 'object') {\n            flattenTranslations(value).forEach((flatValue, flatKey) => {\n                result.set(key + '.' + flatKey, flatValue);\n            });\n            return;\n        }\n        result.set(key, value);\n    });\n    return result;\n};\nconst decodeCacheKey = (key) => {\n    const [firstPart, ...rest] = key.split(':');\n    // if namespaces contains \":\" it won't get lost\n    const secondPart = rest.join(':');\n    return { language: firstPart, namespace: secondPart || '' };\n};\nconst encodeCacheKey = ({ language, namespace, }) => {\n    if (namespace) {\n        return `${language}:${namespace}`;\n    }\n    else {\n        return language;\n    }\n};\n\nfunction Cache(events, backendGetRecord, backendGetDevRecord, withDefaultNs, isInitialLoading, fetchingObserver, loadingObserver) {\n    const asyncRequests = new Map();\n    const cache = new Map();\n    let staticData = {};\n    let version = 0;\n    function addRecordInternal(descriptor, data, recordVersion) {\n        const cacheKey = encodeCacheKey(descriptor);\n        cache.set(cacheKey, {\n            data: flattenTranslations(data),\n            version: recordVersion,\n        });\n        events.onCacheChange.emit(descriptor);\n    }\n    /**\n     * Fetches production data\n     */\n    async function fetchProd(keyObject) {\n        let dataOrPromise = undefined;\n        const staticDataValue = staticData[encodeCacheKey(keyObject)];\n        if (typeof staticDataValue === 'function') {\n            dataOrPromise = staticDataValue();\n        }\n        if (!dataOrPromise) {\n            dataOrPromise = backendGetRecord(keyObject);\n        }\n        if (isPromise(dataOrPromise)) {\n            return dataOrPromise === null || dataOrPromise === void 0 ? void 0 : dataOrPromise.catch((e) => {\n                const error = new RecordFetchError(keyObject, e);\n                events.onError.emit(error);\n                // eslint-disable-next-line no-console\n                console.error(error);\n                throw error;\n            });\n        }\n        else {\n            return dataOrPromise;\n        }\n    }\n    async function fetchData(keyObject, isDev) {\n        let result = undefined;\n        if (isDev) {\n            try {\n                result = await backendGetDevRecord(keyObject);\n            }\n            catch (e) {\n                const error = new RecordFetchError(keyObject, e, true);\n                events.onError.emit(error);\n                // eslint-disable-next-line no-console\n                console.warn(error);\n            }\n        }\n        if (!result) {\n            result = await fetchProd(keyObject);\n        }\n        return result;\n    }\n    const self = Object.freeze({\n        addStaticData(data) {\n            if (data) {\n                staticData = Object.assign(Object.assign({}, staticData), data);\n                Object.entries(data).forEach(([key, value]) => {\n                    if (typeof value !== 'function') {\n                        const descriptor = decodeCacheKey(key);\n                        const existing = cache.get(key);\n                        if (!existing || existing.version === 0) {\n                            addRecordInternal(descriptor, value, 0);\n                        }\n                    }\n                });\n            }\n        },\n        invalidate() {\n            asyncRequests.clear();\n            version += 1;\n        },\n        addRecord(descriptor, data) {\n            addRecordInternal(descriptor, data, version);\n        },\n        exists(descriptor, strict = false) {\n            const record = cache.get(encodeCacheKey(descriptor));\n            if (record && strict) {\n                return record.version === version;\n            }\n            return Boolean(record);\n        },\n        getRecord(descriptor) {\n            var _a;\n            return (_a = cache.get(encodeCacheKey(withDefaultNs(descriptor)))) === null || _a === void 0 ? void 0 : _a.data;\n        },\n        getTranslation(descriptor, key) {\n            var _a;\n            return (_a = cache.get(encodeCacheKey(descriptor))) === null || _a === void 0 ? void 0 : _a.data.get(key);\n        },\n        getTranslationNs(namespaces, languages, key) {\n            var _a;\n            for (const namespace of namespaces) {\n                for (const language of languages) {\n                    const value = (_a = cache\n                        .get(encodeCacheKey({ language, namespace }))) === null || _a === void 0 ? void 0 : _a.data.get(key);\n                    if (value !== undefined && value !== null) {\n                        return [namespace];\n                    }\n                }\n            }\n            return unique(namespaces);\n        },\n        getTranslationFallback(namespaces, languages, key) {\n            var _a;\n            for (const namespace of namespaces) {\n                for (const language of languages) {\n                    const value = (_a = cache\n                        .get(encodeCacheKey({ language, namespace }))) === null || _a === void 0 ? void 0 : _a.data.get(key);\n                    if (value !== undefined && value !== null) {\n                        return value;\n                    }\n                }\n            }\n            return undefined;\n        },\n        changeTranslation(descriptor, key, value) {\n            var _a;\n            const record = (_a = cache.get(encodeCacheKey(descriptor))) === null || _a === void 0 ? void 0 : _a.data;\n            record === null || record === void 0 ? void 0 : record.set(key, value);\n            events.onCacheChange.emit(Object.assign(Object.assign({}, descriptor), { key }));\n        },\n        isFetching(ns) {\n            if (isInitialLoading()) {\n                return true;\n            }\n            if (ns === undefined) {\n                return asyncRequests.size > 0;\n            }\n            const namespaces = getFallbackArray(ns);\n            return Boolean(Array.from(asyncRequests.keys()).find((key) => namespaces.includes(decodeCacheKey(key).namespace)));\n        },\n        isLoading(language, ns) {\n            const namespaces = getFallbackArray(ns);\n            return Boolean(isInitialLoading() ||\n                Array.from(asyncRequests.keys()).find((key) => {\n                    const descriptor = decodeCacheKey(key);\n                    return ((!namespaces.length ||\n                        namespaces.includes(descriptor.namespace)) &&\n                        !self.exists({\n                            namespace: descriptor.namespace,\n                            language: language,\n                        }));\n                }));\n        },\n        async loadRecords(descriptors, isDev) {\n            const withPromises = descriptors.map((descriptor) => {\n                const keyObject = withDefaultNs(descriptor);\n                const cacheKey = encodeCacheKey(keyObject);\n                const existingPromise = asyncRequests.get(cacheKey);\n                if (existingPromise) {\n                    return {\n                        new: false,\n                        promise: existingPromise,\n                        keyObject,\n                        cacheKey,\n                    };\n                }\n                const dataPromise = fetchData(keyObject, isDev) || Promise.resolve(undefined);\n                asyncRequests.set(cacheKey, dataPromise);\n                return {\n                    new: true,\n                    promise: dataPromise,\n                    keyObject,\n                    cacheKey,\n                };\n            });\n            fetchingObserver.notify();\n            loadingObserver.notify();\n            const results = await Promise.all(withPromises.map((val) => val.promise));\n            withPromises.forEach((value, i) => {\n                const promiseChanged = asyncRequests.get(value.cacheKey) !== value.promise;\n                // if promise has changed in between, it means cache been invalidated or\n                // new data are being fetched\n                if (value.new && !promiseChanged) {\n                    asyncRequests.delete(value.cacheKey);\n                    const data = results[i];\n                    if (data) {\n                        self.addRecord(value.keyObject, data);\n                    }\n                    else if (!self.getRecord(value.keyObject)) {\n                        // if no data exist, put empty object\n                        self.addRecord(value.keyObject, {});\n                    }\n                }\n            });\n            fetchingObserver.notify();\n            loadingObserver.notify();\n            return withPromises.map((val) => self.getRecord(val.keyObject));\n        },\n        getAllRecords() {\n            const entries = Array.from(cache.entries());\n            return entries.map(([key, entry]) => {\n                return Object.assign(Object.assign({}, decodeCacheKey(key)), { data: entry.data });\n            });\n        },\n    });\n    return self;\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __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}\n\nconst defaultObserverOptions = {\n    tagAttributes: {\n        textarea: ['placeholder'],\n        input: ['value', 'placeholder'],\n        img: ['alt'],\n        '*': ['aria-label', 'title'],\n    },\n    restrictedElements: ['script', 'style'],\n    highlightKeys: ['Alt'],\n    highlightColor: 'rgb(255, 0, 0)',\n    highlightWidth: 5,\n    inputPrefix: '%-%jiotranslate:',\n    inputSuffix: '%-%',\n    passToParent: ['option', 'optgroup'],\n    fullKeyEncode: false,\n};\n\nconst DEFAULT_FORMAT_ERROR = 'invalid';\nconst DEFAULT_API_URL = 'https://localization-platform.sit.translate.jio/projects';\nconst DEFAULT_MISSING_TRANSLATION = ({ key, }) => key;\nconst defaultValues = {\n    defaultNs: '',\n    observerOptions: defaultObserverOptions,\n    observerType: 'invisible',\n    onFormatError: DEFAULT_FORMAT_ERROR,\n    apiUrl: DEFAULT_API_URL,\n    fetch: createFetchFunction(),\n    onTranslationMissing: DEFAULT_MISSING_TRANSLATION,\n};\nconst combineOptions = (...states) => {\n    let result = {};\n    states.forEach((state) => {\n        result = Object.assign(Object.assign(Object.assign({}, result), state), { observerOptions: Object.assign(Object.assign({}, result.observerOptions), state === null || state === void 0 ? void 0 : state.observerOptions) });\n    });\n    return result;\n};\nfunction initState(options, previousState) {\n    const initialOptions = combineOptions(defaultValues, previousState === null || previousState === void 0 ? void 0 : previousState.initialOptions, options);\n    // remove extra '/' from url end\n    initialOptions.apiUrl = sanitizeUrl(initialOptions.apiUrl);\n    if (options === null || options === void 0 ? void 0 : options.fetch) {\n        initialOptions.fetch = createFetchFunction(options.fetch);\n    }\n    return {\n        initialOptions,\n        activeNamespaces: (previousState === null || previousState === void 0 ? void 0 : previousState.activeNamespaces) || new Map(),\n        language: previousState === null || previousState === void 0 ? void 0 : previousState.language,\n        pendingLanguage: previousState === null || previousState === void 0 ? void 0 : previousState.language,\n        isInitialLoading: false,\n        isRunning: false,\n    };\n}\n\nfunction Plugins(getLanguage, getInitialOptions, getAvailableLanguages, getFallbackNamespaces, getTranslationNs, getTranslation, changeTranslation, events) {\n    const plugins = {\n        ui: undefined,\n    };\n    const instances = {\n        formatters: [],\n        finalFormatter: undefined,\n        observer: undefined,\n        devBackend: undefined,\n        backends: [],\n        ui: undefined,\n        languageDetector: undefined,\n        languageStorage: undefined,\n    };\n    const onClick = async ({ keysAndDefaults, target }) => {\n        var _a;\n        const withNs = keysAndDefaults.map(({ key, ns, defaultValue }) => {\n            return {\n                key,\n                defaultValue,\n                fallbackNamespaces: getFallbackNamespaces(ns),\n                namespace: getTranslationNs({ key, ns })[0],\n                translation: getTranslation({\n                    key,\n                    ns,\n                }),\n            };\n        });\n        (_a = instances.ui) === null || _a === void 0 ? void 0 : _a.handleElementClick(withNs, target);\n    };\n    const findPositions = (key, ns) => {\n        var _a;\n        return ((_a = instances.observer) === null || _a === void 0 ? void 0 : _a.findPositions(key, ns)) || [];\n    };\n    function translate(props) {\n        const translation = getTranslation({\n            key: props.key,\n            ns: props.ns,\n        });\n        return self.formatTranslation(Object.assign(Object.assign({}, props), { translation, formatEnabled: true }));\n    }\n    function getCommonProps() {\n        return { fetch: getInitialOptions().fetch };\n    }\n    function setObserver(observer) {\n        instances.observer = observer === null || observer === void 0 ? void 0 : observer({});\n    }\n    function hasObserver() {\n        return Boolean(instances.observer);\n    }\n    function addFormatter(formatter) {\n        if (formatter) {\n            instances.formatters.push(formatter);\n        }\n    }\n    function setFinalFormatter(formatter) {\n        instances.finalFormatter = formatter;\n    }\n    function setUi(ui) {\n        plugins.ui = ui;\n    }\n    function hasUi() {\n        return Boolean(plugins.ui);\n    }\n    function setLanguageStorage(storage) {\n        instances.languageStorage = storage;\n    }\n    function setLanguageDetector(detector) {\n        instances.languageDetector = detector;\n    }\n    function storageLoadLanguage() {\n        return handleRegularOrAsyncErr(events.onError, (e) => new LanguageStorageError('JioTranslate: Failed to load language', e), () => { var _a; return (_a = instances.languageStorage) === null || _a === void 0 ? void 0 : _a.getLanguage(getCommonProps()); });\n    }\n    function detectLanguage() {\n        if (!instances.languageDetector) {\n            return undefined;\n        }\n        const availableLanguages = getAvailableLanguages();\n        return handleRegularOrAsyncErr(events.onError, (e) => new LanguageDetectorError('JioTranslate: Failed to detect language', e), () => {\n            var _a;\n            return (_a = instances.languageDetector) === null || _a === void 0 ? void 0 : _a.getLanguage(Object.assign({ availableLanguages }, getCommonProps()));\n        });\n    }\n    function addBackend(backend) {\n        if (backend) {\n            instances.backends.push(backend);\n        }\n    }\n    function setDevBackend(backend) {\n        instances.devBackend = backend;\n    }\n    function addPlugin(jioTranslateInstance, plugin) {\n        const pluginTools = Object.freeze({\n            setFinalFormatter,\n            addFormatter,\n            setObserver,\n            hasObserver,\n            setUi,\n            hasUi,\n            setDevBackend,\n            addBackend,\n            setLanguageDetector,\n            setLanguageStorage,\n        });\n        plugin(jioTranslateInstance, pluginTools);\n    }\n    const self = Object.freeze({\n        addPlugin,\n        findPositions: findPositions,\n        run() {\n            var _a, _b;\n            const { apiKey, apiUrl, projectId, observerOptions, tagNewKeys } = getInitialOptions();\n            instances.ui = (_a = plugins.ui) === null || _a === void 0 ? void 0 : _a.call(plugins, {\n                apiKey: apiKey,\n                apiUrl: apiUrl,\n                projectId,\n                highlight: self.highlight,\n                changeTranslation,\n                findPositions,\n                onPermanentChange: (data) => events.onPermanentChange.emit(data),\n                tagNewKeys,\n            });\n            (_b = instances.observer) === null || _b === void 0 ? void 0 : _b.run({\n                mouseHighlight: true,\n                options: observerOptions,\n                translate,\n                onClick,\n                getTranslation,\n            });\n        },\n        stop() {\n            var _a;\n            instances.ui = undefined;\n            (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.stop();\n        },\n        getLanguageStorage() {\n            return instances.languageStorage;\n        },\n        getInitialLanguage() {\n            const availableLanguages = getAvailableLanguages();\n            const languageOrPromise = storageLoadLanguage();\n            return valueOrPromise(languageOrPromise, (language) => {\n                if ((!availableLanguages || availableLanguages.includes(language)) &&\n                    language) {\n                    return language;\n                }\n                return detectLanguage();\n            });\n        },\n        setStoredLanguage(language) {\n            return handleRegularOrAsyncErr(events.onError, (e) => new LanguageStorageError('JioTranslate: Failed to store language', e), () => { var _a; return (_a = instances.languageStorage) === null || _a === void 0 ? void 0 : _a.setLanguage(language, getCommonProps()); });\n        },\n        getDevBackend() {\n            return instances.devBackend;\n        },\n        getBackendRecord: (async ({ language, namespace }) => {\n            for (const backend of instances.backends) {\n                const data = await backend.getRecord(Object.assign({ language,\n                    namespace }, getCommonProps()));\n                if (data !== undefined) {\n                    return data;\n                }\n            }\n            return undefined;\n        }),\n        getBackendDevRecord: (async ({ language, namespace }) => {\n            var _a;\n            const { apiKey, apiUrl, projectId } = getInitialOptions();\n            return (_a = instances.devBackend) === null || _a === void 0 ? void 0 : _a.getRecord(Object.assign({ apiKey,\n                apiUrl,\n                projectId,\n                language,\n                namespace }, getCommonProps()));\n        }),\n        getLanguageDetector() {\n            return instances.languageDetector;\n        },\n        retranslate() {\n            var _a;\n            (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.retranslate();\n        },\n        highlight: ((key, ns) => {\n            var _a, _b;\n            return ((_b = (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.highlight) === null || _b === void 0 ? void 0 : _b.call(_a, key, ns)) || { unhighlight() { } };\n        }),\n        unwrap(text) {\n            var _a;\n            if (instances.observer) {\n                return (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.unwrap(text);\n            }\n            return { text, keys: [] };\n        },\n        wrap(params) {\n            var _a;\n            if (instances.observer) {\n                return (_a = instances.observer) === null || _a === void 0 ? void 0 : _a.wrap(params);\n            }\n            return params.translation;\n        },\n        hasDevBackend() {\n            return Boolean(self.getDevBackend());\n        },\n        formatTranslation(_a) {\n            var _b;\n            var { formatEnabled } = _a, props = __rest(_a, [\"formatEnabled\"]);\n            const { key, translation, defaultValue, noWrap, params, ns, orEmpty } = props;\n            const formattableTranslation = translation !== null && translation !== void 0 ? translation : defaultValue;\n            let translationMissingResult = '';\n            if (translation === undefined || translation === null) {\n                // called when translation is missing\n                // return value is used when 'defaultValue' and 'orEmpty' are not defined\n                translationMissingResult =\n                    getInitialOptions().onTranslationMissing(props);\n            }\n            let result = formattableTranslation !== null && formattableTranslation !== void 0 ? formattableTranslation : (orEmpty ? '' : translationMissingResult);\n            const language = getLanguage();\n            const isFormatEnabled = formatEnabled || !((_b = instances.observer) === null || _b === void 0 ? void 0 : _b.outputNotFormattable);\n            const wrap = (result) => {\n                if (instances.observer && !noWrap) {\n                    return instances.observer.wrap({\n                        key,\n                        translation: result,\n                        defaultValue,\n                        params,\n                        ns,\n                    });\n                }\n                return result;\n            };\n            result = wrap(result);\n            try {\n                if (formattableTranslation && language && isFormatEnabled) {\n                    for (const formatter of instances.formatters) {\n                        result = formatter.format({\n                            translation: result,\n                            language,\n                            params,\n                        });\n                    }\n                }\n                if (instances.finalFormatter &&\n                    formattableTranslation &&\n                    language &&\n                    isFormatEnabled) {\n                    result = instances.finalFormatter.format({\n                        translation: result,\n                        language,\n                        params,\n                    });\n                }\n            }\n            catch (e) {\n                // eslint-disable-next-line no-console\n                console.error(e);\n                const errorMessage = getErrorMessage(e) || DEFAULT_FORMAT_ERROR;\n                const onFormatError = getInitialOptions().onFormatError;\n                const formatErrorType = typeof onFormatError;\n                if (formatErrorType === 'string') {\n                    result = onFormatError;\n                }\n                else if (formatErrorType === 'function') {\n                    result = onFormatError(errorMessage, props);\n                }\n                else {\n                    result = DEFAULT_FORMAT_ERROR;\n                }\n                // wrap error message, so it's detectable\n                result = wrap(result);\n            }\n            return result;\n        },\n    });\n    return self;\n}\n\nconst ValueObserver = (initialValue, valueGetter, handler) => {\n    let previousValue = initialValue;\n    return Object.freeze({\n        init(value) {\n            previousValue = value;\n        },\n        notify() {\n            const value = valueGetter();\n            if (previousValue !== value) {\n                handler(value);\n            }\n            previousValue = value;\n        },\n    });\n};\n\nfunction State(onLanguageChange, onPendingLanguageChange, onRunningChange) {\n    let state = initState();\n    let devCredentials = undefined;\n    const self = Object.freeze({\n        init(options) {\n            state = initState(options, state);\n        },\n        isRunning() {\n            return state.isRunning;\n        },\n        setRunning(value) {\n            if (state.isRunning !== value) {\n                state.isRunning = value;\n                onRunningChange.emit(value);\n            }\n        },\n        isInitialLoading() {\n            return state.isInitialLoading;\n        },\n        setInitialLoading(value) {\n            state.isInitialLoading = value;\n        },\n        getLanguage() {\n            return state.language || state.initialOptions.language;\n        },\n        setLanguage(language) {\n            if (state.language !== language) {\n                state.language = language;\n                onLanguageChange.emit(language);\n            }\n        },\n        getPendingLanguage() {\n            return state.pendingLanguage || self.getLanguage();\n        },\n        setPendingLanguage(language) {\n            if (state.pendingLanguage !== language) {\n                state.pendingLanguage = language;\n                onPendingLanguageChange.emit(language);\n            }\n        },\n        getInitialOptions() {\n            return Object.assign(Object.assign({}, state.initialOptions), devCredentials);\n        },\n        addActiveNs(ns) {\n            const namespaces = getFallbackArray(ns);\n            namespaces.forEach((namespace) => {\n                const value = state.activeNamespaces.get(namespace);\n                if (value !== undefined) {\n                    state.activeNamespaces.set(namespace, value + 1);\n                }\n                else {\n                    state.activeNamespaces.set(namespace, 1);\n                }\n            });\n        },\n        removeActiveNs(ns) {\n            const namespaces = getFallbackArray(ns);\n            namespaces.forEach((namespace) => {\n                const value = state.activeNamespaces.get(namespace);\n                if (value !== undefined && value > 1) {\n                    state.activeNamespaces.set(namespace, value - 1);\n                }\n                else {\n                    state.activeNamespaces.delete(namespace);\n                }\n            });\n        },\n        getRequiredNamespaces() {\n            return unique([\n                ...(state.initialOptions.ns || [state.initialOptions.defaultNs]),\n                ...getFallbackArray(state.initialOptions.fallbackNs),\n                ...state.activeNamespaces.keys(),\n            ]);\n        },\n        getFallbackLangs(lang) {\n            const language = lang || self.getLanguage();\n            if (!language) {\n                return [];\n            }\n            return unique([\n                language,\n                ...getFallbackFromStruct(language, state.initialOptions.fallbackLanguage),\n            ]);\n        },\n        getFallbackNs() {\n            return getFallbackArray(state.initialOptions.fallbackNs);\n        },\n        getDefaultNs(ns) {\n            return ns === undefined ? state.initialOptions.defaultNs : ns;\n        },\n        getAvailableLanguages() {\n            if (state.initialOptions.availableLanguages) {\n                return state.initialOptions.availableLanguages;\n            }\n            else if (state.initialOptions.staticData) {\n                const languagesFromStaticData = Object.keys(state.initialOptions.staticData).map((key) => decodeCacheKey(key).language);\n                return Array.from(new Set(languagesFromStaticData));\n            }\n        },\n        withDefaultNs(descriptor) {\n            return {\n                namespace: descriptor.namespace === undefined\n                    ? self.getInitialOptions().defaultNs\n                    : descriptor.namespace,\n                language: descriptor.language,\n            };\n        },\n        overrideCredentials(credentials) {\n            if (credentials) {\n                devCredentials = Object.assign(Object.assign({}, credentials), { apiUrl: sanitizeUrl(credentials.apiUrl) });\n            }\n            else {\n                devCredentials = undefined;\n            }\n        },\n    });\n    return self;\n}\n\nfunction parseCombinedOptions(_a) {\n    var { ns, noWrap, orEmpty, params, language } = _a, rest = __rest(_a, [\"ns\", \"noWrap\", \"orEmpty\", \"params\", \"language\"]);\n    const options = {\n        ns: ns,\n        noWrap: noWrap,\n        orEmpty: orEmpty,\n        language: language,\n    };\n    return Object.assign(Object.assign({}, options), { params: Object.assign({}, rest) });\n}\nconst getTranslateProps = (keyOrProps, ...params) => {\n    let result = {};\n    let options;\n    if (typeof keyOrProps === 'object') {\n        result = keyOrProps;\n    }\n    else {\n        result.key = keyOrProps;\n        if (typeof params[0] === 'string') {\n            result.defaultValue = params[0];\n            options = params[1];\n        }\n        else if (typeof params[0] === 'object') {\n            options = params[0];\n        }\n    }\n    if (options) {\n        result = Object.assign(Object.assign({}, parseCombinedOptions(options)), result);\n    }\n    return result;\n};\n\nfunction Controller({ options }) {\n    const events = Events(getFallbackNs, getDefaultNs);\n    const fetchingObserver = ValueObserver(false, () => cache.isFetching(), events.onFetchingChange.emit);\n    const loadingObserver = ValueObserver(false, () => self.isLoading(), events.onLoadingChange.emit);\n    const state = State(events.onLanguageChange, events.onPendingLanguageChange, events.onRunningChange);\n    const pluginService = Plugins(state.getLanguage, state.getInitialOptions, state.getAvailableLanguages, getDefaultAndFallbackNs, getTranslationNs, getTranslation, changeTranslation, events);\n    const cache = Cache(events, pluginService.getBackendRecord, pluginService.getBackendDevRecord, state.withDefaultNs, state.isInitialLoading, fetchingObserver, loadingObserver);\n    if (options) {\n        init(options);\n    }\n    let runPromise;\n    events.onUpdate.listen(() => {\n        if (state.isRunning()) {\n            pluginService.retranslate();\n        }\n    });\n    function getFallbackNs() {\n        return state.getFallbackNs();\n    }\n    function getDefaultNs(ns) {\n        return state.getDefaultNs(ns);\n    }\n    // gets all namespaces where translation could be located\n    // takes (ns|default, fallback ns)\n    function getDefaultAndFallbackNs(ns) {\n        return [...getFallbackArray(getDefaultNs(ns)), ...getFallbackNs()];\n    }\n    // gets all namespaces which need to be loaded\n    // takes (ns|default, initial ns, fallback ns, active ns)\n    function getRequiredNamespaces(ns) {\n        return [\n            ...getFallbackArray(ns !== null && ns !== void 0 ? ns : getDefaultNs()),\n            ...state.getRequiredNamespaces(),\n        ];\n    }\n    function changeTranslation(descriptor, key, value) {\n        const keyObject = state.withDefaultNs(descriptor);\n        const previousValue = cache.getTranslation(keyObject, key);\n        cache.changeTranslation(keyObject, key, value);\n        return {\n            revert() {\n                cache.changeTranslation(keyObject, key, previousValue);\n            },\n        };\n    }\n    function init(options) {\n        state.init(options);\n        cache.addStaticData(state.getInitialOptions().staticData);\n    }\n    function getRequiredRecords(lang, ns) {\n        const languages = state.getFallbackLangs(lang);\n        const namespaces = getRequiredNamespaces(ns);\n        const result = [];\n        languages.forEach((language) => {\n            namespaces.forEach((namespace) => {\n                if (!cache.exists({ language, namespace }, true)) {\n                    result.push({ language, namespace });\n                }\n            });\n        });\n        return result;\n    }\n    function loadRequiredRecords(lang, ns) {\n        const descriptors = getRequiredRecords(lang, ns);\n        if (descriptors.length) {\n            return valueOrPromise(self.loadRecords(descriptors), () => { });\n        }\n    }\n    function getTranslationNs({ key, ns }) {\n        const languages = state.getFallbackLangs();\n        const namespaces = getDefaultAndFallbackNs(ns !== null && ns !== void 0 ? ns : undefined);\n        return cache.getTranslationNs(namespaces, languages, key);\n    }\n    function getTranslation({ key, ns, language }) {\n        const namespaces = getDefaultAndFallbackNs(ns !== null && ns !== void 0 ? ns : undefined);\n        const languages = state.getFallbackLangs(language);\n        return cache.getTranslationFallback(namespaces, languages, key);\n    }\n    function loadInitial() {\n        const data = valueOrPromise(initializeLanguage(), () => {\n            // fail if there is no language\n            return loadRequiredRecords();\n        });\n        if (isPromise(data)) {\n            state.setInitialLoading(true);\n            fetchingObserver.notify();\n            loadingObserver.notify();\n            return Promise.resolve(data).then(() => {\n                state.setInitialLoading(false);\n                fetchingObserver.notify();\n                loadingObserver.notify();\n                events.onInitialLoaded.emit();\n            });\n        }\n        else {\n            events.onInitialLoaded.emit();\n        }\n    }\n    function initializeLanguage() {\n        const existingLanguage = state.getLanguage();\n        if (existingLanguage) {\n            return;\n        }\n        const languageOrPromise = pluginService.getInitialLanguage();\n        return valueOrPromise(languageOrPromise, (lang) => {\n            const language = lang ||\n                state.getInitialOptions().defaultLanguage;\n            language && state.setLanguage(language);\n        });\n    }\n    function checkCorrectConfiguration() {\n        const languageComputable = pluginService.getLanguageDetector() || pluginService.getLanguageStorage();\n        if (languageComputable) {\n            const availableLanguages = state.getAvailableLanguages();\n            if (!availableLanguages) {\n                throw new Error(missingOptionError('availableLanguages'));\n            }\n        }\n        if (!state.getLanguage() && !state.getInitialOptions().defaultLanguage) {\n            throw new Error(missingOptionError(['defaultLanguage', 'language']));\n        }\n    }\n    const self = Object.freeze(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, events), state), pluginService), cache), { init: init, getTranslation: getTranslation, changeTranslation: changeTranslation, getTranslationNs: getTranslationNs, getDefaultAndFallbackNs: getDefaultAndFallbackNs, findPositions: pluginService.findPositions, getRequiredRecords: getRequiredRecords, async changeLanguage(language) {\n            if (state.getPendingLanguage() === language &&\n                state.getLanguage() === language) {\n                return;\n            }\n            state.setPendingLanguage(language);\n            if (state.isRunning()) {\n                await loadRequiredRecords(language);\n            }\n            if (language === state.getPendingLanguage()) {\n                // there might be parallel language change\n                // we only want to apply latest\n                state.setLanguage(language);\n                await pluginService.setStoredLanguage(language);\n            }\n        },\n        async addActiveNs(ns, forget) {\n            if (!forget) {\n                state.addActiveNs(ns);\n            }\n            if (state.isRunning()) {\n                await loadRequiredRecords(undefined, ns);\n            }\n        },\n        loadRecords(descriptors) {\n            return cache.loadRecords(descriptors, self.isDev());\n        },\n        async loadRecord(descriptor) {\n            return (await self.loadRecords([descriptor]))[0];\n        },\n        isLoading(ns) {\n            return cache.isLoading(state.getLanguage(), ns);\n        },\n        isLoaded(ns) {\n            const language = state.getLanguage();\n            if (!language) {\n                return false;\n            }\n            const languages = state.getFallbackLangs(language);\n            const namespaces = getRequiredNamespaces(ns);\n            const result = [];\n            languages.forEach((language) => {\n                namespaces.forEach((namespace) => {\n                    if (!cache.exists({ language, namespace })) {\n                        result.push({ language, namespace });\n                    }\n                });\n            });\n            return result.length === 0;\n        }, t: ((...args) => {\n            // @ts-ignore\n            const params = getTranslateProps(...args);\n            const translation = getTranslation(params);\n            return pluginService.formatTranslation(Object.assign(Object.assign({}, params), { translation }));\n        }), isDev() {\n            return Boolean(state.getInitialOptions().apiKey && state.getInitialOptions().apiUrl);\n        },\n        run() {\n            checkCorrectConfiguration();\n            if (!state.isRunning()) {\n                state.setRunning(true);\n                pluginService.run();\n                runPromise = loadInitial();\n            }\n            return Promise.resolve(runPromise);\n        },\n        stop() {\n            if (state.isRunning()) {\n                pluginService.stop();\n                state.setRunning(false);\n            }\n        } }));\n    return self;\n}\n\nfunction createJioTranslate(options) {\n    const controller = Controller({\n        options,\n    });\n    if (controller.isDev()) {\n        // override existing data in DevMode\n        controller.invalidate();\n    }\n    // restarts jiotranslate while applying callback\n    function withRestart(callback) {\n        const wasRunning = controller.isRunning();\n        wasRunning && controller.stop();\n        callback();\n        // invalidate cache when jiotranslate configuration is updated/plugin added in DevMode\n        controller.isDev() && controller.invalidate();\n        wasRunning && controller.run();\n    }\n    const self = Object.freeze({\n        /**\n         * Listen to jiotranslate events.\n         */\n        on: controller.on,\n        /**\n         * Listen for specific namespaces changes.\n         *\n         * ```\n         * const sub = jiotranslate.onUpdate(handler)\n         *\n         * // subscribe to selected namespace\n         * sub.subscribeNs(['common'])\n         *\n         * // unsubscribe\n         * sub.unsubscribe()\n         * ```\n         */\n        onNsUpdate: controller.onUpdate.listenSome,\n        /**\n         * Turn off/on events emitting. Is on by default.\n         */\n        setEmitterActive: controller.setEmitterActive,\n        /**\n         * @return current language if set.\n         */\n        getLanguage: controller.getLanguage,\n        /**\n         * `pendingLanguage` represents language which is currently being loaded.\n         * @return current `pendingLanguage` if set.\n         */\n        getPendingLanguage: controller.getPendingLanguage,\n        /**\n         * Change current language.\n         * - if not running sets `pendingLanguage`, `language` to the new value\n         * - if running sets `pendingLanguage` to the value, fetches necessary data and then changes `language`\n         *\n         * @return Promise which is resolved when `language` is changed.\n         */\n        changeLanguage: controller.changeLanguage,\n        /**\n         * Temporarily change translation in cache.\n         * @return object with revert method.\n         */\n        changeTranslation: controller.changeTranslation,\n        /**\n         * Adds namespace(s) list of active namespaces. And if jiotranslate is running, loads required data.\n         */\n        addActiveNs: controller.addActiveNs,\n        /**\n         * Remove namespace(s) from active namespaces.\n         *\n         * jiotranslate internally counts how many times was each active namespace added,\n         * so this method will remove namespace only if the counter goes down to 0.\n         */\n        removeActiveNs: controller.removeActiveNs,\n        /**\n         * Manually load multiple records from `Backend` (or `DevBackend` when in dev mode)\n         *\n         * It loads data together and adds them to cache in one operation, to prevent partly loaded state.\n         */\n        loadRecords: controller.loadRecords,\n        /**\n         * Manually load record from `Backend` (or `DevBackend` when in dev mode)\n         */\n        loadRecord: controller.loadRecord,\n        /**\n         *\n         */\n        addStaticData: controller.addStaticData,\n        /**\n         * Get record from cache.\n         */\n        getRecord: controller.getRecord,\n        /**\n         * Get all records from cache.\n         */\n        getAllRecords: controller.getAllRecords,\n        /**\n         * @param ns optional list of namespaces that you are interested in\n         * @return `true` if there are data that need to be fetched.\n         */\n        isLoaded: controller.isLoaded,\n        /**\n         * Returns records needed for instance to be `loaded`\n         */\n        getRequiredRecords: controller.getRequiredRecords,\n        /**\n         * @return `true` if jiotranslate is loading initial data (triggered by `run`).\n         */\n        isInitialLoading: controller.isInitialLoading,\n        /**\n         * @param ns optional list of namespaces that you are interested in\n         * @return `true` if jiotranslate is loading some translations for the first time.\n         */\n        isLoading: controller.isLoading,\n        /**\n         * @param ns optional list of namespaces that you are interested in\n         * @return `true` if jiotranslate is fetching some translations.\n         */\n        isFetching: controller.isFetching,\n        /**\n         * @return `true` if jiotranslate is running.\n         */\n        isRunning: controller.isRunning,\n        /**\n         * Changes internal state to running: true and loads initial files.\n         * Runs runnable plugins mainly Observer if present.\n         */\n        run: controller.run,\n        /**\n         * Changes internal state to running: false and stops runnable plugins.\n         */\n        stop: controller.stop,\n        /**\n         * Returns translated and formatted key.\n         * If Observer is present and jiotranslate is running, wraps result to be identifiable in the DOM.\n         */\n        t: controller.t,\n        /**\n         * Highlight keys that match selection.\n         */\n        highlight: controller.highlight,\n        /**\n         * Find positions of keys in the DOM.\n         */\n        findPositions: controller.findPositions,\n        /**\n         * @return current jiotranslate options.\n         */\n        getInitialOptions: controller.getInitialOptions,\n        /**\n         * jiotranslate is in dev mode if `DevTools` plugin is used and `apiKey` + `apiUrl` are specified.\n         * @return `true` if jiotranslate is in dev mode.\n         */\n        isDev: controller.isDev,\n        /**\n         * Wraps translation if there is `Observer` plugin\n         */\n        wrap: controller.wrap,\n        /**\n         * Unwrap translation\n         */\n        unwrap: controller.unwrap,\n        /**\n         * Override creadentials passed on initialization.\n         *\n         * When called in running state, jiotranslate stops and runs again.\n         */\n        overrideCredentials(credentials) {\n            withRestart(() => controller.overrideCredentials(credentials));\n        },\n        /**\n         * Add jiotranslate plugin after initialization.\n         *\n         * When called in running state, jiotranslate stops and runs again.\n         */\n        addPlugin(plugin) {\n            if (plugin) {\n                withRestart(() => controller.addPlugin(self, plugin));\n            }\n        },\n        /**\n         * Updates options after instance creation. Extends existing options,\n         * so it only changes the fields, that are listed.\n         *\n         * When called in running state, jiotranslate stops and runs again.\n         */\n        updateOptions(options) {\n            if (options) {\n                withRestart(() => controller.init(options));\n            }\n        },\n    });\n    return self;\n}\n/**\n * jiotranslate chainable constructor.\n *\n * Usage:\n * ```\n * const jiotranslate = JioTranslate().use(...).init(...)\n * ```\n */\nconst JioTranslateCore = () => {\n    const state = {\n        plugins: [],\n        options: {},\n    };\n    const jiotranslateChain = Object.freeze({\n        use(plugin) {\n            state.plugins.push(plugin);\n            return jiotranslateChain;\n        },\n        updateDefaults(options) {\n            state.options = combineOptions(state.options, options);\n            return jiotranslateChain;\n        },\n        init(options) {\n            const jiotranslate = createJioTranslate(combineOptions(state.options, options));\n            state.plugins.forEach(jiotranslate.addPlugin);\n            return jiotranslate;\n        },\n    });\n    return jiotranslateChain;\n};\n\nconst ERROR_PARAM_EMPTY = 0, ERROR_UNEXPECTED_CHAR = 1, ERROR_UNEXPECTED_END = 2;\nclass FormatError extends Error {\n    constructor(code, index, text) {\n        let error;\n        if (code === ERROR_PARAM_EMPTY) {\n            error = 'Empty parameter';\n        }\n        else if (code === ERROR_UNEXPECTED_CHAR) {\n            error = 'Unexpected character';\n        }\n        else {\n            error = 'Unexpected end';\n        }\n        super(`JioTranslate parser: ${error} at ${index} in \"${text}\"`);\n        this.code = code;\n        this.index = index;\n    }\n}\n\nfunction isWhitespace(ch) {\n    return /\\s/.test(ch);\n}\nconst STATE_TEXT = 0, STATE_ESCAPE_MAYBE = 1, STATE_ESCAPE = 2, STATE_PARAM = 3, STATE_PARAM_AFTER = 4;\nconst END_STATES = new Set([\n    STATE_ESCAPE,\n    STATE_ESCAPE_MAYBE,\n    STATE_TEXT,\n]);\nconst CHAR_ESCAPE = \"'\";\nconst ESCAPABLE = new Set(['{', '}', CHAR_ESCAPE]);\nconst isAllowedInParam = (char) => {\n    return /[0-9a-zA-Z_]/.test(char);\n};\nfunction formatParser(translation) {\n    let state = STATE_TEXT;\n    let text = '';\n    let param = '';\n    let ch = '';\n    const texts = [];\n    const params = [];\n    let i = 0;\n    function parsingError(code) {\n        throw new FormatError(code, i, translation);\n    }\n    const addText = () => {\n        texts.push(text);\n        text = '';\n    };\n    const addParamChar = () => {\n        if (!isAllowedInParam(ch)) {\n            parsingError(ERROR_UNEXPECTED_CHAR);\n        }\n        param += ch;\n    };\n    const addParam = () => {\n        if (param === '') {\n            parsingError(ERROR_PARAM_EMPTY);\n        }\n        params.push(param);\n        param = '';\n    };\n    for (i = 0; i < translation.length; i++) {\n        ch = translation[i];\n        switch (state) {\n            case STATE_TEXT:\n                if (ch === CHAR_ESCAPE) {\n                    text += ch;\n                    state = STATE_ESCAPE_MAYBE;\n                }\n                else if (ch === '{') {\n                    addText();\n                    state = STATE_PARAM;\n                }\n                else {\n                    text += ch;\n                    state = STATE_TEXT;\n                }\n                break;\n            case STATE_ESCAPE_MAYBE:\n                if (ESCAPABLE.has(ch)) {\n                    text = text.slice(0, -1) + ch;\n                    state = STATE_ESCAPE;\n                }\n                else {\n                    text += ch;\n                    state = STATE_TEXT;\n                }\n                break;\n            case STATE_ESCAPE:\n                if (ch === CHAR_ESCAPE) {\n                    state = STATE_TEXT;\n                }\n                else {\n                    text += ch;\n                    state = STATE_ESCAPE;\n                }\n                break;\n            case STATE_PARAM:\n                if (ch === '}') {\n                    addParam();\n                    state = STATE_TEXT;\n                }\n                else if (!isWhitespace(ch)) {\n                    addParamChar();\n                    state = STATE_PARAM;\n                }\n                else if (param !== '') {\n                    addParam();\n                    state = STATE_PARAM_AFTER;\n                }\n                break;\n            case STATE_PARAM_AFTER:\n                if (ch == '}') {\n                    state = STATE_TEXT;\n                }\n                else if (isWhitespace(ch)) {\n                    state = STATE_PARAM_AFTER;\n                }\n                else {\n                    parsingError(ERROR_UNEXPECTED_CHAR);\n                }\n        }\n    }\n    if (!END_STATES.has(state)) {\n        parsingError(ERROR_UNEXPECTED_END);\n    }\n    addText();\n    return [texts, params];\n}\n\nfunction formatter(translation, params) {\n    const [texts, pars] = formatParser(translation);\n    const result = [texts[0]];\n    for (let i = 1; i < texts.length; i++) {\n        const parameter = params === null || params === void 0 ? void 0 : params[pars[i - 1]];\n        if (parameter === undefined) {\n            throw new Error(`Missing parameter \"${pars[i - 1]}\" in \"${translation}\"`);\n        }\n        result.push(String(parameter));\n        result.push(texts[i]);\n    }\n    return result.join('');\n}\n\nfunction createFormatSimple() {\n    return {\n        format: ({ translation, params }) => formatter(translation, params),\n    };\n}\nconst FormatSimple = () => (jioTranslate, tools) => {\n    tools.setFinalFormatter(createFormatSimple());\n    return jioTranslate;\n};\n\nexport { FormatSimple, JioTranslateCore, LanguageDetectorError, LanguageStorageError, RecordFetchError, createFetchFunction, getFallback, getFallbackArray, getTranslateProps };\n//# sourceMappingURL=jiotranslate.esm.js.map\n","// needs to be same as in @jiotranslate/core-beta package\nexport const DEVTOOLS_ID = '__jiotranslate_dev_tools';\n\nexport const DEVTOOLS_Z_INDEX = 2147483000;\n\nexport const CHROME_EXTENSION_LINK =\n  'https://chrome.google.com/webstore/detail/tolgee-tools/hacnbapajkkfohnonhbmegojnddagfnj';\n\nexport const PREFERRED_LANGUAGES_LOCAL_STORAGE_KEY =\n  '__jiotranslate_preferredLanguages';\n\nexport const MAX_LANGUAGES_SELECTED = 5;\n\n/**\n * Use this if you want to indicate to tolgee that element contains key\n */\nexport const TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE = 'data-jiotranslate-key-only';\n/**\n * Use this attribute if you want tolgee Observer to not touch part of the DOM\n */\nexport const TOLGEE_RESTRICT_ATTRIBUTE = 'data-jiotranslate-restricted';\n/**\n * This attribute is present on elements that have been registred by tolgee and are clickable for in-context\n */\nexport const TOLGEE_ATTRIBUTE_NAME = '_jiotranslate';\nexport const TOLGEE_HIGHLIGHTER_CLASS = '_jiotranslate-highlighter';\n","export function isSSR() {\n  return typeof globalThis.window?.document?.createElement === 'undefined';\n}\n\nexport function throwIfSSR(origin: string) {\n  if (isSSR()) {\n    throw new Error(`${origin}: Can't run on the server`);\n  }\n}\n","import { ObserverOptions } from '@jiotranslate/core-beta';\n\nexport function DomHelper(options: ObserverOptions) {\n  function getParentElement(node: Node): Element | undefined {\n    if (node.parentElement) {\n      return node.parentElement;\n    }\n    if ((node as Attr).ownerElement) {\n      return (node as Attr).ownerElement || undefined;\n    }\n  }\n\n  const self = Object.freeze({\n    getSuitableParent(node: Node): Element {\n      const domParent = getParentElement(node);\n\n      if (domParent === undefined) {\n        // eslint-disable-next-line no-console\n        console.error(node);\n        throw new Error('No suitable parent found for node above.');\n      }\n\n      if (!options.passToParent) {\n        return domParent;\n      }\n\n      if (Array.isArray(options.passToParent)) {\n        const tagNameEquals = (elementTagName: string) =>\n          domParent.tagName.toLowerCase() === elementTagName.toLowerCase();\n        if (options.passToParent.findIndex(tagNameEquals) === -1) {\n          return domParent;\n        }\n      }\n\n      if (typeof options.passToParent === 'function') {\n        if (!options.passToParent(domParent)) {\n          return domParent;\n        }\n      }\n\n      return self.getSuitableParent(domParent);\n    },\n  });\n\n  return self;\n}\n","import type { KeyAndParams } from '@jiotranslate/core-beta';\nimport type { ElementMeta, NodeMeta, JioTranslateElement } from '../../types';\n\nexport function initElementMeta(element: JioTranslateElement): ElementMeta {\n  return {\n    element,\n    nodes: new Map(),\n  };\n}\n\nexport function initNodeMeta(\n  oldTextContent: string,\n  keys: KeyAndParams[]\n): NodeMeta {\n  return {\n    oldTextContent,\n    keys,\n  };\n}\n","import { KeyDescriptorInternal } from '../../types';\n\nexport function getNodeText(node: Node) {\n  return node.textContent;\n}\n\nexport function setNodeText(node: Node, text: string) {\n  node.textContent = text;\n}\n\nexport function compareDescriptors(\n  descriptor: KeyDescriptorInternal,\n  criteria: KeyDescriptorInternal\n) {\n  const keyMatches =\n    descriptor.key === undefined ||\n    criteria.key === undefined ||\n    criteria.key === descriptor.key;\n  const nsMatches =\n    descriptor.ns === undefined ||\n    criteria.ns === undefined ||\n    descriptor.ns?.findIndex((ns) => criteria.ns?.includes(ns)) !== -1;\n\n  return keyMatches && nsMatches;\n}\n\nexport function elementClickable(el: HTMLElement) {\n  while (el) {\n    if (el.getAttribute('disabled') !== null) {\n      return false;\n    }\n    el = el.parentElement;\n  }\n  return true;\n}\n","import { TOLGEE_HIGHLIGHTER_CLASS } from '../../constants';\nimport { ElementMeta, JioTranslateElement } from '../../types';\nimport { elementClickable } from './helpers';\n\nconst HIGHLIGHTER_BASE_STYLE: Partial<CSSStyleDeclaration> = {\n  position: 'fixed',\n  boxSizing: 'content-box',\n  zIndex: String(Number.MAX_SAFE_INTEGER),\n  contain: 'layout',\n  display: 'block',\n  borderStyle: 'solid',\n  borderRadius: '4px',\n};\n\ntype Props = {\n  highlightColor: string;\n  highlightWidth: number;\n};\n\nexport function ElementHighlighter({ highlightColor, highlightWidth }: Props) {\n  function initHighlightFunction(\n    element: JioTranslateElement,\n    elementMeta: ElementMeta\n  ) {\n    elementMeta.highlight = () => {\n      if (!element.isConnected) {\n        return;\n      }\n      const clickable = elementClickable(element);\n      let highlightEl = elementMeta.highlightEl;\n      if (!highlightEl) {\n        highlightEl = document.createElement('div');\n        highlightEl.classList.add(TOLGEE_HIGHLIGHTER_CLASS);\n        Object.entries(HIGHLIGHTER_BASE_STYLE).forEach(([key, value]) => {\n          // @ts-ignore\n          highlightEl!.style[key] = value;\n        });\n        highlightEl.style.borderColor = highlightColor;\n\n        elementMeta.highlightEl = highlightEl;\n        document.body.appendChild(highlightEl);\n      }\n\n      const shape = element.getBoundingClientRect();\n\n      highlightEl.style.pointerEvents = clickable ? 'none' : 'auto';\n      highlightEl.style.borderWidth = highlightWidth + 'px';\n      highlightEl.style.top = shape.top - highlightWidth + 'px';\n      highlightEl.style.left = shape.left - highlightWidth + 'px';\n      highlightEl.style.width = shape.width + 'px';\n      highlightEl.style.height = shape.height + 'px';\n    };\n  }\n\n  function initUnhighlightFunction(\n    element: JioTranslateElement,\n    elementMeta: ElementMeta\n  ) {\n    elementMeta.unhighlight = () => {\n      elementMeta.highlightEl?.remove();\n      elementMeta.highlightEl = undefined;\n    };\n  }\n\n  return Object.freeze({\n    initHighlighter(element: JioTranslateElement, elementMeta: ElementMeta) {\n      initHighlightFunction(element, elementMeta);\n      initUnhighlightFunction(element, elementMeta);\n    },\n  });\n}\n","import { ModifierKey, ObserverOptionsInternal } from '@jiotranslate/core-beta';\nimport { JioTranslateElement } from '../../types';\nimport { DEVTOOLS_ID } from '../../constants';\nimport { ElementStoreType } from './ElementStore';\n\nconst eCapture = {\n  capture: true,\n};\n\nconst ePassive = {\n  capture: true,\n  passive: true,\n};\n\ntype Coordinates = {\n  x: number;\n  y: number;\n};\n\ntype Props = {\n  highlightKeys: ModifierKey[];\n  elementStore: ElementStoreType;\n  onClick: (el: JioTranslateElement) => void;\n  options: ObserverOptionsInternal;\n  onPushTranslations: any;\n};\n\nconst MODIFIER_MAP = new Map<\n  ModifierKey,\n  'ctrlKey' | 'altKey' | 'metaKey' | 'shiftKey'\n>([\n  ['Control', 'ctrlKey'],\n  ['Alt', 'altKey'],\n  ['Meta', 'metaKey'],\n  ['Shift', 'shiftKey'],\n]);\n\nexport function MouseEventHandler({\n  highlightKeys,\n  elementStore,\n  onClick,\n  options,\n  onPushTranslations,\n}: Props) {\n  const keysDown = new Set<ModifierKey>();\n  let highlighted: JioTranslateElement | undefined;\n  let cursorPosition: Coordinates | undefined;\n  let subscribedEvents: [\n    type: string,\n    listener: EventListenerOrEventListenerObject,\n    options?: boolean | AddEventListenerOptions,\n  ][] = [];\n\n  const documentOrShadowRoot = (options.targetElement?.getRootNode() ||\n    document) as unknown as ShadowRoot;\n\n  const targetDocument = options.targetElement?.ownerDocument || document;\n\n  function highlight(el: JioTranslateElement | undefined) {\n    if (highlighted !== el) {\n      unhighlight();\n      const meta = elementStore.get(el);\n      if (meta) {\n        meta.preventClean = true;\n        meta.highlight?.();\n        highlighted = el;\n      }\n    }\n  }\n\n  function unhighlight() {\n    const meta = elementStore.get(highlighted);\n    if (meta) {\n      meta.preventClean = false;\n      meta.unhighlight?.();\n      highlighted = undefined;\n    }\n  }\n\n  function updateHighlight() {\n    const position = cursorPosition;\n\n    let newHighlighted: JioTranslateElement | undefined;\n    if (position && areKeysDown()) {\n      const elements =\n        documentOrShadowRoot.elementsFromPoint(position.x, position.y) || [];\n\n      newHighlighted = getClosestJioTranslateElement(elements);\n    }\n    highlight(newHighlighted);\n  }\n\n  function updateCursorPosition(position: Coordinates) {\n    cursorPosition = position;\n    updateHighlight();\n  }\n\n  function updateModifiers(e: MouseEvent | KeyboardEvent) {\n    for (const [modifier, modifierProperty] of MODIFIER_MAP.entries()) {\n      if (keysDown.has(modifier) && !e[modifierProperty]) {\n        keysDown.delete(modifier);\n      } else if (!keysDown.has(modifier) && e[modifierProperty]) {\n        keysDown.add(modifier);\n      }\n    }\n  }\n\n  function blockEvents(e: MouseEvent) {\n    updateModifiers(e);\n    if (areKeysDown() && !isInUiDialog(e.target as Element)) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n  }\n\n  function onMouseMove(e: MouseEvent) {\n    updateModifiers(e);\n    updateCursorPosition({ x: e.clientX, y: e.clientY });\n  }\n\n  function onKeyDown(e: KeyboardEvent) {\n    updateModifiers(e);\n    updateHighlight();\n    checkIfPushTranslationsKeysDown(e);\n  }\n  function checkIfPushTranslationsKeysDown(event: KeyboardEvent) {\n    if (event.altKey && event.shiftKey && event.key.toLowerCase() === 'j') {\n      onPushTranslations();\n      event.preventDefault(); // Prevent default browser behavior, if any.\n    }\n  }\n  function onKeyUp(e: KeyboardEvent) {\n    updateModifiers(e);\n    updateHighlight();\n  }\n\n  function onScroll() {\n    const meta = elementStore.get(highlighted);\n    meta?.highlight?.();\n  }\n\n  function handleClick(e: MouseEvent) {\n    blockEvents(e);\n    updateModifiers(e);\n    updateCursorPosition({ x: e.clientX, y: e.clientY });\n    if (areKeysDown() && highlighted) {\n      onClick(highlighted);\n      unhighlight();\n    }\n  }\n\n  function subscribe<K extends keyof DocumentEventMap>(\n    type: K,\n    listener: (ev: DocumentEventMap[K]) => any,\n    options?: boolean | AddEventListenerOptions\n  ) {\n    targetDocument.addEventListener(type, listener, options);\n    subscribedEvents.push([type, listener as any, options]);\n  }\n\n  function initEventListeners() {\n    subscribe('keydown', onKeyDown, eCapture);\n    subscribe('keyup', onKeyUp, eCapture);\n    subscribe('mousemove', onMouseMove, ePassive);\n\n    subscribe('scroll', onScroll, ePassive);\n    subscribe('click', handleClick, eCapture);\n\n    subscribe('mouseenter', blockEvents, eCapture);\n    subscribe('mouseover', blockEvents, eCapture);\n    subscribe('mouseout', blockEvents, eCapture);\n    subscribe('mouseleave', blockEvents, eCapture);\n    subscribe('mousedown', blockEvents, eCapture);\n    subscribe('mouseup', blockEvents, eCapture);\n  }\n\n  function removeEventListeners() {\n    for (const params of subscribedEvents) {\n      targetDocument.removeEventListener(...params);\n    }\n    subscribedEvents = [];\n  }\n\n  function isInUiDialog(element: Element) {\n    return Boolean(findAncestor(element, (el) => el.id === DEVTOOLS_ID));\n  }\n\n  function getClosestJioTranslateElement(\n    elements: Element[]\n  ): JioTranslateElement | undefined {\n    for (const element of elements) {\n      const result = findAncestor(element, (el) =>\n        elementStore.get(el as JioTranslateElement)\n      ) as JioTranslateElement | undefined | null;\n\n      if (result !== undefined) {\n        return result || undefined;\n      }\n    }\n  }\n\n  function findAncestor(\n    element: Element,\n    func: (el: Element) => any\n  ): Element | undefined | null {\n    if (element.id === DEVTOOLS_ID) {\n      return null;\n    }\n    if (func(element)) {\n      return element;\n    }\n    if (element?.parentElement) {\n      return findAncestor(element.parentElement, func);\n    }\n    return undefined;\n  }\n\n  function areKeysDown() {\n    for (const key of highlightKeys) {\n      if (!keysDown.has(key)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  return Object.freeze({\n    stop() {\n      removeEventListeners();\n    },\n\n    run() {\n      initEventListeners();\n    },\n  });\n}\n","import {\n  NsFallback,\n  getFallback,\n  ObserverOptionsInternal,\n} from '@jiotranslate/core-beta';\nimport { KeyAndParams, TranslationOnClick } from '@jiotranslate/core-beta';\nimport {\n  TOLGEE_RESTRICT_ATTRIBUTE,\n  TOLGEE_ATTRIBUTE_NAME,\n  TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE,\n} from '../../constants';\nimport { ElementMeta, NodeMeta, JioTranslateElement } from '../../types';\n\nimport { ElementHighlighter } from './ElementHighlighter';\nimport { initElementMeta } from './ElementMeta';\nimport { ElementStoreType } from './ElementStore';\nimport { compareDescriptors } from './helpers';\nimport { MouseEventHandler } from './MouseEventHandler';\n\nexport function ElementRegistry(\n  options: ObserverOptionsInternal,\n  elementStore: ElementStoreType,\n  onClick: TranslationOnClick,\n  getTranslation: any,\n  initialOptions: any\n) {\n  const elementHighlighter = ElementHighlighter({\n    highlightColor: options.highlightColor,\n    highlightWidth: options.highlightWidth,\n  });\n  const eventHandler = MouseEventHandler({\n    highlightKeys: options.highlightKeys,\n    elementStore,\n    onClick(el) {\n      const meta = elementStore.get(el)!;\n      onClick({\n        target: el as HTMLElement,\n        keysAndDefaults: getKeysAndDefaults(meta),\n      });\n    },\n    options,\n    onPushTranslations: () => {\n      const keysToPush = [];\n      elementStore.forEachElement((element, meta) => {\n        const keysAndDefaults = getKeysAndDefaults(meta);\n        keysAndDefaults.forEach((keysObj) => {\n          if (keysObj.key.length && !getTranslation(keysObj)) {\n            keysToPush.push({\n              name: keysObj.key,\n\n              translations: {\n                en: keysObj.key,\n              },\n            });\n          }\n        });\n      });\n      fetch(initialOptions?.apiUrl + '/v2/projects/keys/import', {\n        method: 'POST',\n        headers: {\n          'content-type': 'application/json',\n          Accept: '*/*',\n          'x-api-key': initialOptions?.apiKey,\n          'x-JioTranslate-sdk-type': 'JS',\n          'x-JioTranslate-sdk-version': 'prerelease',\n        },\n        body: JSON.stringify({ keys: keysToPush }),\n      })\n        .then((response) => response.json())\n        .then((data) => {\n          console.log('Translation key created successfully:', data);\n        })\n        .catch((error) => {\n          console.error('Error creating translation key:', error);\n        });\n    },\n  });\n\n  function isRestricted(element: Element) {\n    const restrictedElements = options.restrictedElements;\n    return (\n      restrictedElements.indexOf(element.tagName.toLowerCase()) !== -1 ||\n      element.closest(`[${TOLGEE_RESTRICT_ATTRIBUTE}]`) !== null\n    );\n  }\n\n  function cleanElementInactiveNodes(\n    meta: ElementMeta,\n    removedNodes: Set<Node>\n  ) {\n    for (const [key] of meta.nodes) {\n      if (removedNodes.has(key)) {\n        meta.nodes.delete(key);\n      }\n    }\n  }\n\n  function cleanElement(element: JioTranslateElement, meta: ElementMeta) {\n    if (meta.highlightEl) {\n      meta.unhighlight?.();\n    }\n    element.removeAttribute(TOLGEE_ATTRIBUTE_NAME);\n    elementStore.remove(element);\n  }\n\n  function getKeyOptions(meta: ElementMeta): KeyAndParams[] {\n    const nodes = Array.from(meta.nodes.values());\n    return nodes.reduce(\n      (acc, curr) => [\n        ...acc,\n        ...curr.keys.map((k) => ({\n          key: k.key,\n          defaultValue: k.defaultValue,\n          ns: k.ns,\n        })),\n      ],\n      [] as KeyAndParams[]\n    );\n  }\n\n  function getKeysAndDefaults(meta: ElementMeta): KeyAndParams[] {\n    return getKeyOptions(meta);\n  }\n\n  return Object.freeze({\n    isRestricted: isRestricted,\n    register(element: Element, node: Node, nodeMeta: NodeMeta) {\n      if (isRestricted(element)) {\n        return;\n      }\n      const JioTranslateElement = element as JioTranslateElement;\n      let elementMeta = elementStore.get(JioTranslateElement);\n      if (!elementMeta) {\n        elementMeta = initElementMeta(JioTranslateElement);\n        elementStore.set(JioTranslateElement, elementMeta);\n        JioTranslateElement.setAttribute(TOLGEE_ATTRIBUTE_NAME, 'true');\n      }\n      elementMeta.nodes.set(node, nodeMeta);\n      elementHighlighter.initHighlighter(JioTranslateElement, elementMeta);\n    },\n\n    forEachElement: elementStore.forEachElement,\n\n    cleanupLingeringKeyAttributes() {\n      elementStore.forEachElement((element, meta) => {\n        if (meta.preventClean) {\n          return;\n        }\n        for (const [node] of meta.nodes) {\n          if (node.nodeType === Node.ATTRIBUTE_NODE) {\n            const attr = node as Attr;\n            if (\n              attr.name === TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE &&\n              attr.ownerElement === null\n            ) {\n              meta.nodes.delete(attr);\n            }\n          }\n        }\n        if (meta.nodes.size === 0) {\n          cleanElement(element, meta);\n        }\n      });\n    },\n\n    cleanupRemovedNodes(removedNodes: Set<Node>) {\n      elementStore.forEachElement((element, meta) => {\n        if (meta.preventClean) {\n          return;\n        }\n        if (!removedNodes.has(element)) {\n          cleanElementInactiveNodes(meta, removedNodes);\n        }\n        if (removedNodes.has(element) || meta.nodes.size === 0) {\n          cleanElement(element, meta);\n        }\n      });\n    },\n\n    findAll(key?: string, ns?: NsFallback) {\n      const result: ElementMeta[] = [];\n      elementStore.forEachElement((_, meta) => {\n        for (const nodeMeta of meta.nodes.values()) {\n          const fits = nodeMeta.keys.find((val) =>\n            compareDescriptors(\n              { key, ns: getFallback(ns) },\n              { key: val.key, ns: getFallback(val.ns) }\n            )\n          );\n          if (fits) {\n            result.push(meta);\n            break;\n          }\n        }\n      });\n      return result;\n    },\n\n    run(mouseHighlight: boolean) {\n      if (mouseHighlight) {\n        eventHandler.run();\n      }\n    },\n\n    stop() {\n      eventHandler.stop();\n      elementStore.forEachElement((_, meta) => {\n        if (meta.highlightEl) {\n          meta.unhighlight?.();\n        }\n      });\n    },\n  });\n}\n\nexport type ElementRegistryInstance = ReturnType<typeof ElementRegistry>;\n","import { JioTranslateElement, ElementMeta } from '../../types';\n\nexport type RegistredElementsMap = Map<JioTranslateElement, ElementMeta>;\n\nexport function ElementStore() {\n  const registredElements: RegistredElementsMap = new Map();\n\n  return Object.freeze({\n    set(el: JioTranslateElement, meta: ElementMeta) {\n      registredElements.set(el, meta);\n    },\n\n    get(el: JioTranslateElement | undefined) {\n      return el && registredElements.get(el);\n    },\n\n    remove(el: JioTranslateElement) {\n      return registredElements.delete(el);\n    },\n\n    forEachElement(\n      callback: (el: JioTranslateElement, meta: ElementMeta) => void\n    ) {\n      registredElements.forEach((value, key) => callback(key, value));\n    },\n  });\n}\n\nexport type ElementStoreType = ReturnType<typeof ElementStore>;\n","import {\n  ObserverOptionsInternal,\n  WrapperMiddleware,\n} from '@jiotranslate/core-beta';\n\nexport function NodeHandler(\n  options: ObserverOptionsInternal,\n  wrapper: WrapperMiddleware,\n  dynamicScanningEnabled: boolean\n) {\n  const self = Object.freeze({\n    handleAttributes(node: Node, includeChild = true) {\n      const result: Attr[] = [];\n\n      const tagAttributes = Object.fromEntries(\n        Object.entries(options.tagAttributes).map(([tag, attributes]) => [\n          tag.toUpperCase(),\n          attributes,\n        ])\n      ) as Record<string, string[]>;\n\n      if (node.nodeType === Node.ELEMENT_NODE) {\n        const element = node as Element;\n        let attributes = tagAttributes[element.tagName.toUpperCase()] ?? [];\n        if ('*' in tagAttributes) {\n          attributes = attributes.concat(tagAttributes['*']);\n        }\n        result.push(\n          ...(attributes\n            .filter((attrName) => element.hasAttribute(attrName))\n            .map((attrName) => element.getAttributeNode(attrName))\n            .filter((attrNode) =>\n              wrapper.testAttribute(attrNode as Attr)\n            ) as Attr[])\n        );\n      }\n\n      if (includeChild) {\n        const walker = document.createTreeWalker(\n          node,\n          NodeFilter.SHOW_ELEMENT,\n          (f) =>\n            tagAttributes[(f as Element).tagName.toUpperCase()]?.some((t) =>\n              (f as Element).hasAttribute(t)\n            ) || tagAttributes['*']?.some((t) => (f as Element).hasAttribute(t))\n              ? NodeFilter.FILTER_ACCEPT\n              : NodeFilter.FILTER_SKIP\n        );\n        while (walker.nextNode()) {\n          const element = walker.currentNode as Element;\n          let attributes = tagAttributes[element.tagName.toUpperCase()] ?? [];\n          if ('*' in tagAttributes) {\n            attributes = attributes.concat(tagAttributes['*']);\n          }\n          result.push(\n            ...(attributes\n              .filter((attrName) => element.hasAttribute(attrName))\n              .map((attrName) => element.getAttributeNode(attrName))\n              .filter((attrNode) =>\n                wrapper.testAttribute(attrNode as Attr)\n              ) as Attr[])\n          );\n        }\n      }\n\n      return result;\n    },\n\n    handleChildList(node: Node[]) {\n      const result: (Attr | Text)[] = [];\n      result.push(...node.flatMap((n) => self.handleAttributes(n, true)));\n      result.push(...node.flatMap((n) => self.handleText(n)));\n      // wrappedHandler(node);\n      return result;\n    },\n\n    handleText(node: Node) {\n      if (node.nodeType === Node.TEXT_NODE) {\n        if (dynamicScanningEnabled) {\n          return wrapper.translationPresentForText(node as Text)\n            ? [node as Text]\n            : [];\n        } else {\n          return wrapper.testTextNode(node as Text) ? [node as Text] : [];\n        }\n      }\n\n      const nodes = [];\n\n      const walker = document.createTreeWalker(\n        node,\n        NodeFilter.SHOW_TEXT,\n        (f) =>\n          wrapper.testTextNode(f as Text)\n            ? NodeFilter.FILTER_ACCEPT\n            : NodeFilter.FILTER_SKIP\n      );\n      while (walker.nextNode()) {\n        nodes.push(walker.currentNode);\n      }\n\n      return nodes as Text[];\n    },\n  });\n\n  return self;\n}\n\nexport type NodeHandlerInstance = ReturnType<typeof NodeHandler>;\n","import {\n  NsFallback,\n  ObserverRunProps,\n  Unwrapped,\n  WrapperMiddleware,\n  WrapperWrapProps,\n  KeyPosition,\n  getFallback,\n} from '@jiotranslate/core-beta';\n\nimport { TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE } from '../../constants';\nimport { isSSR } from '../../tools/isSSR';\nimport { ElementMeta, JioTranslateElement } from '../../types';\nimport { DomHelper } from './DomHelper';\nimport { initNodeMeta } from './ElementMeta';\nimport { ElementRegistry, ElementRegistryInstance } from './ElementRegistry';\nimport { ElementStore } from './ElementStore';\nimport { compareDescriptors, getNodeText, setNodeText } from './helpers';\nimport { NodeHandler } from './NodeHandler';\n\ntype RunningInstance = {\n  stop: () => void;\n  elementRegistry?: ElementRegistryInstance;\n  wrapper: WrapperMiddleware;\n};\n\ntype RunProps = ObserverRunProps & {\n  wrapper: WrapperMiddleware;\n};\n\nexport function GeneralObserver(initialOptions) {\n  let isObserving = false;\n  let instance: RunningInstance | undefined;\n\n  const elementStore = ElementStore();\n\n  function createRunningInstance({\n    mouseHighlight,\n    options,\n    wrapper,\n    onClick,\n    getTranslation,\n  }: RunProps): RunningInstance | undefined {\n    if (isSSR()) {\n      return {\n        stop() {\n          isObserving = false;\n        },\n        wrapper,\n      };\n    }\n    const domHelper = DomHelper(options);\n    const nodeHandler = NodeHandler(\n      options,\n      wrapper,\n      initialOptions?.dynamicScanningEnable\n    );\n    const elementRegistry = ElementRegistry(\n      options,\n      elementStore,\n      onClick,\n      getTranslation,\n      initialOptions\n    );\n\n    function handleNodes(nodes: Array<Text | Attr>) {\n      for (const textNode of nodes) {\n        const parent = textNode.parentElement;\n\n        if (parent && elementRegistry.isRestricted(parent)) {\n          continue;\n        }\n\n        const oldTextContent = getNodeText(textNode);\n\n        const result = oldTextContent ? wrapper.unwrap(oldTextContent) : null;\n        if (result) {\n          const { text, keys } = result;\n          if (textNode.nodeValue != text) {\n            setNodeText(textNode, text);\n          }\n          const nodeMeta = initNodeMeta(oldTextContent!, keys);\n          const parentElement = domHelper.getSuitableParent(textNode);\n          elementRegistry.register(parentElement, textNode, nodeMeta);\n        }\n      }\n    }\n\n    function handleKeyAttributeAttr(attr: Attr) {\n      const parentElement = domHelper.getSuitableParent(attr);\n      elementRegistry.register(parentElement, attr, {\n        oldTextContent: '',\n        keys: [{ key: getNodeText(attr)! }],\n        keyAttributeOnly: true,\n      });\n    }\n\n    function handleKeyAttribute(node: Node, includeChild: boolean) {\n      if (node.nodeType === Node.ATTRIBUTE_NODE) {\n        const attr = node as Attr;\n        if (attr.name === TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE) {\n          handleKeyAttributeAttr(attr);\n          return;\n        }\n      }\n\n      if (node.nodeType === Node.ELEMENT_NODE) {\n        const element = node as Element;\n        const attr = element.getAttributeNode(\n          TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE\n        ) as Attr;\n        if (attr) {\n          handleKeyAttributeAttr(attr);\n        }\n      }\n\n      if (!includeChild) {\n        return;\n      }\n\n      const walker = document.createTreeWalker(\n        node,\n        NodeFilter.SHOW_ELEMENT,\n        (e) =>\n          (e as Element).hasAttribute(TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE)\n            ? NodeFilter.FILTER_ACCEPT\n            : NodeFilter.FILTER_SKIP\n      );\n      while (walker.nextNode()) {\n        const attr = (walker.currentNode as Element).getAttributeNode(\n          TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE\n        ) as Node;\n        handleKeyAttributeAttr(attr as Attr);\n      }\n    }\n\n    const observer = new MutationObserver((mutationsList: MutationRecord[]) => {\n      if (!isObserving) {\n        return;\n      }\n\n      const removedNodes = mutationsList\n        .filter((m) => m.type === 'childList')\n        .flatMap((m) => Array.from(m.removedNodes));\n      const removedNodesSet = new Set(removedNodes);\n\n      for (const node of removedNodes) {\n        if (node.nodeType === Node.ELEMENT_NODE) {\n          for (let i = 0; i < (node as Element).attributes.length; i++) {\n            removedNodesSet.add((node as Element).attributes[i]);\n          }\n        }\n\n        const treeWalker = document.createTreeWalker(\n          node,\n          NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT\n        );\n        while (treeWalker.nextNode()) {\n          const currentNode = treeWalker.currentNode;\n          if (currentNode.nodeType === Node.ELEMENT_NODE) {\n            const element = currentNode as Element;\n            for (let i = 0; i < element.attributes.length; i++) {\n              removedNodesSet.add(element.attributes[i]);\n            }\n          }\n          removedNodesSet.add(currentNode);\n        }\n      }\n\n      if (removedNodesSet.size > 0) {\n        elementRegistry.cleanupRemovedNodes(removedNodesSet);\n      }\n\n      if (\n        mutationsList.some(\n          (m) =>\n            m.type === 'attributes' &&\n            m.attributeName === TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE\n        )\n      ) {\n        elementRegistry.cleanupLingeringKeyAttributes();\n      }\n\n      const result: Set<Attr | Text> = new Set();\n      for (const mutation of mutationsList) {\n        switch (mutation.type) {\n          case 'characterData':\n            nodeHandler\n              .handleText(mutation.target)\n              .forEach((t) => result.add(t));\n            break;\n\n          case 'childList':\n            handleKeyAttribute(mutation.target, true);\n            if (mutation.addedNodes.length > 0) {\n              nodeHandler\n                .handleChildList(Array.from(mutation.addedNodes))\n                .forEach((t) => result.add(t));\n            }\n            if (mutation.removedNodes.length > 0) {\n              nodeHandler\n                .handleChildList(Array.from(mutation.removedNodes))\n                .forEach((t) => result.delete(t));\n            }\n            break;\n\n          case 'attributes':\n            if (mutation.attributeName === TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE) {\n              handleKeyAttribute(mutation.target, false);\n            }\n            nodeHandler\n              .handleAttributes(mutation.target, false)\n              .forEach((t) => result.add(t));\n            break;\n        }\n      }\n      handleNodes([...result]);\n    });\n\n    const targetElement = options.targetElement || document;\n    isObserving = true;\n    elementRegistry.run(mouseHighlight);\n\n    // initially go through all elements\n    handleKeyAttribute(targetElement, true);\n    handleNodes(nodeHandler.handleChildList([targetElement]));\n\n    const monitorAttributeList = new Set<string>();\n    monitorAttributeList.add(TOLGEE_WRAPPED_ONLY_DATA_ATTRIBUTE);\n    Object.values(options.tagAttributes).forEach((attrs) =>\n      attrs.forEach((attr) => monitorAttributeList.add(attr.toLowerCase()))\n    );\n\n    // then observe for changes\n    observer.observe(targetElement, {\n      attributes: true,\n      attributeFilter: [...monitorAttributeList],\n      childList: true,\n      subtree: true,\n      characterData: true,\n    });\n\n    return {\n      stop() {\n        isObserving = false;\n        elementRegistry.stop();\n        observer.disconnect();\n      },\n      elementRegistry,\n      wrapper,\n    };\n  }\n\n  const self = Object.freeze({\n    run(props: RunProps) {\n      props.options.highlightColor = '#8F005D';\n      props.options.highlightKeys = ['Alt', 'Shift'];\n      instance = createRunningInstance(props);\n    },\n\n    stop() {\n      instance?.stop();\n    },\n\n    forEachElement(\n      callback: (el: JioTranslateElement, meta: ElementMeta) => void\n    ) {\n      instance?.elementRegistry?.forEachElement?.(callback);\n    },\n\n    highlight(key?: string, ns?: NsFallback) {\n      const elements = instance?.elementRegistry?.findAll(key, ns) || [];\n      elements.forEach((el) => el.highlight?.());\n      return {\n        unhighlight() {\n          elements.forEach((el) => el.unhighlight?.());\n        },\n      };\n    },\n\n    findPositions(key?: string, ns?: NsFallback) {\n      const elements = instance?.elementRegistry?.findAll(key, ns) || [];\n      const result: KeyPosition[] = [];\n      // sort elements by their position in the dom\n      elements.sort((a, b) => {\n        if (\n          a.element.compareDocumentPosition(b.element) &\n          Node.DOCUMENT_POSITION_FOLLOWING\n        ) {\n          return -1;\n        } else {\n          return 1;\n        }\n      });\n      elements.forEach((meta) => {\n        const shape = meta.element.getBoundingClientRect();\n        meta.nodes.forEach((node) => {\n          node.keys.forEach((val) => {\n            if (\n              compareDescriptors(\n                { key, ns: getFallback(ns) },\n                { key: val.key, ns: getFallback(val.ns) }\n              )\n            )\n              result.push({\n                position: {\n                  x: shape.x,\n                  y: shape.y,\n                  width: shape.width,\n                  height: shape.height,\n                },\n                keyName: val.key,\n                keyNamespace: val.ns || '',\n              });\n          });\n        });\n      });\n      return result;\n    },\n\n    unwrap(text: string): Unwrapped {\n      if (instance) {\n        return instance.wrapper.unwrap(text);\n      }\n      return {\n        text,\n        keys: [],\n      };\n    },\n\n    wrap(props: WrapperWrapProps): string {\n      if (instance) {\n        return instance.wrapper.wrap(props);\n      }\n      return props.translation || '';\n    },\n  });\n\n  return self;\n}\n\nexport type GeneralObserverType = ReturnType<typeof GeneralObserver>;\n","(function(scope) {'use strict';\nfunction B(r,e){var f;return r instanceof Buffer?f=r:f=Buffer.from(r.buffer,r.byteOffset,r.byteLength),f.toString(e)}var w=function(r){return Buffer.from(r)};function h(r){for(var e=0,f=Math.min(256*256,r.length+1),n=new Uint16Array(f),i=[],o=0;;){var t=e<r.length;if(!t||o>=f-1){var s=n.subarray(0,o),m=s;if(i.push(String.fromCharCode.apply(null,m)),!t)return i.join(\"\");r=r.subarray(e),e=0,o=0}var a=r[e++];if((a&128)===0)n[o++]=a;else if((a&224)===192){var d=r[e++]&63;n[o++]=(a&31)<<6|d}else if((a&240)===224){var d=r[e++]&63,l=r[e++]&63;n[o++]=(a&31)<<12|d<<6|l}else if((a&248)===240){var d=r[e++]&63,l=r[e++]&63,R=r[e++]&63,c=(a&7)<<18|d<<12|l<<6|R;c>65535&&(c-=65536,n[o++]=c>>>10&1023|55296,c=56320|c&1023),n[o++]=c}}}function F(r){for(var e=0,f=r.length,n=0,i=Math.max(32,f+(f>>>1)+7),o=new Uint8Array(i>>>3<<3);e<f;){var t=r.charCodeAt(e++);if(t>=55296&&t<=56319){if(e<f){var s=r.charCodeAt(e);(s&64512)===56320&&(++e,t=((t&1023)<<10)+(s&1023)+65536)}if(t>=55296&&t<=56319)continue}if(n+4>o.length){i+=8,i*=1+e/r.length*2,i=i>>>3<<3;var m=new Uint8Array(i);m.set(o),o=m}if((t&4294967168)===0){o[n++]=t;continue}else if((t&4294965248)===0)o[n++]=t>>>6&31|192;else if((t&4294901760)===0)o[n++]=t>>>12&15|224,o[n++]=t>>>6&63|128;else if((t&4292870144)===0)o[n++]=t>>>18&7|240,o[n++]=t>>>12&63|128,o[n++]=t>>>6&63|128;else continue;o[n++]=t&63|128}return o.slice?o.slice(0,n):o.subarray(0,n)}var u=\"Failed to \",p=function(r,e,f){if(r)throw new Error(\"\".concat(u).concat(e,\": the '\").concat(f,\"' option is unsupported.\"))};var x=typeof Buffer==\"function\"&&Buffer.from;var A=x?w:F;function v(){this.encoding=\"utf-8\"}v.prototype.encode=function(r,e){return p(e&&e.stream,\"encode\",\"stream\"),A(r)};function U(r){var e;try{var f=new Blob([r],{type:\"text/plain;charset=UTF-8\"});e=URL.createObjectURL(f);var n=new XMLHttpRequest;return n.open(\"GET\",e,!1),n.send(),n.responseText}finally{e&&URL.revokeObjectURL(e)}}var O=!x&&typeof Blob==\"function\"&&typeof URL==\"function\"&&typeof URL.createObjectURL==\"function\",S=[\"utf-8\",\"utf8\",\"unicode-1-1-utf-8\"],T=h;x?T=B:O&&(T=function(r){try{return U(r)}catch(e){return h(r)}});var y=\"construct 'TextDecoder'\",E=\"\".concat(u,\" \").concat(y,\": the \");function g(r,e){p(e&&e.fatal,y,\"fatal\"),r=r||\"utf-8\";var f;if(x?f=Buffer.isEncoding(r):f=S.indexOf(r.toLowerCase())!==-1,!f)throw new RangeError(\"\".concat(E,\" encoding label provided ('\").concat(r,\"') is invalid.\"));this.encoding=r,this.fatal=!1,this.ignoreBOM=!1}g.prototype.decode=function(r,e){p(e&&e.stream,\"decode\",\"stream\");var f;return r instanceof Uint8Array?f=r:r.buffer instanceof ArrayBuffer?f=new Uint8Array(r.buffer):f=new Uint8Array(r),T(f,this.encoding)};scope.TextEncoder=scope.TextEncoder||v;scope.TextDecoder=scope.TextDecoder||g;\n}(typeof window !== 'undefined' ? window : (typeof global !== 'undefined' ? global : this)));\n","// @ts-ignore\nimport * as FastTextEncoding from 'fast-text-encoding';\n// make sure it's not treeshaken\n// eslint-disable-next-line no-console\nconsole.assert?.(FastTextEncoding);\n\nexport const INVISIBLE_CHARACTERS = ['\\u200C', '\\u200D'];\n\nexport const INVISIBLE_REGEX = RegExp(\n  `([${INVISIBLE_CHARACTERS.join('')}]{9})+`,\n  'gu'\n);\n\nfunction toBytes(text: string) {\n  return Array.from(new TextEncoder().encode(text));\n}\n\nfunction fromBytes(bytes: Iterable<number>) {\n  return new TextDecoder().decode(new Uint8Array(bytes));\n}\n\nfunction padToWholeBytes(binary: string) {\n  const needsToAdd = 8 - binary.length;\n  return '0'.repeat(needsToAdd) + binary;\n}\n\nexport function encodeMessage(text: string) {\n  const bytes = toBytes(text).map(Number);\n  const binary = bytes\n    .map((byte) => padToWholeBytes(byte.toString(2)) + '0')\n    .join('');\n\n  const result = Array.from(binary)\n    .map((b) => INVISIBLE_CHARACTERS[Number(b)])\n    .join('');\n\n  return result;\n}\n\nfunction decodeMessage(message: string) {\n  const binary = Array.from(message)\n    .map((character) => {\n      return INVISIBLE_CHARACTERS.indexOf(character);\n    })\n    .map(String)\n    .join('');\n\n  const textBytes = binary.match(/(.{9})/g);\n  const codes = Uint8Array.from(\n    textBytes?.map((byte) => parseInt(byte.slice(0, 8), 2)) || []\n  );\n  return fromBytes(codes);\n}\n\nexport function decodeFromText(text: string) {\n  const invisibleMessages = text\n    .match(INVISIBLE_REGEX)\n    ?.filter((m) => m.length > 8);\n  return invisibleMessages?.map(decodeMessage) || [];\n}\n\nexport function removeSecrets(text: string) {\n  return text.replace(INVISIBLE_REGEX, '');\n}\n\nexport function stringToCodePoints(text: string) {\n  const result: number[] = [];\n  for (const codePoint of text) {\n    result.push(codePoint.codePointAt(0)!);\n  }\n  return result;\n}\n","export function ValueMemory() {\n  const values: string[] = [];\n\n  return Object.freeze({\n    valueToNumber(key: string) {\n      let index = values.indexOf(key);\n      if (index === -1) {\n        index = values.length;\n        values.push(key);\n      }\n      return index;\n    },\n\n    numberToValue(num: number) {\n      return values[num];\n    },\n  });\n}\n\nexport type ValueMemoryInstance = ReturnType<typeof ValueMemory>;\n","import type {\n  KeyAndParams,\n  Unwrapped,\n  WrapperMiddleware,\n  TranslatePropsInternal,\n} from '@jiotranslate/core-beta';\n\nimport {\n  decodeFromText,\n  encodeMessage,\n  INVISIBLE_CHARACTERS,\n  removeSecrets,\n  stringToCodePoints,\n} from './secret';\nimport { ValueMemory } from './ValueMemory';\n\ntype EncodeValue = {\n  // key\n  k: string;\n  // namespaces\n  n: string | undefined;\n  // default value\n  d: string | undefined;\n};\n\ntype Props = {\n  fullKeyEncode: boolean;\n};\n\nexport function InvisibleWrapper({ fullKeyEncode }: Props): WrapperMiddleware {\n  const keyMemory = ValueMemory();\n\n  function encodeValue(data: TranslatePropsInternal) {\n    const value: EncodeValue = {\n      k: data.key,\n      n: data.ns || undefined,\n      d: data.defaultValue,\n    };\n    return JSON.stringify(value);\n  }\n\n  function decodeValue(value: string): EncodeValue | undefined {\n    try {\n      return JSON.parse(value || '{}') as EncodeValue;\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error(e);\n      return undefined;\n    }\n  }\n\n  function getMessage(message: string) {\n    if (message.length <= 4) {\n      const [valueCode] = stringToCodePoints(message);\n      return keyMemory.numberToValue(valueCode);\n    } else {\n      return message;\n    }\n  }\n\n  return Object.freeze({\n    unwrap(text: string): Unwrapped {\n      const keysAndParams = [] as KeyAndParams[];\n      const messages = decodeFromText(text);\n\n      messages.forEach((encodedValue: string) => {\n        const message = getMessage(encodedValue);\n        const decodedVal = decodeValue(message);\n        if (decodedVal) {\n          const { k: key, d: defaultValue, n: ns } = decodedVal;\n          keysAndParams.push({\n            key,\n            defaultValue,\n            ns,\n          });\n        }\n      });\n\n      const result = removeSecrets(text);\n\n      return { text: result, keys: keysAndParams };\n    },\n\n    wrap({ key, defaultValue, translation, ns }) {\n      let invisibleMark: string;\n      if (fullKeyEncode) {\n        // don't include default value, as that might be very long when encoded\n        const encodedValue = encodeValue({ key, ns });\n        invisibleMark = encodeMessage(encodedValue);\n      } else {\n        const encodedValue = encodeValue({ key, ns, defaultValue });\n        const code = keyMemory.valueToNumber(encodedValue);\n        invisibleMark = encodeMessage(String.fromCodePoint(code));\n      }\n\n      const value = translation || '';\n\n      return typeof value === 'string' ? value + invisibleMark : value;\n    },\n\n    testTextNode(textNode: Text) {\n      return (\n        (textNode.textContent?.includes(\n          `${INVISIBLE_CHARACTERS[0]}${INVISIBLE_CHARACTERS[0]}`\n        ) ||\n          textNode.textContent?.includes(\n            `${INVISIBLE_CHARACTERS[1]}${INVISIBLE_CHARACTERS[0]}`\n          )) ??\n        false\n      );\n    },\n\n    testAttribute(attribute: Attr) {\n      return (\n        attribute.value.includes(\n          `${INVISIBLE_CHARACTERS[0]}${INVISIBLE_CHARACTERS[0]}`\n        ) ||\n        attribute.value.includes(\n          `${INVISIBLE_CHARACTERS[1]}${INVISIBLE_CHARACTERS[0]}`\n        )\n      );\n    },\n  });\n}\n","import type {\n  ObserverMiddleware,\n  ObserverRunProps,\n} from '@jiotranslate/core-beta';\nimport { GeneralObserver } from './observers/general/GeneralObserver';\nimport { InvisibleWrapper } from './observers/invisible/InvisibleWrapper';\n\nexport const InvisibleObserver = (): ObserverMiddleware => () => {\n  const observer = GeneralObserver({});\n\n  const self = Object.freeze({\n    ...observer,\n    run(props: ObserverRunProps) {\n      const wrapper = InvisibleWrapper({\n        fullKeyEncode: props.options.fullKeyEncode,\n      });\n      observer.run({ ...props, wrapper });\n    },\n    retranslate() {},\n    outputNotFormattable: false,\n  });\n  return self;\n};\n","export function splitOnNonEscapedDelimiter(\n  string: string,\n  delimiter: string\n): string[] {\n  const result = [];\n  let actual = '';\n  let escaped = false;\n  for (let i = 0; i < string.length; i++) {\n    const char = string[i];\n    if (char === '\\\\' && !escaped) {\n      escaped = true;\n      continue;\n    }\n    if (escaped) {\n      escaped = false;\n      actual += char;\n      continue;\n    }\n    if (char === delimiter) {\n      result.push(actual);\n      actual = '';\n      continue;\n    }\n    actual += char;\n  }\n  result.push(actual);\n  return result;\n}\n\nexport function isCharEscaped(position: number, fullString: string) {\n  let escapeCharsCount = 0;\n  while (position > -1 && fullString[position - 1] === '\\\\') {\n    escapeCharsCount++;\n    position--;\n  }\n  return escapeCharsCount % 2 == 1;\n}\n\nexport function removeEscapes(string: string) {\n  let result = '';\n  let escaped = false;\n  for (let i = 0; i < string.length; i++) {\n    const char = string[i];\n    if (char === '\\\\' && !escaped) {\n      escaped = true;\n      continue;\n    }\n    if (escaped) {\n      escaped = false;\n      result += char;\n      continue;\n    }\n    result += char;\n  }\n  return result;\n}\n","import type {\n  KeyAndParams,\n  TranslatePropsInternal,\n  WrapperMiddleware,\n} from '@jiotranslate/core-beta';\nimport { isCharEscaped } from './helpers';\n\ntype Props = {\n  inputPrefix: string;\n  inputSuffix: string;\n  translate: (params: TranslatePropsInternal) => string;\n  getTranslation: any;\n  dynamicScanningEnabled: boolean;\n};\n\nexport function TextWrapper({\n  inputPrefix,\n  inputSuffix,\n  translate,\n  getTranslation,\n  dynamicScanningEnabled,\n}: Props): WrapperMiddleware {\n  function getRawUnWrapRegex(): string {\n    const escapedPrefix = escapeForRegExp(inputPrefix);\n    const escapedSuffix = escapeForRegExp(inputSuffix);\n    return `(\\\\\\\\?)(${escapedPrefix}(.*?)${escapedSuffix})`;\n  }\n\n  function parseUnwrapped(unwrappedString: string): KeyAndParams {\n    let escaped = false;\n    let actual = '';\n    let paramName = '';\n    let readingState:\n      | 'KEY'\n      | 'DEFAULT_VALUE'\n      | 'PARAM_NAME'\n      | 'PARAM_VALUE'\n      | 'NAMESPACE' = 'KEY';\n\n    const result = {\n      key: '',\n      ns: undefined as string | undefined,\n      params: {},\n      defaultValue: undefined as string | undefined,\n    } as KeyAndParams;\n\n    const addNamespace = (ns: string) => {\n      result.ns = ns;\n    };\n\n    for (const char of unwrappedString) {\n      if (char === '\\\\' && !escaped) {\n        escaped = true;\n        continue;\n      }\n      if (escaped) {\n        escaped = false;\n        actual += char;\n        continue;\n      }\n      if (readingState === 'KEY' && char === ',') {\n        readingState = 'DEFAULT_VALUE';\n        result.key = actual;\n        actual = '';\n        continue;\n      }\n      if (readingState === 'KEY' && char === '|') {\n        readingState = 'NAMESPACE';\n        result.key = actual;\n        actual = '';\n        continue;\n      }\n      if (readingState === 'NAMESPACE' && char === ',') {\n        readingState = 'DEFAULT_VALUE';\n        addNamespace(actual);\n        actual = '';\n        continue;\n      }\n      if (readingState === 'KEY' && char === ':') {\n        readingState = 'PARAM_NAME';\n        result.key = actual;\n        actual = '';\n        continue;\n      }\n\n      if (readingState === 'DEFAULT_VALUE' && char === ':') {\n        readingState = 'PARAM_NAME';\n        result.defaultValue = actual;\n        actual = '';\n        continue;\n      }\n\n      if (readingState === 'PARAM_NAME' && char === ':') {\n        readingState = 'PARAM_VALUE';\n        paramName = actual;\n        actual = '';\n        continue;\n      }\n\n      if (readingState === 'PARAM_VALUE' && char === ',') {\n        readingState = 'PARAM_NAME';\n        result.params![paramName] = actual;\n        actual = '';\n        continue;\n      }\n      actual += char;\n    }\n\n    if (readingState === 'KEY') {\n      result.key = actual;\n    }\n\n    if (readingState === 'DEFAULT_VALUE') {\n      result.defaultValue = actual;\n    }\n\n    if (readingState === 'PARAM_VALUE') {\n      result.params![paramName] = actual;\n    }\n\n    if (readingState === 'NAMESPACE') {\n      addNamespace(actual);\n    }\n\n    return result;\n  }\n\n  function getTranslatedWithMetadata(text: string) {\n    const { key, params, defaultValue, ns } = parseUnwrapped(text);\n    const translated = translate({\n      key,\n      params,\n      defaultValue,\n      ns,\n      noWrap: true,\n    });\n    return { translated, key, params, defaultValue, ns };\n  }\n\n  function escapeForRegExp(string: string) {\n    return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n  }\n\n  function escapeParam(param: any) {\n    if (typeof param === 'string') {\n      return param.replace(/[,:|\\\\]/gs, '\\\\$&');\n    }\n    if (typeof param === 'number' || typeof param === 'bigint') {\n      return param.toString();\n    }\n    // eslint-disable-next-line no-console\n    console.warn(\n      `Parameters of type \"${typeof param}\" are not supported in \"text\" wrapper mode.`\n    );\n    return param;\n  }\n\n  return Object.freeze({\n    wrap({ key, params, defaultValue, ns }): string {\n      let paramString = Object.entries(params || {})\n        .map(\n          ([name, value]) =>\n            `${escapeParam(name)}:${escapeParam(value as string)}`\n        )\n        .join(',');\n      paramString = paramString.length ? `:${paramString}` : '';\n\n      const defaultString =\n        defaultValue !== undefined ? `,${escapeParam(defaultValue)}` : '';\n\n      const nsArray = typeof ns === 'string' ? [ns] : ns;\n\n      const namespaces = nsArray?.length\n        ? `|${nsArray.map((ns) => escapeParam(ns)).join('|')}`\n        : '';\n\n      return `${inputPrefix}${escapeParam(\n        key\n      )}${namespaces}${defaultString}${paramString}${inputSuffix}`;\n    },\n\n    unwrap(text: string) {\n      const matchRegexp = new RegExp(getRawUnWrapRegex(), 'gs');\n\n      const keysAndParams: KeyAndParams[] = [];\n\n      let matched = false;\n\n      let match;\n      let start = 0;\n      let result = '';\n\n      if (dynamicScanningEnabled) {\n        const translated = getTranslatedWithMetadata(text);\n        keysAndParams.push({\n          key: translated.key,\n          params: translated.params,\n          defaultValue: translated.defaultValue,\n          ns: translated.ns,\n        });\n        matched = true;\n        result = translated.translated;\n      } else {\n        while ((match = matchRegexp.exec(text)) !== null) {\n          let pre = match[1] as string;\n          const [fullMatch, _, wrapped, unwrapped] = match as unknown as [\n            string,\n            string,\n            string,\n            string,\n          ];\n          const { index, input } = match;\n          result += input.substr(start, index - start);\n          start = index + fullMatch.length;\n          if (pre === '\\\\') {\n            if (!isCharEscaped(index, text)) {\n              result += wrapped;\n              continue;\n            }\n            pre = '';\n          }\n          const translated = getTranslatedWithMetadata(unwrapped);\n          keysAndParams.push({\n            key: translated.key,\n            params: translated.params,\n            defaultValue: translated.defaultValue,\n            ns: translated.ns,\n          });\n          matched = true;\n          result += pre + translated.translated;\n        }\n\n        result += text.substring(start);\n      }\n      if (matched) {\n        return { text: result, keys: keysAndParams };\n      }\n\n      return { text: text, keys: [] };\n    },\n\n    testTextNode(textNode: Text) {\n      if (dynamicScanningEnabled) {\n        return /\\S/.test(textNode.textContent) ?? false;\n      }\n      return (\n        (textNode.textContent?.includes(inputPrefix) &&\n          textNode.textContent?.includes(inputSuffix)) ??\n        false\n      );\n    },\n    translationPresentForText(textNode: Text) {\n      if (!getTranslation({ key: textNode.textContent })) {\n        return false;\n      }\n      return /\\S/.test(textNode.textContent) ?? false;\n    },\n\n    testAttribute(attribute: Attr) {\n      return (\n        attribute.value.includes(inputPrefix) &&\n        attribute.value.includes(inputSuffix)\n      );\n    },\n  });\n}\n","import type {\n  ObserverMiddleware,\n  ObserverRunProps,\n} from '@jiotranslate/core-beta';\nimport { GeneralObserver } from './observers/general/GeneralObserver';\nimport { setNodeText } from './observers/general/helpers';\nimport { TextWrapper } from './observers/text/TextWrapper';\n\nexport const TextObserver =\n  (initialOptions): ObserverMiddleware =>\n  () => {\n    const observer = GeneralObserver(initialOptions);\n\n    const self = Object.freeze({\n      ...observer,\n\n      run(props: ObserverRunProps) {\n        const wrapper = TextWrapper({\n          inputPrefix: props.options.inputPrefix,\n          inputSuffix: props.options.inputSuffix,\n          translate: props.translate,\n          getTranslation: props.getTranslation,\n          dynamicScanningEnabled: initialOptions?.dynamicScanningEnable,\n        });\n        observer.run({ ...props, wrapper });\n      },\n\n      retranslate() {\n        observer.forEachElement((_, elMeta) => {\n          for (const [node, nodeMeta] of elMeta.nodes.entries()) {\n            if (nodeMeta.keyAttributeOnly) {\n              return;\n            }\n            const result = observer.unwrap(nodeMeta.oldTextContent);\n            if (result) {\n              setNodeText(node, result.text);\n            }\n          }\n        });\n      },\n\n      outputNotFormattable: true,\n    });\n    return self;\n  };\n","import { InvisibleObserver } from './InvisibleObserver';\nimport { JioTranslatePlugin } from '@jiotranslate/core-beta';\nimport { TextObserver } from './TextObserver';\n\nexport const ObserverPlugin =\n  (): JioTranslatePlugin => (jioTranslate, tools) => {\n    if (jioTranslate.getInitialOptions().observerType === 'text') {\n      tools.setObserver(TextObserver(jioTranslate.getInitialOptions()));\n    } else {\n      tools.setObserver(InvisibleObserver());\n    }\n    return jioTranslate;\n  };\n","const alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\n\nfunction readChar(char: string) {\n  const idx = alphabet.indexOf(char);\n\n  if (idx === -1) {\n    throw new Error('Invalid character found: ' + char);\n  }\n\n  return idx;\n}\n\nfunction arrayBufferToString(buffer: any) {\n  const bufView = new Uint8Array(buffer);\n  const length = bufView.length;\n  let result = '';\n  let addition = Math.pow(2, 16) - 1;\n\n  for (let i = 0; i < length; i += addition) {\n    if (i + addition > length) {\n      addition = length - i;\n    }\n    result += String.fromCharCode.apply(\n      null,\n      // @ts-ignore\n      bufView.subarray(i, i + addition)\n    );\n  }\n\n  return result;\n}\n\nfunction base32Decode(input: string) {\n  input = input.toUpperCase();\n\n  const length = input.length;\n\n  let bits = 0;\n  let value = 0;\n\n  let index = 0;\n  const output = new Uint8Array(((length * 5) / 8) | 0);\n\n  for (let i = 0; i < length; i++) {\n    value = (value << 5) | readChar(input[i]);\n    bits += 5;\n\n    if (bits >= 8) {\n      output[index++] = (value >>> (bits - 8)) & 255;\n      bits -= 8;\n    }\n  }\n\n  return arrayBufferToString(output.buffer);\n}\n\nexport function getProjectIdFromApiKey(\n  key: string | undefined\n): number | undefined {\n  if (!key) {\n    return undefined;\n  }\n  try {\n    const [prefix, rest] = key.split('_');\n    if (prefix === 'tgpak') {\n      const [projectId] = base32Decode(rest).split('_');\n      return Number(projectId);\n    }\n  } catch {\n    // eslint-disable-next-line no-console\n    console.warn(\"Tolgee: Api key can't be parsed\");\n  }\n  return undefined;\n}\n\nexport function getApiKeyType(key: string | undefined) {\n  if (!key) {\n    return undefined;\n  }\n  const [prefix] = key.split('_');\n  if (prefix === 'tgpak') {\n    return 'tgpak';\n  } else if (prefix === 'tgpat') {\n    return 'tgpat';\n  }\n\n  return 'legacy';\n}\n","import { BackendDevMiddleware } from '@jiotranslate/core-beta';\nimport { getApiKeyType, getProjectIdFromApiKey } from './tools/decodeApiKey';\nimport { JioTranslatePlugin } from '@jiotranslate/core-beta';\nfunction createDevBackend(): BackendDevMiddleware {\n  return {\n    getRecord({ apiUrl, apiKey, language, namespace, projectId, fetch }) {\n      const pId = getProjectIdFromApiKey(apiKey) ?? projectId;\n      let url =\n        pId !== undefined\n          ? `${apiUrl}/v2/projects/${pId}/translations/${language}`\n          : `${apiUrl}/v2/projects/translations/${language}`;\n\n      if (namespace) {\n        url += `?ns=${namespace}`;\n      }\n\n      if (getApiKeyType(apiKey) === 'tgpat' && projectId === undefined) {\n        throw new Error(\"You need to specify 'projectId' when using PAT key\");\n      }\n      return fetch(url, {\n        headers: {\n          'X-API-Key': apiKey || '',\n          'Content-Type': 'application/json',\n        },\n      }).then((r) => {\n        if (r.ok) {\n          return r.json().then((data) => data[language]);\n        } else {\n          throw new Error(r.statusText);\n        }\n      });\n    },\n  };\n}\n\nexport const DevBackend = (): JioTranslatePlugin => (jiotranslate, tools) => {\n  tools.setDevBackend(createDevBackend());\n  return jiotranslate;\n};\n","type Props = {\n  message: string;\n  recievingMessage: string[];\n  data?: any;\n  attempts?: number;\n  timeout?: number;\n};\n\nexport function listen<T = any>(type: string[], callback: (data?: T) => any) {\n  const handler = (e: MessageEvent) => {\n    if (type.includes(e.data?.type)) {\n      callback(e.data?.data);\n    }\n  };\n  window.addEventListener('message', handler, false);\n  return {\n    unsubscribe() {\n      window.removeEventListener('message', handler);\n    },\n  };\n}\n\nexport function sendAndRecieve<T>({\n  message,\n  recievingMessage,\n  data,\n  attempts = 1,\n  timeout = 300,\n}: Props) {\n  let cancelled = false;\n  const makeAttempt = () =>\n    new Promise<T>((resolve, reject) => {\n      const listener = listen(recievingMessage, handler);\n      window.postMessage({ type: message, data }, window.origin);\n      const timer = setTimeout(expire, timeout);\n\n      function handler(data: any) {\n        clearTimeout(timer);\n        removeEventListener();\n        resolve(data);\n      }\n      function removeEventListener() {\n        listener.unsubscribe();\n      }\n      function expire() {\n        removeEventListener();\n        reject();\n      }\n    });\n\n  const getData = async (): Promise<T> => {\n    for (let i = 0; i < attempts; i++) {\n      if (cancelled) {\n        return new Promise<T>(() => {});\n      }\n      try {\n        const result = await makeAttempt();\n        return result;\n      } catch (e) {\n        continue;\n      }\n    }\n    if (!cancelled) {\n      throw `Didn't recieve ${recievingMessage.join(' or ')} in time.`;\n    }\n    return new Promise<T>(() => {});\n  };\n\n  return {\n    cancel() {\n      cancelled = true;\n    },\n    promise: getData(),\n  };\n}\n\nexport function takeScreenshot(): Promise<string> {\n  return sendAndRecieve({\n    message: 'TOLGEE_TAKE_SCREENSHOT',\n    recievingMessage: ['TOLGEE_SCREENSHOT_TAKEN'],\n    timeout: 3000,\n  }).promise as Promise<string>;\n}\n\nexport async function detectExtension(): Promise<boolean> {\n  try {\n    await sendAndRecieve({\n      message: 'TOLGEE_PING',\n      recievingMessage: ['TOLGEE_PONG'],\n      attempts: 2,\n    }).promise;\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport type LibConfig = {\n  uiPresent: boolean;\n  uiVersion?: string;\n  mode: 'production' | 'development';\n  config: {\n    apiUrl: string;\n    apiKey: string;\n  };\n};\n\nexport function Handshaker() {\n  let cancelLast: undefined | (() => void) = undefined;\n  async function update(data: LibConfig): Promise<boolean> {\n    cancelLast?.();\n    const { cancel, promise } = sendAndRecieve<boolean>({\n      message: 'TOLGEE_READY',\n      recievingMessage: ['TOLGEE_PLUGIN_READY', 'TOLGEE_PLUGIN_UPDATED'],\n      data,\n      attempts: 4,\n    });\n    cancelLast = cancel;\n    return promise;\n  }\n  return {\n    update,\n  };\n}\n","export const IN_CONTEXT_FILE = 'tolgee-in-context-tools.umd.min.js';\nexport const IN_CONTEXT_UMD_NAME = '@tolgee/in-context-tools';\nexport const IN_CONTEXT_EXPORT_NAME = 'InContextTools';\n","import type { InContextTools } from '../InContextTools';\nimport {\n  IN_CONTEXT_FILE,\n  IN_CONTEXT_UMD_NAME,\n  IN_CONTEXT_EXPORT_NAME,\n} from './constants';\n\nconst CDN_URL = 'https://cdn.jsdelivr.net/npm';\n\nfunction injectScript(src: string) {\n  return new Promise<void>((resolve, reject) => {\n    const script = document.createElement('script');\n    script.src = src;\n    script.addEventListener('load', () => resolve());\n    script.addEventListener('error', (e) => reject(e.error));\n    document.head.appendChild(script);\n  });\n}\n\nlet injectPromise = null as any as Promise<typeof InContextTools>;\n\nexport function loadInContextLib(version: string) {\n  if (!injectPromise) {\n    injectPromise = injectScript(\n      `${CDN_URL}/@tolgee/web@${version}/dist/${IN_CONTEXT_FILE}`\n    ).then(() => {\n      // @ts-ignore\n      return window[IN_CONTEXT_UMD_NAME][IN_CONTEXT_EXPORT_NAME];\n    });\n  }\n  return injectPromise;\n}\n","import type { JioTranslatePlugin } from '@jiotranslate/core-beta';\nimport { Handshaker } from '../tools/extension';\nimport { loadInContextLib } from './loadInContextLib';\n\nexport const API_KEY_LOCAL_STORAGE = '__tolgee_apiKey';\nexport const API_URL_LOCAL_STORAGE = '__tolgee_apiUrl';\n\nfunction getCredentials() {\n  const apiKey = sessionStorage.getItem(API_KEY_LOCAL_STORAGE) || undefined;\n  const apiUrl = sessionStorage.getItem(API_URL_LOCAL_STORAGE) || undefined;\n\n  if (!apiKey || !apiUrl) {\n    return undefined;\n  }\n\n  return {\n    apiKey,\n    apiUrl,\n  };\n}\n\nfunction clearSessionStorage() {\n  sessionStorage.removeItem(API_KEY_LOCAL_STORAGE);\n  sessionStorage.removeItem(API_URL_LOCAL_STORAGE);\n}\n\nfunction onDocumentReady(callback: () => void) {\n  // in case the document is already rendered\n  if (document.readyState !== 'loading') {\n    Promise.resolve().then(() => {\n      callback();\n    });\n  }\n  // modern browsers\n  else if (document.addEventListener) {\n    document.addEventListener('DOMContentLoaded', callback);\n  }\n}\n\nexport type BrowserExtensionProps = {\n  noReload?: boolean;\n};\n\nlet BrowserExtensionPlugin: () => JioTranslatePlugin = () => (tolgee) => tolgee;\n\nconst sessionStorageAvailable = () => {\n  if (typeof window === 'undefined') {\n    return false;\n  }\n  try {\n    return typeof sessionStorage !== 'undefined' && sessionStorage;\n  } catch (err) {\n    // eslint-disable-next-line no-console\n    console.error('sessionStorage not available', err);\n    return false;\n  }\n};\n\nif (sessionStorageAvailable()) {\n  BrowserExtensionPlugin = (): JioTranslatePlugin => (tolgee) => {\n    const handshaker = Handshaker();\n    const getConfig = () =>\n      ({\n        // prevent extension downloading ui library\n        uiPresent: true,\n        uiVersion: undefined,\n        // tolgee mode\n        mode: tolgee.isDev() ? 'development' : 'production',\n        // pass credentials\n        config: {\n          apiUrl: tolgee.getInitialOptions().apiUrl || '',\n          apiKey: tolgee.getInitialOptions().apiKey || '',\n        },\n      }) as const;\n\n    const getJioTranslatePlugin = async (): Promise<JioTranslatePlugin> => {\n      const InContextTools = await loadInContextLib(\n        process.env.TOLGEE_UI_VERSION || 'prerelease'\n      );\n      return (tolgee) => {\n        const credentials = getCredentials()!;\n        tolgee.addPlugin(InContextTools({ credentials }));\n        return tolgee;\n      };\n    };\n\n    tolgee.on('running', ({ value: isRunning }) => {\n      if (isRunning) {\n        onDocumentReady(() => {\n          handshaker.update(getConfig()).catch(clearSessionStorage);\n        });\n      }\n    });\n\n    const credentials = getCredentials();\n    if (credentials) {\n      getJioTranslatePlugin()\n        .then((plugin) => {\n          tolgee.addPlugin(plugin);\n        })\n        .catch((e) => {\n          // eslint-disable-next-line no-console\n          console.error('Tolgee: Failed to load in-context tools');\n          // eslint-disable-next-line no-console\n          console.error(e);\n        });\n    }\n\n    return tolgee;\n  };\n}\n\nexport { BrowserExtensionPlugin };\n","import type { LanguageStorageMiddleware } from '@jiotranslate/core-beta';\nimport { throwIfSSR } from './tools/isSSR';\nimport { JioTranslatePlugin } from '@jiotranslate/core-beta';\nconst CURRENT_LANGUAGE_LOCAL_STORAGE_KEY = '__tolgee_currentLanguage';\n\nexport function createLanguageStorage(): LanguageStorageMiddleware {\n  return {\n    getLanguage() {\n      throwIfSSR('LanguageStorage');\n      const storedLanguage = localStorage.getItem(\n        CURRENT_LANGUAGE_LOCAL_STORAGE_KEY\n      );\n\n      return storedLanguage || undefined;\n    },\n\n    setLanguage(language: string) {\n      throwIfSSR('LanguageStorage');\n      localStorage.setItem(CURRENT_LANGUAGE_LOCAL_STORAGE_KEY, language);\n    },\n  };\n}\n\nexport const LanguageStorage =\n  (): JioTranslatePlugin => (jioTranslate, tools) => {\n    tools.setLanguageStorage(createLanguageStorage());\n    return jioTranslate;\n  };\n","import type { LanguageDetectorMiddleware } from '@jiotranslate/core-beta';\nimport { throwIfSSR } from './tools/isSSR';\nimport { JioTranslatePlugin } from '@jiotranslate/core-beta';\nexport function createLanguageDetector(): LanguageDetectorMiddleware {\n  return {\n    getLanguage({ availableLanguages }) {\n      throwIfSSR('LanguageDetector');\n      const preferred = window.navigator.language;\n      const exactMatch = availableLanguages.find((l) => l === preferred);\n      if (exactMatch) {\n        return exactMatch;\n      }\n\n      const getTwoLetters = (fullTag: string) =>\n        fullTag.replace(/^(.+?)(-.*)?$/, '$1');\n\n      const preferredTwoLetter = getTwoLetters(window.navigator.language);\n      const twoLetterMatch = availableLanguages.find(\n        (l) => getTwoLetters(l) === preferredTwoLetter\n      );\n      if (twoLetterMatch) {\n        return twoLetterMatch;\n      }\n      return undefined;\n    },\n  };\n}\n\nexport const LanguageDetector =\n  (): JioTranslatePlugin => (jioTranslate, tools) => {\n    tools.setLanguageDetector(createLanguageDetector());\n    return jioTranslate;\n  };\n","import type {\n  BackendMiddleware,\n  JioTranslatePlugin,\n} from '@jiotranslate/core-beta';\nimport { GetPath, BackendOptions } from './types';\n\nfunction trimSlashes(path: string) {\n  if (path.endsWith('/')) {\n    return path.slice(0, -1);\n  }\n  return path;\n}\n\nconst defaultGetPath: GetPath = ({ namespace, language, prefix }) => {\n  if (namespace) {\n    return `${trimSlashes(prefix)}/${namespace}/${language}.json`;\n  } else {\n    return `${trimSlashes(prefix)}/${language}.json`;\n  }\n};\n\nfunction defaultGetData(r: Response) {\n  return r.json();\n}\n\nconst DEFAULT_OPTIONS = {\n  prefix: '/i18n',\n  getPath: defaultGetPath,\n  getData: defaultGetData,\n  headers: {\n    Accept: 'application/json',\n  },\n};\n\nfunction createBackendFetch(\n  options?: Partial<BackendOptions>\n): BackendMiddleware {\n  const { prefix, getPath, getData, headers, ...fetchOptions }: BackendOptions =\n    {\n      ...DEFAULT_OPTIONS,\n      ...options,\n      headers: {\n        ...DEFAULT_OPTIONS.headers,\n        ...options?.headers,\n      },\n    };\n  return {\n    getRecord({ namespace, language, fetch }) {\n      const path = getPath({\n        namespace,\n        language,\n        prefix,\n      });\n      return fetch(path, { headers, ...fetchOptions }).then((r) => {\n        if (!r.ok) {\n          throw new Error(`${r.url} ${r.status}`);\n        }\n        return getData(r);\n      });\n    },\n  };\n}\n\nexport const BackendFetch =\n  (options?: Partial<BackendOptions>): JioTranslatePlugin =>\n  (jiotranslate, tools) => {\n    tools.addBackend(createBackendFetch(options));\n    return jiotranslate;\n  };\n","import { JioTranslateChainer, JioTranslateCore } from '@jiotranslate/core-beta';\nimport { BrowserExtensionPlugin } from './BrowserExtensionPlugin/BrowserExtensionPlugin';\n\nexport function JioTranslate(): JioTranslateChainer {\n  return JioTranslateCore().use(BrowserExtensionPlugin());\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'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","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","export var Subscribable = /*#__PURE__*/function () {\n  function Subscribable() {\n    this.listeners = [];\n  }\n\n  var _proto = Subscribable.prototype;\n\n  _proto.subscribe = function subscribe(listener) {\n    var _this = this;\n\n    var callback = listener || function () {\n      return undefined;\n    };\n\n    this.listeners.push(callback);\n    this.onSubscribe();\n    return function () {\n      _this.listeners = _this.listeners.filter(function (x) {\n        return x !== callback;\n      });\n\n      _this.onUnsubscribe();\n    };\n  };\n\n  _proto.hasListeners = function hasListeners() {\n    return this.listeners.length > 0;\n  };\n\n  _proto.onSubscribe = function onSubscribe() {// Do nothing\n  };\n\n  _proto.onUnsubscribe = function onUnsubscribe() {// Do nothing\n  };\n\n  return Subscribable;\n}();","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// TYPES\n// UTILS\nexport var isServer = typeof window === 'undefined';\nexport function noop() {\n  return undefined;\n}\nexport function functionalUpdate(updater, input) {\n  return typeof updater === 'function' ? updater(input) : updater;\n}\nexport function isValidTimeout(value) {\n  return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nexport function ensureQueryKeyArray(value) {\n  return Array.isArray(value) ? value : [value];\n}\nexport function difference(array1, array2) {\n  return array1.filter(function (x) {\n    return array2.indexOf(x) === -1;\n  });\n}\nexport function replaceAt(array, index, value) {\n  var copy = array.slice(0);\n  copy[index] = value;\n  return copy;\n}\nexport function timeUntilStale(updatedAt, staleTime) {\n  return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nexport function parseQueryArgs(arg1, arg2, arg3) {\n  if (!isQueryKey(arg1)) {\n    return arg1;\n  }\n\n  if (typeof arg2 === 'function') {\n    return _extends({}, arg3, {\n      queryKey: arg1,\n      queryFn: arg2\n    });\n  }\n\n  return _extends({}, arg2, {\n    queryKey: arg1\n  });\n}\nexport function parseMutationArgs(arg1, arg2, arg3) {\n  if (isQueryKey(arg1)) {\n    if (typeof arg2 === 'function') {\n      return _extends({}, arg3, {\n        mutationKey: arg1,\n        mutationFn: arg2\n      });\n    }\n\n    return _extends({}, arg2, {\n      mutationKey: arg1\n    });\n  }\n\n  if (typeof arg1 === 'function') {\n    return _extends({}, arg2, {\n      mutationFn: arg1\n    });\n  }\n\n  return _extends({}, arg1);\n}\nexport function parseFilterArgs(arg1, arg2, arg3) {\n  return isQueryKey(arg1) ? [_extends({}, arg2, {\n    queryKey: arg1\n  }), arg3] : [arg1 || {}, arg2];\n}\nexport function parseMutationFilterArgs(arg1, arg2) {\n  return isQueryKey(arg1) ? _extends({}, arg2, {\n    mutationKey: arg1\n  }) : arg1;\n}\nexport function mapQueryStatusFilter(active, inactive) {\n  if (active === true && inactive === true || active == null && inactive == null) {\n    return 'all';\n  } else if (active === false && inactive === false) {\n    return 'none';\n  } else {\n    // At this point, active|inactive can only be true|false or false|true\n    // so, when only one value is provided, the missing one has to be the negated value\n    var isActive = active != null ? active : !inactive;\n    return isActive ? 'active' : 'inactive';\n  }\n}\nexport function matchQuery(filters, query) {\n  var active = filters.active,\n      exact = filters.exact,\n      fetching = filters.fetching,\n      inactive = filters.inactive,\n      predicate = filters.predicate,\n      queryKey = filters.queryKey,\n      stale = filters.stale;\n\n  if (isQueryKey(queryKey)) {\n    if (exact) {\n      if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n        return false;\n      }\n    } else if (!partialMatchKey(query.queryKey, queryKey)) {\n      return false;\n    }\n  }\n\n  var queryStatusFilter = mapQueryStatusFilter(active, inactive);\n\n  if (queryStatusFilter === 'none') {\n    return false;\n  } else if (queryStatusFilter !== 'all') {\n    var isActive = query.isActive();\n\n    if (queryStatusFilter === 'active' && !isActive) {\n      return false;\n    }\n\n    if (queryStatusFilter === 'inactive' && isActive) {\n      return false;\n    }\n  }\n\n  if (typeof stale === 'boolean' && query.isStale() !== stale) {\n    return false;\n  }\n\n  if (typeof fetching === 'boolean' && query.isFetching() !== fetching) {\n    return false;\n  }\n\n  if (predicate && !predicate(query)) {\n    return false;\n  }\n\n  return true;\n}\nexport function matchMutation(filters, mutation) {\n  var exact = filters.exact,\n      fetching = filters.fetching,\n      predicate = filters.predicate,\n      mutationKey = filters.mutationKey;\n\n  if (isQueryKey(mutationKey)) {\n    if (!mutation.options.mutationKey) {\n      return false;\n    }\n\n    if (exact) {\n      if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n        return false;\n      }\n    } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n      return false;\n    }\n  }\n\n  if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n    return false;\n  }\n\n  if (predicate && !predicate(mutation)) {\n    return false;\n  }\n\n  return true;\n}\nexport function hashQueryKeyByOptions(queryKey, options) {\n  var hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n  return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n */\n\nexport function hashQueryKey(queryKey) {\n  var asArray = ensureQueryKeyArray(queryKey);\n  return stableValueHash(asArray);\n}\n/**\n * Hashes the value into a stable hash.\n */\n\nexport function stableValueHash(value) {\n  return JSON.stringify(value, function (_, val) {\n    return isPlainObject(val) ? Object.keys(val).sort().reduce(function (result, key) {\n      result[key] = val[key];\n      return result;\n    }, {}) : val;\n  });\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nexport function partialMatchKey(a, b) {\n  return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b));\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nexport function partialDeepEqual(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (typeof a !== typeof b) {\n    return false;\n  }\n\n  if (a && b && typeof a === 'object' && typeof b === 'object') {\n    return !Object.keys(b).some(function (key) {\n      return !partialDeepEqual(a[key], b[key]);\n    });\n  }\n\n  return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nexport function replaceEqualDeep(a, b) {\n  if (a === b) {\n    return a;\n  }\n\n  var array = Array.isArray(a) && Array.isArray(b);\n\n  if (array || isPlainObject(a) && isPlainObject(b)) {\n    var aSize = array ? a.length : Object.keys(a).length;\n    var bItems = array ? b : Object.keys(b);\n    var bSize = bItems.length;\n    var copy = array ? [] : {};\n    var equalItems = 0;\n\n    for (var i = 0; i < bSize; i++) {\n      var key = array ? i : bItems[i];\n      copy[key] = replaceEqualDeep(a[key], b[key]);\n\n      if (copy[key] === a[key]) {\n        equalItems++;\n      }\n    }\n\n    return aSize === bSize && equalItems === aSize ? a : copy;\n  }\n\n  return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nexport function shallowEqualObjects(a, b) {\n  if (a && !b || b && !a) {\n    return false;\n  }\n\n  for (var key in a) {\n    if (a[key] !== b[key]) {\n      return false;\n    }\n  }\n\n  return true;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nexport function isPlainObject(o) {\n  if (!hasObjectPrototype(o)) {\n    return false;\n  } // If has modified constructor\n\n\n  var ctor = o.constructor;\n\n  if (typeof ctor === 'undefined') {\n    return true;\n  } // If has modified prototype\n\n\n  var prot = ctor.prototype;\n\n  if (!hasObjectPrototype(prot)) {\n    return false;\n  } // If constructor does not have an Object-specific method\n\n\n  if (!prot.hasOwnProperty('isPrototypeOf')) {\n    return false;\n  } // Most likely a plain Object\n\n\n  return true;\n}\n\nfunction hasObjectPrototype(o) {\n  return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nexport function isQueryKey(value) {\n  return typeof value === 'string' || Array.isArray(value);\n}\nexport function isError(value) {\n  return value instanceof Error;\n}\nexport function sleep(timeout) {\n  return new Promise(function (resolve) {\n    setTimeout(resolve, timeout);\n  });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nexport function scheduleMicrotask(callback) {\n  Promise.resolve().then(callback).catch(function (error) {\n    return setTimeout(function () {\n      throw error;\n    });\n  });\n}\nexport function getAbortController() {\n  if (typeof AbortController === 'function') {\n    return new AbortController();\n  }\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var FocusManager = /*#__PURE__*/function (_Subscribable) {\n  _inheritsLoose(FocusManager, _Subscribable);\n\n  function FocusManager() {\n    var _this;\n\n    _this = _Subscribable.call(this) || this;\n\n    _this.setup = function (onFocus) {\n      var _window;\n\n      if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n        var listener = function listener() {\n          return onFocus();\n        }; // Listen to visibillitychange and focus\n\n\n        window.addEventListener('visibilitychange', listener, false);\n        window.addEventListener('focus', listener, false);\n        return function () {\n          // Be sure to unsubscribe if a new handler is set\n          window.removeEventListener('visibilitychange', listener);\n          window.removeEventListener('focus', listener);\n        };\n      }\n    };\n\n    return _this;\n  }\n\n  var _proto = FocusManager.prototype;\n\n  _proto.onSubscribe = function onSubscribe() {\n    if (!this.cleanup) {\n      this.setEventListener(this.setup);\n    }\n  };\n\n  _proto.onUnsubscribe = function onUnsubscribe() {\n    if (!this.hasListeners()) {\n      var _this$cleanup;\n\n      (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n      this.cleanup = undefined;\n    }\n  };\n\n  _proto.setEventListener = function setEventListener(setup) {\n    var _this$cleanup2,\n        _this2 = this;\n\n    this.setup = setup;\n    (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n    this.cleanup = setup(function (focused) {\n      if (typeof focused === 'boolean') {\n        _this2.setFocused(focused);\n      } else {\n        _this2.onFocus();\n      }\n    });\n  };\n\n  _proto.setFocused = function setFocused(focused) {\n    this.focused = focused;\n\n    if (focused) {\n      this.onFocus();\n    }\n  };\n\n  _proto.onFocus = function onFocus() {\n    this.listeners.forEach(function (listener) {\n      listener();\n    });\n  };\n\n  _proto.isFocused = function isFocused() {\n    if (typeof this.focused === 'boolean') {\n      return this.focused;\n    } // document global can be unavailable in react native\n\n\n    if (typeof document === 'undefined') {\n      return true;\n    }\n\n    return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n  };\n\n  return FocusManager;\n}(Subscribable);\nexport var focusManager = new FocusManager();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var OnlineManager = /*#__PURE__*/function (_Subscribable) {\n  _inheritsLoose(OnlineManager, _Subscribable);\n\n  function OnlineManager() {\n    var _this;\n\n    _this = _Subscribable.call(this) || this;\n\n    _this.setup = function (onOnline) {\n      var _window;\n\n      if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n        var listener = function listener() {\n          return onOnline();\n        }; // Listen to online\n\n\n        window.addEventListener('online', listener, false);\n        window.addEventListener('offline', listener, false);\n        return function () {\n          // Be sure to unsubscribe if a new handler is set\n          window.removeEventListener('online', listener);\n          window.removeEventListener('offline', listener);\n        };\n      }\n    };\n\n    return _this;\n  }\n\n  var _proto = OnlineManager.prototype;\n\n  _proto.onSubscribe = function onSubscribe() {\n    if (!this.cleanup) {\n      this.setEventListener(this.setup);\n    }\n  };\n\n  _proto.onUnsubscribe = function onUnsubscribe() {\n    if (!this.hasListeners()) {\n      var _this$cleanup;\n\n      (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n      this.cleanup = undefined;\n    }\n  };\n\n  _proto.setEventListener = function setEventListener(setup) {\n    var _this$cleanup2,\n        _this2 = this;\n\n    this.setup = setup;\n    (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n    this.cleanup = setup(function (online) {\n      if (typeof online === 'boolean') {\n        _this2.setOnline(online);\n      } else {\n        _this2.onOnline();\n      }\n    });\n  };\n\n  _proto.setOnline = function setOnline(online) {\n    this.online = online;\n\n    if (online) {\n      this.onOnline();\n    }\n  };\n\n  _proto.onOnline = function onOnline() {\n    this.listeners.forEach(function (listener) {\n      listener();\n    });\n  };\n\n  _proto.isOnline = function isOnline() {\n    if (typeof this.online === 'boolean') {\n      return this.online;\n    }\n\n    if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n      return true;\n    }\n\n    return navigator.onLine;\n  };\n\n  return OnlineManager;\n}(Subscribable);\nexport var onlineManager = new OnlineManager();","import { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { sleep } from './utils';\n\nfunction defaultRetryDelay(failureCount) {\n  return Math.min(1000 * Math.pow(2, failureCount), 30000);\n}\n\nexport function isCancelable(value) {\n  return typeof (value == null ? void 0 : value.cancel) === 'function';\n}\nexport var CancelledError = function CancelledError(options) {\n  this.revert = options == null ? void 0 : options.revert;\n  this.silent = options == null ? void 0 : options.silent;\n};\nexport function isCancelledError(value) {\n  return value instanceof CancelledError;\n} // CLASS\n\nexport var Retryer = function Retryer(config) {\n  var _this = this;\n\n  var cancelRetry = false;\n  var cancelFn;\n  var continueFn;\n  var promiseResolve;\n  var promiseReject;\n  this.abort = config.abort;\n\n  this.cancel = function (cancelOptions) {\n    return cancelFn == null ? void 0 : cancelFn(cancelOptions);\n  };\n\n  this.cancelRetry = function () {\n    cancelRetry = true;\n  };\n\n  this.continueRetry = function () {\n    cancelRetry = false;\n  };\n\n  this.continue = function () {\n    return continueFn == null ? void 0 : continueFn();\n  };\n\n  this.failureCount = 0;\n  this.isPaused = false;\n  this.isResolved = false;\n  this.isTransportCancelable = false;\n  this.promise = new Promise(function (outerResolve, outerReject) {\n    promiseResolve = outerResolve;\n    promiseReject = outerReject;\n  });\n\n  var resolve = function resolve(value) {\n    if (!_this.isResolved) {\n      _this.isResolved = true;\n      config.onSuccess == null ? void 0 : config.onSuccess(value);\n      continueFn == null ? void 0 : continueFn();\n      promiseResolve(value);\n    }\n  };\n\n  var reject = function reject(value) {\n    if (!_this.isResolved) {\n      _this.isResolved = true;\n      config.onError == null ? void 0 : config.onError(value);\n      continueFn == null ? void 0 : continueFn();\n      promiseReject(value);\n    }\n  };\n\n  var pause = function pause() {\n    return new Promise(function (continueResolve) {\n      continueFn = continueResolve;\n      _this.isPaused = true;\n      config.onPause == null ? void 0 : config.onPause();\n    }).then(function () {\n      continueFn = undefined;\n      _this.isPaused = false;\n      config.onContinue == null ? void 0 : config.onContinue();\n    });\n  }; // Create loop function\n\n\n  var run = function run() {\n    // Do nothing if already resolved\n    if (_this.isResolved) {\n      return;\n    }\n\n    var promiseOrValue; // Execute query\n\n    try {\n      promiseOrValue = config.fn();\n    } catch (error) {\n      promiseOrValue = Promise.reject(error);\n    } // Create callback to cancel this fetch\n\n\n    cancelFn = function cancelFn(cancelOptions) {\n      if (!_this.isResolved) {\n        reject(new CancelledError(cancelOptions));\n        _this.abort == null ? void 0 : _this.abort(); // Cancel transport if supported\n\n        if (isCancelable(promiseOrValue)) {\n          try {\n            promiseOrValue.cancel();\n          } catch (_unused) {}\n        }\n      }\n    }; // Check if the transport layer support cancellation\n\n\n    _this.isTransportCancelable = isCancelable(promiseOrValue);\n    Promise.resolve(promiseOrValue).then(resolve).catch(function (error) {\n      var _config$retry, _config$retryDelay;\n\n      // Stop if the fetch is already resolved\n      if (_this.isResolved) {\n        return;\n      } // Do we need to retry the request?\n\n\n      var retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n      var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n      var delay = typeof retryDelay === 'function' ? retryDelay(_this.failureCount, error) : retryDelay;\n      var shouldRetry = retry === true || typeof retry === 'number' && _this.failureCount < retry || typeof retry === 'function' && retry(_this.failureCount, error);\n\n      if (cancelRetry || !shouldRetry) {\n        // We are done if the query does not need to be retried\n        reject(error);\n        return;\n      }\n\n      _this.failureCount++; // Notify on fail\n\n      config.onFail == null ? void 0 : config.onFail(_this.failureCount, error); // Delay\n\n      sleep(delay) // Pause if the document is not visible or when the device is offline\n      .then(function () {\n        if (!focusManager.isFocused() || !onlineManager.isOnline()) {\n          return pause();\n        }\n      }).then(function () {\n        if (cancelRetry) {\n          reject(error);\n        } else {\n          run();\n        }\n      });\n    });\n  }; // Start loop\n\n\n  run();\n};","import { scheduleMicrotask } from './utils'; // TYPES\n\n// CLASS\nexport var NotifyManager = /*#__PURE__*/function () {\n  function NotifyManager() {\n    this.queue = [];\n    this.transactions = 0;\n\n    this.notifyFn = function (callback) {\n      callback();\n    };\n\n    this.batchNotifyFn = function (callback) {\n      callback();\n    };\n  }\n\n  var _proto = NotifyManager.prototype;\n\n  _proto.batch = function batch(callback) {\n    var result;\n    this.transactions++;\n\n    try {\n      result = callback();\n    } finally {\n      this.transactions--;\n\n      if (!this.transactions) {\n        this.flush();\n      }\n    }\n\n    return result;\n  };\n\n  _proto.schedule = function schedule(callback) {\n    var _this = this;\n\n    if (this.transactions) {\n      this.queue.push(callback);\n    } else {\n      scheduleMicrotask(function () {\n        _this.notifyFn(callback);\n      });\n    }\n  }\n  /**\n   * All calls to the wrapped function will be batched.\n   */\n  ;\n\n  _proto.batchCalls = function batchCalls(callback) {\n    var _this2 = this;\n\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      _this2.schedule(function () {\n        callback.apply(void 0, args);\n      });\n    };\n  };\n\n  _proto.flush = function flush() {\n    var _this3 = this;\n\n    var queue = this.queue;\n    this.queue = [];\n\n    if (queue.length) {\n      scheduleMicrotask(function () {\n        _this3.batchNotifyFn(function () {\n          queue.forEach(function (callback) {\n            _this3.notifyFn(callback);\n          });\n        });\n      });\n    }\n  }\n  /**\n   * Use this method to set a custom notify function.\n   * This can be used to for example wrap notifications with `React.act` while running tests.\n   */\n  ;\n\n  _proto.setNotifyFunction = function setNotifyFunction(fn) {\n    this.notifyFn = fn;\n  }\n  /**\n   * Use this method to set a custom function to batch notifications together into a single tick.\n   * By default React Query will use the batch function provided by ReactDOM or React Native.\n   */\n  ;\n\n  _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) {\n    this.batchNotifyFn = fn;\n  };\n\n  return NotifyManager;\n}(); // SINGLETON\n\nexport var notifyManager = new NotifyManager();","// TYPES\n// FUNCTIONS\nvar logger = console;\nexport function getLogger() {\n  return logger;\n}\nexport function setLogger(newLogger) {\n  logger = newLogger;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getAbortController, functionalUpdate, isValidTimeout, noop, replaceEqualDeep, timeUntilStale, ensureQueryKeyArray } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { getLogger } from './logger';\nimport { Retryer, isCancelledError } from './retryer'; // TYPES\n\n// CLASS\nexport var Query = /*#__PURE__*/function () {\n  function Query(config) {\n    this.abortSignalConsumed = false;\n    this.hadObservers = false;\n    this.defaultOptions = config.defaultOptions;\n    this.setOptions(config.options);\n    this.observers = [];\n    this.cache = config.cache;\n    this.queryKey = config.queryKey;\n    this.queryHash = config.queryHash;\n    this.initialState = config.state || this.getDefaultState(this.options);\n    this.state = this.initialState;\n    this.meta = config.meta;\n    this.scheduleGc();\n  }\n\n  var _proto = Query.prototype;\n\n  _proto.setOptions = function setOptions(options) {\n    var _this$options$cacheTi;\n\n    this.options = _extends({}, this.defaultOptions, options);\n    this.meta = options == null ? void 0 : options.meta; // Default to 5 minutes if not cache time is set\n\n    this.cacheTime = Math.max(this.cacheTime || 0, (_this$options$cacheTi = this.options.cacheTime) != null ? _this$options$cacheTi : 5 * 60 * 1000);\n  };\n\n  _proto.setDefaultOptions = function setDefaultOptions(options) {\n    this.defaultOptions = options;\n  };\n\n  _proto.scheduleGc = function scheduleGc() {\n    var _this = this;\n\n    this.clearGcTimeout();\n\n    if (isValidTimeout(this.cacheTime)) {\n      this.gcTimeout = setTimeout(function () {\n        _this.optionalRemove();\n      }, this.cacheTime);\n    }\n  };\n\n  _proto.clearGcTimeout = function clearGcTimeout() {\n    if (this.gcTimeout) {\n      clearTimeout(this.gcTimeout);\n      this.gcTimeout = undefined;\n    }\n  };\n\n  _proto.optionalRemove = function optionalRemove() {\n    if (!this.observers.length) {\n      if (this.state.isFetching) {\n        if (this.hadObservers) {\n          this.scheduleGc();\n        }\n      } else {\n        this.cache.remove(this);\n      }\n    }\n  };\n\n  _proto.setData = function setData(updater, options) {\n    var _this$options$isDataE, _this$options;\n\n    var prevData = this.state.data; // Get the new data\n\n    var data = functionalUpdate(updater, prevData); // Use prev data if an isDataEqual function is defined and returns `true`\n\n    if ((_this$options$isDataE = (_this$options = this.options).isDataEqual) == null ? void 0 : _this$options$isDataE.call(_this$options, prevData, data)) {\n      data = prevData;\n    } else if (this.options.structuralSharing !== false) {\n      // Structurally share data between prev and new data if needed\n      data = replaceEqualDeep(prevData, data);\n    } // Set data and mark it as cached\n\n\n    this.dispatch({\n      data: data,\n      type: 'success',\n      dataUpdatedAt: options == null ? void 0 : options.updatedAt\n    });\n    return data;\n  };\n\n  _proto.setState = function setState(state, setStateOptions) {\n    this.dispatch({\n      type: 'setState',\n      state: state,\n      setStateOptions: setStateOptions\n    });\n  };\n\n  _proto.cancel = function cancel(options) {\n    var _this$retryer;\n\n    var promise = this.promise;\n    (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n    return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n  };\n\n  _proto.destroy = function destroy() {\n    this.clearGcTimeout();\n    this.cancel({\n      silent: true\n    });\n  };\n\n  _proto.reset = function reset() {\n    this.destroy();\n    this.setState(this.initialState);\n  };\n\n  _proto.isActive = function isActive() {\n    return this.observers.some(function (observer) {\n      return observer.options.enabled !== false;\n    });\n  };\n\n  _proto.isFetching = function isFetching() {\n    return this.state.isFetching;\n  };\n\n  _proto.isStale = function isStale() {\n    return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(function (observer) {\n      return observer.getCurrentResult().isStale;\n    });\n  };\n\n  _proto.isStaleByTime = function isStaleByTime(staleTime) {\n    if (staleTime === void 0) {\n      staleTime = 0;\n    }\n\n    return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n  };\n\n  _proto.onFocus = function onFocus() {\n    var _this$retryer2;\n\n    var observer = this.observers.find(function (x) {\n      return x.shouldFetchOnWindowFocus();\n    });\n\n    if (observer) {\n      observer.refetch();\n    } // Continue fetch if currently paused\n\n\n    (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n  };\n\n  _proto.onOnline = function onOnline() {\n    var _this$retryer3;\n\n    var observer = this.observers.find(function (x) {\n      return x.shouldFetchOnReconnect();\n    });\n\n    if (observer) {\n      observer.refetch();\n    } // Continue fetch if currently paused\n\n\n    (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n  };\n\n  _proto.addObserver = function addObserver(observer) {\n    if (this.observers.indexOf(observer) === -1) {\n      this.observers.push(observer);\n      this.hadObservers = true; // Stop the query from being garbage collected\n\n      this.clearGcTimeout();\n      this.cache.notify({\n        type: 'observerAdded',\n        query: this,\n        observer: observer\n      });\n    }\n  };\n\n  _proto.removeObserver = function removeObserver(observer) {\n    if (this.observers.indexOf(observer) !== -1) {\n      this.observers = this.observers.filter(function (x) {\n        return x !== observer;\n      });\n\n      if (!this.observers.length) {\n        // If the transport layer does not support cancellation\n        // we'll let the query continue so the result can be cached\n        if (this.retryer) {\n          if (this.retryer.isTransportCancelable || this.abortSignalConsumed) {\n            this.retryer.cancel({\n              revert: true\n            });\n          } else {\n            this.retryer.cancelRetry();\n          }\n        }\n\n        if (this.cacheTime) {\n          this.scheduleGc();\n        } else {\n          this.cache.remove(this);\n        }\n      }\n\n      this.cache.notify({\n        type: 'observerRemoved',\n        query: this,\n        observer: observer\n      });\n    }\n  };\n\n  _proto.getObserversCount = function getObserversCount() {\n    return this.observers.length;\n  };\n\n  _proto.invalidate = function invalidate() {\n    if (!this.state.isInvalidated) {\n      this.dispatch({\n        type: 'invalidate'\n      });\n    }\n  };\n\n  _proto.fetch = function fetch(options, fetchOptions) {\n    var _this2 = this,\n        _this$options$behavio,\n        _context$fetchOptions,\n        _abortController$abor;\n\n    if (this.state.isFetching) {\n      if (this.state.dataUpdatedAt && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) {\n        // Silently cancel current fetch if the user wants to cancel refetches\n        this.cancel({\n          silent: true\n        });\n      } else if (this.promise) {\n        var _this$retryer4;\n\n        // make sure that retries that were potentially cancelled due to unmounts can continue\n        (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching\n\n        return this.promise;\n      }\n    } // Update config if passed, otherwise the config from the last execution is used\n\n\n    if (options) {\n      this.setOptions(options);\n    } // Use the options from the first observer with a query function if no function is found.\n    // This can happen when the query is hydrated or created with setQueryData.\n\n\n    if (!this.options.queryFn) {\n      var observer = this.observers.find(function (x) {\n        return x.options.queryFn;\n      });\n\n      if (observer) {\n        this.setOptions(observer.options);\n      }\n    }\n\n    var queryKey = ensureQueryKeyArray(this.queryKey);\n    var abortController = getAbortController(); // Create query function context\n\n    var queryFnContext = {\n      queryKey: queryKey,\n      pageParam: undefined,\n      meta: this.meta\n    };\n    Object.defineProperty(queryFnContext, 'signal', {\n      enumerable: true,\n      get: function get() {\n        if (abortController) {\n          _this2.abortSignalConsumed = true;\n          return abortController.signal;\n        }\n\n        return undefined;\n      }\n    }); // Create fetch function\n\n    var fetchFn = function fetchFn() {\n      if (!_this2.options.queryFn) {\n        return Promise.reject('Missing queryFn');\n      }\n\n      _this2.abortSignalConsumed = false;\n      return _this2.options.queryFn(queryFnContext);\n    }; // Trigger behavior hook\n\n\n    var context = {\n      fetchOptions: fetchOptions,\n      options: this.options,\n      queryKey: queryKey,\n      state: this.state,\n      fetchFn: fetchFn,\n      meta: this.meta\n    };\n\n    if ((_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch) {\n      var _this$options$behavio2;\n\n      (_this$options$behavio2 = this.options.behavior) == null ? void 0 : _this$options$behavio2.onFetch(context);\n    } // Store state in case the current fetch needs to be reverted\n\n\n    this.revertState = this.state; // Set to fetching state if not already in it\n\n    if (!this.state.isFetching || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n      var _context$fetchOptions2;\n\n      this.dispatch({\n        type: 'fetch',\n        meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n      });\n    } // Try to fetch the data\n\n\n    this.retryer = new Retryer({\n      fn: context.fetchFn,\n      abort: abortController == null ? void 0 : (_abortController$abor = abortController.abort) == null ? void 0 : _abortController$abor.bind(abortController),\n      onSuccess: function onSuccess(data) {\n        _this2.setData(data); // Notify cache callback\n\n\n        _this2.cache.config.onSuccess == null ? void 0 : _this2.cache.config.onSuccess(data, _this2); // Remove query after fetching if cache time is 0\n\n        if (_this2.cacheTime === 0) {\n          _this2.optionalRemove();\n        }\n      },\n      onError: function onError(error) {\n        // Optimistically update state if needed\n        if (!(isCancelledError(error) && error.silent)) {\n          _this2.dispatch({\n            type: 'error',\n            error: error\n          });\n        }\n\n        if (!isCancelledError(error)) {\n          // Notify cache callback\n          _this2.cache.config.onError == null ? void 0 : _this2.cache.config.onError(error, _this2); // Log error\n\n          getLogger().error(error);\n        } // Remove query after fetching if cache time is 0\n\n\n        if (_this2.cacheTime === 0) {\n          _this2.optionalRemove();\n        }\n      },\n      onFail: function onFail() {\n        _this2.dispatch({\n          type: 'failed'\n        });\n      },\n      onPause: function onPause() {\n        _this2.dispatch({\n          type: 'pause'\n        });\n      },\n      onContinue: function onContinue() {\n        _this2.dispatch({\n          type: 'continue'\n        });\n      },\n      retry: context.options.retry,\n      retryDelay: context.options.retryDelay\n    });\n    this.promise = this.retryer.promise;\n    return this.promise;\n  };\n\n  _proto.dispatch = function dispatch(action) {\n    var _this3 = this;\n\n    this.state = this.reducer(this.state, action);\n    notifyManager.batch(function () {\n      _this3.observers.forEach(function (observer) {\n        observer.onQueryUpdate(action);\n      });\n\n      _this3.cache.notify({\n        query: _this3,\n        type: 'queryUpdated',\n        action: action\n      });\n    });\n  };\n\n  _proto.getDefaultState = function getDefaultState(options) {\n    var data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;\n    var hasInitialData = typeof options.initialData !== 'undefined';\n    var initialDataUpdatedAt = hasInitialData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n    var hasData = typeof data !== 'undefined';\n    return {\n      data: data,\n      dataUpdateCount: 0,\n      dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n      error: null,\n      errorUpdateCount: 0,\n      errorUpdatedAt: 0,\n      fetchFailureCount: 0,\n      fetchMeta: null,\n      isFetching: false,\n      isInvalidated: false,\n      isPaused: false,\n      status: hasData ? 'success' : 'idle'\n    };\n  };\n\n  _proto.reducer = function reducer(state, action) {\n    var _action$meta, _action$dataUpdatedAt;\n\n    switch (action.type) {\n      case 'failed':\n        return _extends({}, state, {\n          fetchFailureCount: state.fetchFailureCount + 1\n        });\n\n      case 'pause':\n        return _extends({}, state, {\n          isPaused: true\n        });\n\n      case 'continue':\n        return _extends({}, state, {\n          isPaused: false\n        });\n\n      case 'fetch':\n        return _extends({}, state, {\n          fetchFailureCount: 0,\n          fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n          isFetching: true,\n          isPaused: false\n        }, !state.dataUpdatedAt && {\n          error: null,\n          status: 'loading'\n        });\n\n      case 'success':\n        return _extends({}, state, {\n          data: action.data,\n          dataUpdateCount: state.dataUpdateCount + 1,\n          dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n          error: null,\n          fetchFailureCount: 0,\n          isFetching: false,\n          isInvalidated: false,\n          isPaused: false,\n          status: 'success'\n        });\n\n      case 'error':\n        var error = action.error;\n\n        if (isCancelledError(error) && error.revert && this.revertState) {\n          return _extends({}, this.revertState);\n        }\n\n        return _extends({}, state, {\n          error: error,\n          errorUpdateCount: state.errorUpdateCount + 1,\n          errorUpdatedAt: Date.now(),\n          fetchFailureCount: state.fetchFailureCount + 1,\n          isFetching: false,\n          isPaused: false,\n          status: 'error'\n        });\n\n      case 'invalidate':\n        return _extends({}, state, {\n          isInvalidated: true\n        });\n\n      case 'setState':\n        return _extends({}, state, action.state);\n\n      default:\n        return state;\n    }\n  };\n\n  return Query;\n}();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils';\nimport { Query } from './query';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable';\n// CLASS\nexport var QueryCache = /*#__PURE__*/function (_Subscribable) {\n  _inheritsLoose(QueryCache, _Subscribable);\n\n  function QueryCache(config) {\n    var _this;\n\n    _this = _Subscribable.call(this) || this;\n    _this.config = config || {};\n    _this.queries = [];\n    _this.queriesMap = {};\n    return _this;\n  }\n\n  var _proto = QueryCache.prototype;\n\n  _proto.build = function build(client, options, state) {\n    var _options$queryHash;\n\n    var queryKey = options.queryKey;\n    var queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);\n    var query = this.get(queryHash);\n\n    if (!query) {\n      query = new Query({\n        cache: this,\n        queryKey: queryKey,\n        queryHash: queryHash,\n        options: client.defaultQueryOptions(options),\n        state: state,\n        defaultOptions: client.getQueryDefaults(queryKey),\n        meta: options.meta\n      });\n      this.add(query);\n    }\n\n    return query;\n  };\n\n  _proto.add = function add(query) {\n    if (!this.queriesMap[query.queryHash]) {\n      this.queriesMap[query.queryHash] = query;\n      this.queries.push(query);\n      this.notify({\n        type: 'queryAdded',\n        query: query\n      });\n    }\n  };\n\n  _proto.remove = function remove(query) {\n    var queryInMap = this.queriesMap[query.queryHash];\n\n    if (queryInMap) {\n      query.destroy();\n      this.queries = this.queries.filter(function (x) {\n        return x !== query;\n      });\n\n      if (queryInMap === query) {\n        delete this.queriesMap[query.queryHash];\n      }\n\n      this.notify({\n        type: 'queryRemoved',\n        query: query\n      });\n    }\n  };\n\n  _proto.clear = function clear() {\n    var _this2 = this;\n\n    notifyManager.batch(function () {\n      _this2.queries.forEach(function (query) {\n        _this2.remove(query);\n      });\n    });\n  };\n\n  _proto.get = function get(queryHash) {\n    return this.queriesMap[queryHash];\n  };\n\n  _proto.getAll = function getAll() {\n    return this.queries;\n  };\n\n  _proto.find = function find(arg1, arg2) {\n    var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n        filters = _parseFilterArgs[0];\n\n    if (typeof filters.exact === 'undefined') {\n      filters.exact = true;\n    }\n\n    return this.queries.find(function (query) {\n      return matchQuery(filters, query);\n    });\n  };\n\n  _proto.findAll = function findAll(arg1, arg2) {\n    var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n        filters = _parseFilterArgs2[0];\n\n    return Object.keys(filters).length > 0 ? this.queries.filter(function (query) {\n      return matchQuery(filters, query);\n    }) : this.queries;\n  };\n\n  _proto.notify = function notify(event) {\n    var _this3 = this;\n\n    notifyManager.batch(function () {\n      _this3.listeners.forEach(function (listener) {\n        listener(event);\n      });\n    });\n  };\n\n  _proto.onFocus = function onFocus() {\n    var _this4 = this;\n\n    notifyManager.batch(function () {\n      _this4.queries.forEach(function (query) {\n        query.onFocus();\n      });\n    });\n  };\n\n  _proto.onOnline = function onOnline() {\n    var _this5 = this;\n\n    notifyManager.batch(function () {\n      _this5.queries.forEach(function (query) {\n        query.onOnline();\n      });\n    });\n  };\n\n  return QueryCache;\n}(Subscribable);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLogger } from './logger';\nimport { notifyManager } from './notifyManager';\nimport { Retryer } from './retryer';\nimport { noop } from './utils'; // TYPES\n\n// CLASS\nexport var Mutation = /*#__PURE__*/function () {\n  function Mutation(config) {\n    this.options = _extends({}, config.defaultOptions, config.options);\n    this.mutationId = config.mutationId;\n    this.mutationCache = config.mutationCache;\n    this.observers = [];\n    this.state = config.state || getDefaultState();\n    this.meta = config.meta;\n  }\n\n  var _proto = Mutation.prototype;\n\n  _proto.setState = function setState(state) {\n    this.dispatch({\n      type: 'setState',\n      state: state\n    });\n  };\n\n  _proto.addObserver = function addObserver(observer) {\n    if (this.observers.indexOf(observer) === -1) {\n      this.observers.push(observer);\n    }\n  };\n\n  _proto.removeObserver = function removeObserver(observer) {\n    this.observers = this.observers.filter(function (x) {\n      return x !== observer;\n    });\n  };\n\n  _proto.cancel = function cancel() {\n    if (this.retryer) {\n      this.retryer.cancel();\n      return this.retryer.promise.then(noop).catch(noop);\n    }\n\n    return Promise.resolve();\n  };\n\n  _proto.continue = function _continue() {\n    if (this.retryer) {\n      this.retryer.continue();\n      return this.retryer.promise;\n    }\n\n    return this.execute();\n  };\n\n  _proto.execute = function execute() {\n    var _this = this;\n\n    var data;\n    var restored = this.state.status === 'loading';\n    var promise = Promise.resolve();\n\n    if (!restored) {\n      this.dispatch({\n        type: 'loading',\n        variables: this.options.variables\n      });\n      promise = promise.then(function () {\n        // Notify cache callback\n        _this.mutationCache.config.onMutate == null ? void 0 : _this.mutationCache.config.onMutate(_this.state.variables, _this);\n      }).then(function () {\n        return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables);\n      }).then(function (context) {\n        if (context !== _this.state.context) {\n          _this.dispatch({\n            type: 'loading',\n            context: context,\n            variables: _this.state.variables\n          });\n        }\n      });\n    }\n\n    return promise.then(function () {\n      return _this.executeMutation();\n    }).then(function (result) {\n      data = result; // Notify cache callback\n\n      _this.mutationCache.config.onSuccess == null ? void 0 : _this.mutationCache.config.onSuccess(data, _this.state.variables, _this.state.context, _this);\n    }).then(function () {\n      return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context);\n    }).then(function () {\n      return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context);\n    }).then(function () {\n      _this.dispatch({\n        type: 'success',\n        data: data\n      });\n\n      return data;\n    }).catch(function (error) {\n      // Notify cache callback\n      _this.mutationCache.config.onError == null ? void 0 : _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this); // Log error\n\n      getLogger().error(error);\n      return Promise.resolve().then(function () {\n        return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context);\n      }).then(function () {\n        return _this.options.onSettled == null ? void 0 : _this.options.onSettled(undefined, error, _this.state.variables, _this.state.context);\n      }).then(function () {\n        _this.dispatch({\n          type: 'error',\n          error: error\n        });\n\n        throw error;\n      });\n    });\n  };\n\n  _proto.executeMutation = function executeMutation() {\n    var _this2 = this,\n        _this$options$retry;\n\n    this.retryer = new Retryer({\n      fn: function fn() {\n        if (!_this2.options.mutationFn) {\n          return Promise.reject('No mutationFn found');\n        }\n\n        return _this2.options.mutationFn(_this2.state.variables);\n      },\n      onFail: function onFail() {\n        _this2.dispatch({\n          type: 'failed'\n        });\n      },\n      onPause: function onPause() {\n        _this2.dispatch({\n          type: 'pause'\n        });\n      },\n      onContinue: function onContinue() {\n        _this2.dispatch({\n          type: 'continue'\n        });\n      },\n      retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n      retryDelay: this.options.retryDelay\n    });\n    return this.retryer.promise;\n  };\n\n  _proto.dispatch = function dispatch(action) {\n    var _this3 = this;\n\n    this.state = reducer(this.state, action);\n    notifyManager.batch(function () {\n      _this3.observers.forEach(function (observer) {\n        observer.onMutationUpdate(action);\n      });\n\n      _this3.mutationCache.notify(_this3);\n    });\n  };\n\n  return Mutation;\n}();\nexport function getDefaultState() {\n  return {\n    context: undefined,\n    data: undefined,\n    error: null,\n    failureCount: 0,\n    isPaused: false,\n    status: 'idle',\n    variables: undefined\n  };\n}\n\nfunction reducer(state, action) {\n  switch (action.type) {\n    case 'failed':\n      return _extends({}, state, {\n        failureCount: state.failureCount + 1\n      });\n\n    case 'pause':\n      return _extends({}, state, {\n        isPaused: true\n      });\n\n    case 'continue':\n      return _extends({}, state, {\n        isPaused: false\n      });\n\n    case 'loading':\n      return _extends({}, state, {\n        context: action.context,\n        data: undefined,\n        error: null,\n        isPaused: false,\n        status: 'loading',\n        variables: action.variables\n      });\n\n    case 'success':\n      return _extends({}, state, {\n        data: action.data,\n        error: null,\n        status: 'success',\n        isPaused: false\n      });\n\n    case 'error':\n      return _extends({}, state, {\n        data: undefined,\n        error: action.error,\n        failureCount: state.failureCount + 1,\n        isPaused: false,\n        status: 'error'\n      });\n\n    case 'setState':\n      return _extends({}, state, action.state);\n\n    default:\n      return state;\n  }\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { notifyManager } from './notifyManager';\nimport { Mutation } from './mutation';\nimport { matchMutation, noop } from './utils';\nimport { Subscribable } from './subscribable'; // TYPES\n\n// CLASS\nexport var MutationCache = /*#__PURE__*/function (_Subscribable) {\n  _inheritsLoose(MutationCache, _Subscribable);\n\n  function MutationCache(config) {\n    var _this;\n\n    _this = _Subscribable.call(this) || this;\n    _this.config = config || {};\n    _this.mutations = [];\n    _this.mutationId = 0;\n    return _this;\n  }\n\n  var _proto = MutationCache.prototype;\n\n  _proto.build = function build(client, options, state) {\n    var mutation = new Mutation({\n      mutationCache: this,\n      mutationId: ++this.mutationId,\n      options: client.defaultMutationOptions(options),\n      state: state,\n      defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined,\n      meta: options.meta\n    });\n    this.add(mutation);\n    return mutation;\n  };\n\n  _proto.add = function add(mutation) {\n    this.mutations.push(mutation);\n    this.notify(mutation);\n  };\n\n  _proto.remove = function remove(mutation) {\n    this.mutations = this.mutations.filter(function (x) {\n      return x !== mutation;\n    });\n    mutation.cancel();\n    this.notify(mutation);\n  };\n\n  _proto.clear = function clear() {\n    var _this2 = this;\n\n    notifyManager.batch(function () {\n      _this2.mutations.forEach(function (mutation) {\n        _this2.remove(mutation);\n      });\n    });\n  };\n\n  _proto.getAll = function getAll() {\n    return this.mutations;\n  };\n\n  _proto.find = function find(filters) {\n    if (typeof filters.exact === 'undefined') {\n      filters.exact = true;\n    }\n\n    return this.mutations.find(function (mutation) {\n      return matchMutation(filters, mutation);\n    });\n  };\n\n  _proto.findAll = function findAll(filters) {\n    return this.mutations.filter(function (mutation) {\n      return matchMutation(filters, mutation);\n    });\n  };\n\n  _proto.notify = function notify(mutation) {\n    var _this3 = this;\n\n    notifyManager.batch(function () {\n      _this3.listeners.forEach(function (listener) {\n        listener(mutation);\n      });\n    });\n  };\n\n  _proto.onFocus = function onFocus() {\n    this.resumePausedMutations();\n  };\n\n  _proto.onOnline = function onOnline() {\n    this.resumePausedMutations();\n  };\n\n  _proto.resumePausedMutations = function resumePausedMutations() {\n    var pausedMutations = this.mutations.filter(function (x) {\n      return x.state.isPaused;\n    });\n    return notifyManager.batch(function () {\n      return pausedMutations.reduce(function (promise, mutation) {\n        return promise.then(function () {\n          return mutation.continue().catch(noop);\n        });\n      }, Promise.resolve());\n    });\n  };\n\n  return MutationCache;\n}(Subscribable);","import { isCancelable } from './retryer';\nimport { getAbortController } from './utils';\nexport function infiniteQueryBehavior() {\n  return {\n    onFetch: function onFetch(context) {\n      context.fetchFn = function () {\n        var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n\n        var refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n        var fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n        var pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n        var isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';\n        var isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';\n        var oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n        var oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n        var abortController = getAbortController();\n        var abortSignal = abortController == null ? void 0 : abortController.signal;\n        var newPageParams = oldPageParams;\n        var cancelled = false; // Get query function\n\n        var queryFn = context.options.queryFn || function () {\n          return Promise.reject('Missing queryFn');\n        };\n\n        var buildNewPages = function buildNewPages(pages, param, page, previous) {\n          newPageParams = previous ? [param].concat(newPageParams) : [].concat(newPageParams, [param]);\n          return previous ? [page].concat(pages) : [].concat(pages, [page]);\n        }; // Create function to fetch a page\n\n\n        var fetchPage = function fetchPage(pages, manual, param, previous) {\n          if (cancelled) {\n            return Promise.reject('Cancelled');\n          }\n\n          if (typeof param === 'undefined' && !manual && pages.length) {\n            return Promise.resolve(pages);\n          }\n\n          var queryFnContext = {\n            queryKey: context.queryKey,\n            signal: abortSignal,\n            pageParam: param,\n            meta: context.meta\n          };\n          var queryFnResult = queryFn(queryFnContext);\n          var promise = Promise.resolve(queryFnResult).then(function (page) {\n            return buildNewPages(pages, param, page, previous);\n          });\n\n          if (isCancelable(queryFnResult)) {\n            var promiseAsAny = promise;\n            promiseAsAny.cancel = queryFnResult.cancel;\n          }\n\n          return promise;\n        };\n\n        var promise; // Fetch first page?\n\n        if (!oldPages.length) {\n          promise = fetchPage([]);\n        } // Fetch next page?\n        else if (isFetchingNextPage) {\n            var manual = typeof pageParam !== 'undefined';\n            var param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n            promise = fetchPage(oldPages, manual, param);\n          } // Fetch previous page?\n          else if (isFetchingPreviousPage) {\n              var _manual = typeof pageParam !== 'undefined';\n\n              var _param = _manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n\n              promise = fetchPage(oldPages, _manual, _param, true);\n            } // Refetch pages\n            else {\n                (function () {\n                  newPageParams = [];\n                  var manual = typeof context.options.getNextPageParam === 'undefined';\n                  var shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page\n\n                  promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages\n\n                  var _loop = function _loop(i) {\n                    promise = promise.then(function (pages) {\n                      var shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n\n                      if (shouldFetchNextPage) {\n                        var _param2 = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n\n                        return fetchPage(pages, manual, _param2);\n                      }\n\n                      return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n                    });\n                  };\n\n                  for (var i = 1; i < oldPages.length; i++) {\n                    _loop(i);\n                  }\n                })();\n              }\n\n        var finalPromise = promise.then(function (pages) {\n          return {\n            pages: pages,\n            pageParams: newPageParams\n          };\n        });\n        var finalPromiseAsAny = finalPromise;\n\n        finalPromiseAsAny.cancel = function () {\n          cancelled = true;\n          abortController == null ? void 0 : abortController.abort();\n\n          if (isCancelable(promise)) {\n            promise.cancel();\n          }\n        };\n\n        return finalPromise;\n      };\n    }\n  };\n}\nexport function getNextPageParam(options, pages) {\n  return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nexport function getPreviousPageParam(options, pages) {\n  return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasNextPage(options, pages) {\n  if (options.getNextPageParam && Array.isArray(pages)) {\n    var nextPageParam = getNextPageParam(options, pages);\n    return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;\n  }\n}\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasPreviousPage(options, pages) {\n  if (options.getPreviousPageParam && Array.isArray(pages)) {\n    var previousPageParam = getPreviousPageParam(options, pages);\n    return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;\n  }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { hashQueryKey, noop, parseFilterArgs, parseQueryArgs, partialMatchKey, hashQueryKeyByOptions } from './utils';\nimport { QueryCache } from './queryCache';\nimport { MutationCache } from './mutationCache';\nimport { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { notifyManager } from './notifyManager';\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior';\n// CLASS\nexport var QueryClient = /*#__PURE__*/function () {\n  function QueryClient(config) {\n    if (config === void 0) {\n      config = {};\n    }\n\n    this.queryCache = config.queryCache || new QueryCache();\n    this.mutationCache = config.mutationCache || new MutationCache();\n    this.defaultOptions = config.defaultOptions || {};\n    this.queryDefaults = [];\n    this.mutationDefaults = [];\n  }\n\n  var _proto = QueryClient.prototype;\n\n  _proto.mount = function mount() {\n    var _this = this;\n\n    this.unsubscribeFocus = focusManager.subscribe(function () {\n      if (focusManager.isFocused() && onlineManager.isOnline()) {\n        _this.mutationCache.onFocus();\n\n        _this.queryCache.onFocus();\n      }\n    });\n    this.unsubscribeOnline = onlineManager.subscribe(function () {\n      if (focusManager.isFocused() && onlineManager.isOnline()) {\n        _this.mutationCache.onOnline();\n\n        _this.queryCache.onOnline();\n      }\n    });\n  };\n\n  _proto.unmount = function unmount() {\n    var _this$unsubscribeFocu, _this$unsubscribeOnli;\n\n    (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n    (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n  };\n\n  _proto.isFetching = function isFetching(arg1, arg2) {\n    var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n        filters = _parseFilterArgs[0];\n\n    filters.fetching = true;\n    return this.queryCache.findAll(filters).length;\n  };\n\n  _proto.isMutating = function isMutating(filters) {\n    return this.mutationCache.findAll(_extends({}, filters, {\n      fetching: true\n    })).length;\n  };\n\n  _proto.getQueryData = function getQueryData(queryKey, filters) {\n    var _this$queryCache$find;\n\n    return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n  };\n\n  _proto.getQueriesData = function getQueriesData(queryKeyOrFilters) {\n    return this.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref) {\n      var queryKey = _ref.queryKey,\n          state = _ref.state;\n      var data = state.data;\n      return [queryKey, data];\n    });\n  };\n\n  _proto.setQueryData = function setQueryData(queryKey, updater, options) {\n    var parsedOptions = parseQueryArgs(queryKey);\n    var defaultedOptions = this.defaultQueryOptions(parsedOptions);\n    return this.queryCache.build(this, defaultedOptions).setData(updater, options);\n  };\n\n  _proto.setQueriesData = function setQueriesData(queryKeyOrFilters, updater, options) {\n    var _this2 = this;\n\n    return notifyManager.batch(function () {\n      return _this2.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref2) {\n        var queryKey = _ref2.queryKey;\n        return [queryKey, _this2.setQueryData(queryKey, updater, options)];\n      });\n    });\n  };\n\n  _proto.getQueryState = function getQueryState(queryKey, filters) {\n    var _this$queryCache$find2;\n\n    return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n  };\n\n  _proto.removeQueries = function removeQueries(arg1, arg2) {\n    var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n        filters = _parseFilterArgs2[0];\n\n    var queryCache = this.queryCache;\n    notifyManager.batch(function () {\n      queryCache.findAll(filters).forEach(function (query) {\n        queryCache.remove(query);\n      });\n    });\n  };\n\n  _proto.resetQueries = function resetQueries(arg1, arg2, arg3) {\n    var _this3 = this;\n\n    var _parseFilterArgs3 = parseFilterArgs(arg1, arg2, arg3),\n        filters = _parseFilterArgs3[0],\n        options = _parseFilterArgs3[1];\n\n    var queryCache = this.queryCache;\n\n    var refetchFilters = _extends({}, filters, {\n      active: true\n    });\n\n    return notifyManager.batch(function () {\n      queryCache.findAll(filters).forEach(function (query) {\n        query.reset();\n      });\n      return _this3.refetchQueries(refetchFilters, options);\n    });\n  };\n\n  _proto.cancelQueries = function cancelQueries(arg1, arg2, arg3) {\n    var _this4 = this;\n\n    var _parseFilterArgs4 = parseFilterArgs(arg1, arg2, arg3),\n        filters = _parseFilterArgs4[0],\n        _parseFilterArgs4$ = _parseFilterArgs4[1],\n        cancelOptions = _parseFilterArgs4$ === void 0 ? {} : _parseFilterArgs4$;\n\n    if (typeof cancelOptions.revert === 'undefined') {\n      cancelOptions.revert = true;\n    }\n\n    var promises = notifyManager.batch(function () {\n      return _this4.queryCache.findAll(filters).map(function (query) {\n        return query.cancel(cancelOptions);\n      });\n    });\n    return Promise.all(promises).then(noop).catch(noop);\n  };\n\n  _proto.invalidateQueries = function invalidateQueries(arg1, arg2, arg3) {\n    var _ref3,\n        _filters$refetchActiv,\n        _filters$refetchInact,\n        _this5 = this;\n\n    var _parseFilterArgs5 = parseFilterArgs(arg1, arg2, arg3),\n        filters = _parseFilterArgs5[0],\n        options = _parseFilterArgs5[1];\n\n    var refetchFilters = _extends({}, filters, {\n      // if filters.refetchActive is not provided and filters.active is explicitly false,\n      // e.g. invalidateQueries({ active: false }), we don't want to refetch active queries\n      active: (_ref3 = (_filters$refetchActiv = filters.refetchActive) != null ? _filters$refetchActiv : filters.active) != null ? _ref3 : true,\n      inactive: (_filters$refetchInact = filters.refetchInactive) != null ? _filters$refetchInact : false\n    });\n\n    return notifyManager.batch(function () {\n      _this5.queryCache.findAll(filters).forEach(function (query) {\n        query.invalidate();\n      });\n\n      return _this5.refetchQueries(refetchFilters, options);\n    });\n  };\n\n  _proto.refetchQueries = function refetchQueries(arg1, arg2, arg3) {\n    var _this6 = this;\n\n    var _parseFilterArgs6 = parseFilterArgs(arg1, arg2, arg3),\n        filters = _parseFilterArgs6[0],\n        options = _parseFilterArgs6[1];\n\n    var promises = notifyManager.batch(function () {\n      return _this6.queryCache.findAll(filters).map(function (query) {\n        return query.fetch(undefined, _extends({}, options, {\n          meta: {\n            refetchPage: filters == null ? void 0 : filters.refetchPage\n          }\n        }));\n      });\n    });\n    var promise = Promise.all(promises).then(noop);\n\n    if (!(options == null ? void 0 : options.throwOnError)) {\n      promise = promise.catch(noop);\n    }\n\n    return promise;\n  };\n\n  _proto.fetchQuery = function fetchQuery(arg1, arg2, arg3) {\n    var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n    var defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652\n\n    if (typeof defaultedOptions.retry === 'undefined') {\n      defaultedOptions.retry = false;\n    }\n\n    var query = this.queryCache.build(this, defaultedOptions);\n    return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n  };\n\n  _proto.prefetchQuery = function prefetchQuery(arg1, arg2, arg3) {\n    return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);\n  };\n\n  _proto.fetchInfiniteQuery = function fetchInfiniteQuery(arg1, arg2, arg3) {\n    var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n    parsedOptions.behavior = infiniteQueryBehavior();\n    return this.fetchQuery(parsedOptions);\n  };\n\n  _proto.prefetchInfiniteQuery = function prefetchInfiniteQuery(arg1, arg2, arg3) {\n    return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);\n  };\n\n  _proto.cancelMutations = function cancelMutations() {\n    var _this7 = this;\n\n    var promises = notifyManager.batch(function () {\n      return _this7.mutationCache.getAll().map(function (mutation) {\n        return mutation.cancel();\n      });\n    });\n    return Promise.all(promises).then(noop).catch(noop);\n  };\n\n  _proto.resumePausedMutations = function resumePausedMutations() {\n    return this.getMutationCache().resumePausedMutations();\n  };\n\n  _proto.executeMutation = function executeMutation(options) {\n    return this.mutationCache.build(this, options).execute();\n  };\n\n  _proto.getQueryCache = function getQueryCache() {\n    return this.queryCache;\n  };\n\n  _proto.getMutationCache = function getMutationCache() {\n    return this.mutationCache;\n  };\n\n  _proto.getDefaultOptions = function getDefaultOptions() {\n    return this.defaultOptions;\n  };\n\n  _proto.setDefaultOptions = function setDefaultOptions(options) {\n    this.defaultOptions = options;\n  };\n\n  _proto.setQueryDefaults = function setQueryDefaults(queryKey, options) {\n    var result = this.queryDefaults.find(function (x) {\n      return hashQueryKey(queryKey) === hashQueryKey(x.queryKey);\n    });\n\n    if (result) {\n      result.defaultOptions = options;\n    } else {\n      this.queryDefaults.push({\n        queryKey: queryKey,\n        defaultOptions: options\n      });\n    }\n  };\n\n  _proto.getQueryDefaults = function getQueryDefaults(queryKey) {\n    var _this$queryDefaults$f;\n\n    return queryKey ? (_this$queryDefaults$f = this.queryDefaults.find(function (x) {\n      return partialMatchKey(queryKey, x.queryKey);\n    })) == null ? void 0 : _this$queryDefaults$f.defaultOptions : undefined;\n  };\n\n  _proto.setMutationDefaults = function setMutationDefaults(mutationKey, options) {\n    var result = this.mutationDefaults.find(function (x) {\n      return hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey);\n    });\n\n    if (result) {\n      result.defaultOptions = options;\n    } else {\n      this.mutationDefaults.push({\n        mutationKey: mutationKey,\n        defaultOptions: options\n      });\n    }\n  };\n\n  _proto.getMutationDefaults = function getMutationDefaults(mutationKey) {\n    var _this$mutationDefault;\n\n    return mutationKey ? (_this$mutationDefault = this.mutationDefaults.find(function (x) {\n      return partialMatchKey(mutationKey, x.mutationKey);\n    })) == null ? void 0 : _this$mutationDefault.defaultOptions : undefined;\n  };\n\n  _proto.defaultQueryOptions = function defaultQueryOptions(options) {\n    if (options == null ? void 0 : options._defaulted) {\n      return options;\n    }\n\n    var defaultedOptions = _extends({}, this.defaultOptions.queries, this.getQueryDefaults(options == null ? void 0 : options.queryKey), options, {\n      _defaulted: true\n    });\n\n    if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n      defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n    }\n\n    return defaultedOptions;\n  };\n\n  _proto.defaultQueryObserverOptions = function defaultQueryObserverOptions(options) {\n    return this.defaultQueryOptions(options);\n  };\n\n  _proto.defaultMutationOptions = function defaultMutationOptions(options) {\n    if (options == null ? void 0 : options._defaulted) {\n      return options;\n    }\n\n    return _extends({}, this.defaultOptions.mutations, this.getMutationDefaults(options == null ? void 0 : options.mutationKey), options, {\n      _defaulted: true\n    });\n  };\n\n  _proto.clear = function clear() {\n    this.queryCache.clear();\n    this.mutationCache.clear();\n  };\n\n  return QueryClient;\n}();","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { isServer, isValidTimeout, noop, replaceEqualDeep, shallowEqualObjects, timeUntilStale } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { focusManager } from './focusManager';\nimport { Subscribable } from './subscribable';\nimport { getLogger } from './logger';\nimport { isCancelledError } from './retryer';\nexport var QueryObserver = /*#__PURE__*/function (_Subscribable) {\n  _inheritsLoose(QueryObserver, _Subscribable);\n\n  function QueryObserver(client, options) {\n    var _this;\n\n    _this = _Subscribable.call(this) || this;\n    _this.client = client;\n    _this.options = options;\n    _this.trackedProps = [];\n    _this.selectError = null;\n\n    _this.bindMethods();\n\n    _this.setOptions(options);\n\n    return _this;\n  }\n\n  var _proto = QueryObserver.prototype;\n\n  _proto.bindMethods = function bindMethods() {\n    this.remove = this.remove.bind(this);\n    this.refetch = this.refetch.bind(this);\n  };\n\n  _proto.onSubscribe = function onSubscribe() {\n    if (this.listeners.length === 1) {\n      this.currentQuery.addObserver(this);\n\n      if (shouldFetchOnMount(this.currentQuery, this.options)) {\n        this.executeFetch();\n      }\n\n      this.updateTimers();\n    }\n  };\n\n  _proto.onUnsubscribe = function onUnsubscribe() {\n    if (!this.listeners.length) {\n      this.destroy();\n    }\n  };\n\n  _proto.shouldFetchOnReconnect = function shouldFetchOnReconnect() {\n    return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);\n  };\n\n  _proto.shouldFetchOnWindowFocus = function shouldFetchOnWindowFocus() {\n    return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);\n  };\n\n  _proto.destroy = function destroy() {\n    this.listeners = [];\n    this.clearTimers();\n    this.currentQuery.removeObserver(this);\n  };\n\n  _proto.setOptions = function setOptions(options, notifyOptions) {\n    var prevOptions = this.options;\n    var prevQuery = this.currentQuery;\n    this.options = this.client.defaultQueryObserverOptions(options);\n\n    if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {\n      throw new Error('Expected enabled to be a boolean');\n    } // Keep previous query key if the user does not supply one\n\n\n    if (!this.options.queryKey) {\n      this.options.queryKey = prevOptions.queryKey;\n    }\n\n    this.updateQuery();\n    var mounted = this.hasListeners(); // Fetch if there are subscribers\n\n    if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n      this.executeFetch();\n    } // Update result\n\n\n    this.updateResult(notifyOptions); // Update stale interval if needed\n\n    if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n      this.updateStaleTimeout();\n    }\n\n    var nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed\n\n    if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {\n      this.updateRefetchInterval(nextRefetchInterval);\n    }\n  };\n\n  _proto.getOptimisticResult = function getOptimisticResult(options) {\n    var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n    var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n    return this.createResult(query, defaultedOptions);\n  };\n\n  _proto.getCurrentResult = function getCurrentResult() {\n    return this.currentResult;\n  };\n\n  _proto.trackResult = function trackResult(result, defaultedOptions) {\n    var _this2 = this;\n\n    var trackedResult = {};\n\n    var trackProp = function trackProp(key) {\n      if (!_this2.trackedProps.includes(key)) {\n        _this2.trackedProps.push(key);\n      }\n    };\n\n    Object.keys(result).forEach(function (key) {\n      Object.defineProperty(trackedResult, key, {\n        configurable: false,\n        enumerable: true,\n        get: function get() {\n          trackProp(key);\n          return result[key];\n        }\n      });\n    });\n\n    if (defaultedOptions.useErrorBoundary || defaultedOptions.suspense) {\n      trackProp('error');\n    }\n\n    return trackedResult;\n  };\n\n  _proto.getNextResult = function getNextResult(options) {\n    var _this3 = this;\n\n    return new Promise(function (resolve, reject) {\n      var unsubscribe = _this3.subscribe(function (result) {\n        if (!result.isFetching) {\n          unsubscribe();\n\n          if (result.isError && (options == null ? void 0 : options.throwOnError)) {\n            reject(result.error);\n          } else {\n            resolve(result);\n          }\n        }\n      });\n    });\n  };\n\n  _proto.getCurrentQuery = function getCurrentQuery() {\n    return this.currentQuery;\n  };\n\n  _proto.remove = function remove() {\n    this.client.getQueryCache().remove(this.currentQuery);\n  };\n\n  _proto.refetch = function refetch(options) {\n    return this.fetch(_extends({}, options, {\n      meta: {\n        refetchPage: options == null ? void 0 : options.refetchPage\n      }\n    }));\n  };\n\n  _proto.fetchOptimistic = function fetchOptimistic(options) {\n    var _this4 = this;\n\n    var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n    var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n    return query.fetch().then(function () {\n      return _this4.createResult(query, defaultedOptions);\n    });\n  };\n\n  _proto.fetch = function fetch(fetchOptions) {\n    var _this5 = this;\n\n    return this.executeFetch(fetchOptions).then(function () {\n      _this5.updateResult();\n\n      return _this5.currentResult;\n    });\n  };\n\n  _proto.executeFetch = function executeFetch(fetchOptions) {\n    // Make sure we reference the latest query as the current one might have been removed\n    this.updateQuery(); // Fetch\n\n    var promise = this.currentQuery.fetch(this.options, fetchOptions);\n\n    if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) {\n      promise = promise.catch(noop);\n    }\n\n    return promise;\n  };\n\n  _proto.updateStaleTimeout = function updateStaleTimeout() {\n    var _this6 = this;\n\n    this.clearStaleTimeout();\n\n    if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n      return;\n    }\n\n    var time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.\n    // To mitigate this issue we always add 1 ms to the timeout.\n\n    var timeout = time + 1;\n    this.staleTimeoutId = setTimeout(function () {\n      if (!_this6.currentResult.isStale) {\n        _this6.updateResult();\n      }\n    }, timeout);\n  };\n\n  _proto.computeRefetchInterval = function computeRefetchInterval() {\n    var _this$options$refetch;\n\n    return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;\n  };\n\n  _proto.updateRefetchInterval = function updateRefetchInterval(nextInterval) {\n    var _this7 = this;\n\n    this.clearRefetchInterval();\n    this.currentRefetchInterval = nextInterval;\n\n    if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {\n      return;\n    }\n\n    this.refetchIntervalId = setInterval(function () {\n      if (_this7.options.refetchIntervalInBackground || focusManager.isFocused()) {\n        _this7.executeFetch();\n      }\n    }, this.currentRefetchInterval);\n  };\n\n  _proto.updateTimers = function updateTimers() {\n    this.updateStaleTimeout();\n    this.updateRefetchInterval(this.computeRefetchInterval());\n  };\n\n  _proto.clearTimers = function clearTimers() {\n    this.clearStaleTimeout();\n    this.clearRefetchInterval();\n  };\n\n  _proto.clearStaleTimeout = function clearStaleTimeout() {\n    if (this.staleTimeoutId) {\n      clearTimeout(this.staleTimeoutId);\n      this.staleTimeoutId = undefined;\n    }\n  };\n\n  _proto.clearRefetchInterval = function clearRefetchInterval() {\n    if (this.refetchIntervalId) {\n      clearInterval(this.refetchIntervalId);\n      this.refetchIntervalId = undefined;\n    }\n  };\n\n  _proto.createResult = function createResult(query, options) {\n    var prevQuery = this.currentQuery;\n    var prevOptions = this.options;\n    var prevResult = this.currentResult;\n    var prevResultState = this.currentResultState;\n    var prevResultOptions = this.currentResultOptions;\n    var queryChange = query !== prevQuery;\n    var queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n    var prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n    var state = query.state;\n    var dataUpdatedAt = state.dataUpdatedAt,\n        error = state.error,\n        errorUpdatedAt = state.errorUpdatedAt,\n        isFetching = state.isFetching,\n        status = state.status;\n    var isPreviousData = false;\n    var isPlaceholderData = false;\n    var data; // Optimistically set result in fetching state if needed\n\n    if (options.optimisticResults) {\n      var mounted = this.hasListeners();\n      var fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n      var fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\n      if (fetchOnMount || fetchOptionally) {\n        isFetching = true;\n\n        if (!dataUpdatedAt) {\n          status = 'loading';\n        }\n      }\n    } // Keep previous data if needed\n\n\n    if (options.keepPreviousData && !state.dataUpdateCount && (prevQueryResult == null ? void 0 : prevQueryResult.isSuccess) && status !== 'error') {\n      data = prevQueryResult.data;\n      dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n      status = prevQueryResult.status;\n      isPreviousData = true;\n    } // Select data if needed\n    else if (options.select && typeof state.data !== 'undefined') {\n        // Memoize select result\n        if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {\n          data = this.selectResult;\n        } else {\n          try {\n            this.selectFn = options.select;\n            data = options.select(state.data);\n\n            if (options.structuralSharing !== false) {\n              data = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, data);\n            }\n\n            this.selectResult = data;\n            this.selectError = null;\n          } catch (selectError) {\n            getLogger().error(selectError);\n            this.selectError = selectError;\n          }\n        }\n      } // Use query data\n      else {\n          data = state.data;\n        } // Show placeholder data if needed\n\n\n    if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && (status === 'loading' || status === 'idle')) {\n      var placeholderData; // Memoize placeholder data\n\n      if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n        placeholderData = prevResult.data;\n      } else {\n        placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;\n\n        if (options.select && typeof placeholderData !== 'undefined') {\n          try {\n            placeholderData = options.select(placeholderData);\n\n            if (options.structuralSharing !== false) {\n              placeholderData = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, placeholderData);\n            }\n\n            this.selectError = null;\n          } catch (selectError) {\n            getLogger().error(selectError);\n            this.selectError = selectError;\n          }\n        }\n      }\n\n      if (typeof placeholderData !== 'undefined') {\n        status = 'success';\n        data = placeholderData;\n        isPlaceholderData = true;\n      }\n    }\n\n    if (this.selectError) {\n      error = this.selectError;\n      data = this.selectResult;\n      errorUpdatedAt = Date.now();\n      status = 'error';\n    }\n\n    var result = {\n      status: status,\n      isLoading: status === 'loading',\n      isSuccess: status === 'success',\n      isError: status === 'error',\n      isIdle: status === 'idle',\n      data: data,\n      dataUpdatedAt: dataUpdatedAt,\n      error: error,\n      errorUpdatedAt: errorUpdatedAt,\n      failureCount: state.fetchFailureCount,\n      errorUpdateCount: state.errorUpdateCount,\n      isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n      isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n      isFetching: isFetching,\n      isRefetching: isFetching && status !== 'loading',\n      isLoadingError: status === 'error' && state.dataUpdatedAt === 0,\n      isPlaceholderData: isPlaceholderData,\n      isPreviousData: isPreviousData,\n      isRefetchError: status === 'error' && state.dataUpdatedAt !== 0,\n      isStale: isStale(query, options),\n      refetch: this.refetch,\n      remove: this.remove\n    };\n    return result;\n  };\n\n  _proto.shouldNotifyListeners = function shouldNotifyListeners(result, prevResult) {\n    if (!prevResult) {\n      return true;\n    }\n\n    var _this$options = this.options,\n        notifyOnChangeProps = _this$options.notifyOnChangeProps,\n        notifyOnChangePropsExclusions = _this$options.notifyOnChangePropsExclusions;\n\n    if (!notifyOnChangeProps && !notifyOnChangePropsExclusions) {\n      return true;\n    }\n\n    if (notifyOnChangeProps === 'tracked' && !this.trackedProps.length) {\n      return true;\n    }\n\n    var includedProps = notifyOnChangeProps === 'tracked' ? this.trackedProps : notifyOnChangeProps;\n    return Object.keys(result).some(function (key) {\n      var typedKey = key;\n      var changed = result[typedKey] !== prevResult[typedKey];\n      var isIncluded = includedProps == null ? void 0 : includedProps.some(function (x) {\n        return x === key;\n      });\n      var isExcluded = notifyOnChangePropsExclusions == null ? void 0 : notifyOnChangePropsExclusions.some(function (x) {\n        return x === key;\n      });\n      return changed && !isExcluded && (!includedProps || isIncluded);\n    });\n  };\n\n  _proto.updateResult = function updateResult(notifyOptions) {\n    var prevResult = this.currentResult;\n    this.currentResult = this.createResult(this.currentQuery, this.options);\n    this.currentResultState = this.currentQuery.state;\n    this.currentResultOptions = this.options; // Only notify if something has changed\n\n    if (shallowEqualObjects(this.currentResult, prevResult)) {\n      return;\n    } // Determine which callbacks to trigger\n\n\n    var defaultNotifyOptions = {\n      cache: true\n    };\n\n    if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && this.shouldNotifyListeners(this.currentResult, prevResult)) {\n      defaultNotifyOptions.listeners = true;\n    }\n\n    this.notify(_extends({}, defaultNotifyOptions, notifyOptions));\n  };\n\n  _proto.updateQuery = function updateQuery() {\n    var query = this.client.getQueryCache().build(this.client, this.options);\n\n    if (query === this.currentQuery) {\n      return;\n    }\n\n    var prevQuery = this.currentQuery;\n    this.currentQuery = query;\n    this.currentQueryInitialState = query.state;\n    this.previousQueryResult = this.currentResult;\n\n    if (this.hasListeners()) {\n      prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n      query.addObserver(this);\n    }\n  };\n\n  _proto.onQueryUpdate = function onQueryUpdate(action) {\n    var notifyOptions = {};\n\n    if (action.type === 'success') {\n      notifyOptions.onSuccess = true;\n    } else if (action.type === 'error' && !isCancelledError(action.error)) {\n      notifyOptions.onError = true;\n    }\n\n    this.updateResult(notifyOptions);\n\n    if (this.hasListeners()) {\n      this.updateTimers();\n    }\n  };\n\n  _proto.notify = function notify(notifyOptions) {\n    var _this8 = this;\n\n    notifyManager.batch(function () {\n      // First trigger the configuration callbacks\n      if (notifyOptions.onSuccess) {\n        _this8.options.onSuccess == null ? void 0 : _this8.options.onSuccess(_this8.currentResult.data);\n        _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(_this8.currentResult.data, null);\n      } else if (notifyOptions.onError) {\n        _this8.options.onError == null ? void 0 : _this8.options.onError(_this8.currentResult.error);\n        _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(undefined, _this8.currentResult.error);\n      } // Then trigger the listeners\n\n\n      if (notifyOptions.listeners) {\n        _this8.listeners.forEach(function (listener) {\n          listener(_this8.currentResult);\n        });\n      } // Then the cache listeners\n\n\n      if (notifyOptions.cache) {\n        _this8.client.getQueryCache().notify({\n          query: _this8.currentQuery,\n          type: 'observerResultsUpdated'\n        });\n      }\n    });\n  };\n\n  return QueryObserver;\n}(Subscribable);\n\nfunction shouldLoadOnMount(query, options) {\n  return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);\n}\n\nfunction shouldFetchOnMount(query, options) {\n  return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\n\nfunction shouldFetchOn(query, options, field) {\n  if (options.enabled !== false) {\n    var value = typeof field === 'function' ? field(query) : field;\n    return value === 'always' || value !== false && isStale(query, options);\n  }\n\n  return false;\n}\n\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n  return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);\n}\n\nfunction isStale(query, options) {\n  return query.isStaleByTime(options.staleTime);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { getDefaultState } from './mutation';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable';\n// CLASS\nexport var MutationObserver = /*#__PURE__*/function (_Subscribable) {\n  _inheritsLoose(MutationObserver, _Subscribable);\n\n  function MutationObserver(client, options) {\n    var _this;\n\n    _this = _Subscribable.call(this) || this;\n    _this.client = client;\n\n    _this.setOptions(options);\n\n    _this.bindMethods();\n\n    _this.updateResult();\n\n    return _this;\n  }\n\n  var _proto = MutationObserver.prototype;\n\n  _proto.bindMethods = function bindMethods() {\n    this.mutate = this.mutate.bind(this);\n    this.reset = this.reset.bind(this);\n  };\n\n  _proto.setOptions = function setOptions(options) {\n    this.options = this.client.defaultMutationOptions(options);\n  };\n\n  _proto.onUnsubscribe = function onUnsubscribe() {\n    if (!this.listeners.length) {\n      var _this$currentMutation;\n\n      (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.removeObserver(this);\n    }\n  };\n\n  _proto.onMutationUpdate = function onMutationUpdate(action) {\n    this.updateResult(); // Determine which callbacks to trigger\n\n    var notifyOptions = {\n      listeners: true\n    };\n\n    if (action.type === 'success') {\n      notifyOptions.onSuccess = true;\n    } else if (action.type === 'error') {\n      notifyOptions.onError = true;\n    }\n\n    this.notify(notifyOptions);\n  };\n\n  _proto.getCurrentResult = function getCurrentResult() {\n    return this.currentResult;\n  };\n\n  _proto.reset = function reset() {\n    this.currentMutation = undefined;\n    this.updateResult();\n    this.notify({\n      listeners: true\n    });\n  };\n\n  _proto.mutate = function mutate(variables, options) {\n    this.mutateOptions = options;\n\n    if (this.currentMutation) {\n      this.currentMutation.removeObserver(this);\n    }\n\n    this.currentMutation = this.client.getMutationCache().build(this.client, _extends({}, this.options, {\n      variables: typeof variables !== 'undefined' ? variables : this.options.variables\n    }));\n    this.currentMutation.addObserver(this);\n    return this.currentMutation.execute();\n  };\n\n  _proto.updateResult = function updateResult() {\n    var state = this.currentMutation ? this.currentMutation.state : getDefaultState();\n\n    var result = _extends({}, state, {\n      isLoading: state.status === 'loading',\n      isSuccess: state.status === 'success',\n      isError: state.status === 'error',\n      isIdle: state.status === 'idle',\n      mutate: this.mutate,\n      reset: this.reset\n    });\n\n    this.currentResult = result;\n  };\n\n  _proto.notify = function notify(options) {\n    var _this2 = this;\n\n    notifyManager.batch(function () {\n      // First trigger the mutate callbacks\n      if (_this2.mutateOptions) {\n        if (options.onSuccess) {\n          _this2.mutateOptions.onSuccess == null ? void 0 : _this2.mutateOptions.onSuccess(_this2.currentResult.data, _this2.currentResult.variables, _this2.currentResult.context);\n          _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(_this2.currentResult.data, null, _this2.currentResult.variables, _this2.currentResult.context);\n        } else if (options.onError) {\n          _this2.mutateOptions.onError == null ? void 0 : _this2.mutateOptions.onError(_this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);\n          _this2.mutateOptions.onSettled == null ? void 0 : _this2.mutateOptions.onSettled(undefined, _this2.currentResult.error, _this2.currentResult.variables, _this2.currentResult.context);\n        }\n      } // Then trigger the listeners\n\n\n      if (options.listeners) {\n        _this2.listeners.forEach(function (listener) {\n          listener(_this2.currentResult);\n        });\n      }\n    });\n  };\n\n  return MutationObserver;\n}(Subscribable);","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(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 mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(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 qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(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 Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.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 ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(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&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(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=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=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}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(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 hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\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","import ReactDOM from 'react-dom';\nexport var unstable_batchedUpdates = ReactDOM.unstable_batchedUpdates;","import { notifyManager } from '../core';\nimport { unstable_batchedUpdates } from './reactBatchedUpdates';\nnotifyManager.setBatchNotifyFunction(unstable_batchedUpdates);","export var logger = console;","import { setLogger } from '../core';\nimport { logger } from './logger';\nsetLogger(logger);","import React from 'react';\nvar defaultContext = /*#__PURE__*/React.createContext(undefined);\nvar QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(contextSharing) {\n  if (contextSharing && typeof window !== 'undefined') {\n    if (!window.ReactQueryClientContext) {\n      window.ReactQueryClientContext = defaultContext;\n    }\n\n    return window.ReactQueryClientContext;\n  }\n\n  return defaultContext;\n}\n\nexport var useQueryClient = function useQueryClient() {\n  var queryClient = React.useContext(getQueryClientContext(React.useContext(QueryClientSharingContext)));\n\n  if (!queryClient) {\n    throw new Error('No QueryClient set, use QueryClientProvider to set one');\n  }\n\n  return queryClient;\n};\nexport var QueryClientProvider = function QueryClientProvider(_ref) {\n  var client = _ref.client,\n      _ref$contextSharing = _ref.contextSharing,\n      contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing,\n      children = _ref.children;\n  React.useEffect(function () {\n    client.mount();\n    return function () {\n      client.unmount();\n    };\n  }, [client]);\n  var Context = getQueryClientContext(contextSharing);\n  return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {\n    value: contextSharing\n  }, /*#__PURE__*/React.createElement(Context.Provider, {\n    value: client\n  }, children));\n};","import React from 'react'; // CONTEXT\n\nfunction createValue() {\n  var _isReset = false;\n  return {\n    clearReset: function clearReset() {\n      _isReset = false;\n    },\n    reset: function reset() {\n      _isReset = true;\n    },\n    isReset: function isReset() {\n      return _isReset;\n    }\n  };\n}\n\nvar QueryErrorResetBoundaryContext = /*#__PURE__*/React.createContext(createValue()); // HOOK\n\nexport var useQueryErrorResetBoundary = function useQueryErrorResetBoundary() {\n  return React.useContext(QueryErrorResetBoundaryContext);\n}; // COMPONENT\n\nexport var QueryErrorResetBoundary = function QueryErrorResetBoundary(_ref) {\n  var children = _ref.children;\n  var value = React.useMemo(function () {\n    return createValue();\n  }, []);\n  return /*#__PURE__*/React.createElement(QueryErrorResetBoundaryContext.Provider, {\n    value: value\n  }, typeof children === 'function' ? children(value) : children);\n};","export function shouldThrowError(suspense, _useErrorBoundary, params) {\n  // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n  if (typeof _useErrorBoundary === 'function') {\n    return _useErrorBoundary.apply(void 0, params);\n  } // Allow useErrorBoundary to override suspense's throwing behavior\n\n\n  if (typeof _useErrorBoundary === 'boolean') return _useErrorBoundary; // If suspense is enabled default to throwing errors\n\n  return !!suspense;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { noop, parseMutationArgs } from '../core/utils';\nimport { MutationObserver } from '../core/mutationObserver';\nimport { useQueryClient } from './QueryClientProvider';\nimport { shouldThrowError } from './utils'; // HOOK\n\nexport function useMutation(arg1, arg2, arg3) {\n  var mountedRef = React.useRef(false);\n\n  var _React$useState = React.useState(0),\n      forceUpdate = _React$useState[1];\n\n  var options = parseMutationArgs(arg1, arg2, arg3);\n  var queryClient = useQueryClient();\n  var obsRef = React.useRef();\n\n  if (!obsRef.current) {\n    obsRef.current = new MutationObserver(queryClient, options);\n  } else {\n    obsRef.current.setOptions(options);\n  }\n\n  var currentResult = obsRef.current.getCurrentResult();\n  React.useEffect(function () {\n    mountedRef.current = true;\n    var unsubscribe = obsRef.current.subscribe(notifyManager.batchCalls(function () {\n      if (mountedRef.current) {\n        forceUpdate(function (x) {\n          return x + 1;\n        });\n      }\n    }));\n    return function () {\n      mountedRef.current = false;\n      unsubscribe();\n    };\n  }, []);\n  var mutate = React.useCallback(function (variables, mutateOptions) {\n    obsRef.current.mutate(variables, mutateOptions).catch(noop);\n  }, []);\n\n  if (currentResult.error && shouldThrowError(undefined, obsRef.current.options.useErrorBoundary, [currentResult.error])) {\n    throw currentResult.error;\n  }\n\n  return _extends({}, currentResult, {\n    mutate: mutate,\n    mutateAsync: currentResult.mutate\n  });\n}","import React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary';\nimport { useQueryClient } from './QueryClientProvider';\nimport { shouldThrowError } from './utils';\nexport function useBaseQuery(options, Observer) {\n  var mountedRef = React.useRef(false);\n\n  var _React$useState = React.useState(0),\n      forceUpdate = _React$useState[1];\n\n  var queryClient = useQueryClient();\n  var errorResetBoundary = useQueryErrorResetBoundary();\n  var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options\n\n  defaultedOptions.optimisticResults = true; // Include callbacks in batch renders\n\n  if (defaultedOptions.onError) {\n    defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);\n  }\n\n  if (defaultedOptions.onSuccess) {\n    defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);\n  }\n\n  if (defaultedOptions.onSettled) {\n    defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);\n  }\n\n  if (defaultedOptions.suspense) {\n    // Always set stale time when using suspense to prevent\n    // fetching again when directly mounting after suspending\n    if (typeof defaultedOptions.staleTime !== 'number') {\n      defaultedOptions.staleTime = 1000;\n    } // Set cache time to 1 if the option has been set to 0\n    // when using suspense to prevent infinite loop of fetches\n\n\n    if (defaultedOptions.cacheTime === 0) {\n      defaultedOptions.cacheTime = 1;\n    }\n  }\n\n  if (defaultedOptions.suspense || defaultedOptions.useErrorBoundary) {\n    // Prevent retrying failed query if the error boundary has not been reset yet\n    if (!errorResetBoundary.isReset()) {\n      defaultedOptions.retryOnMount = false;\n    }\n  }\n\n  var _React$useState2 = React.useState(function () {\n    return new Observer(queryClient, defaultedOptions);\n  }),\n      observer = _React$useState2[0];\n\n  var result = observer.getOptimisticResult(defaultedOptions);\n  React.useEffect(function () {\n    mountedRef.current = true;\n    errorResetBoundary.clearReset();\n    var unsubscribe = observer.subscribe(notifyManager.batchCalls(function () {\n      if (mountedRef.current) {\n        forceUpdate(function (x) {\n          return x + 1;\n        });\n      }\n    })); // Update result to make sure we did not miss any query updates\n    // between creating the observer and subscribing to it.\n\n    observer.updateResult();\n    return function () {\n      mountedRef.current = false;\n      unsubscribe();\n    };\n  }, [errorResetBoundary, observer]);\n  React.useEffect(function () {\n    // Do not notify on updates because of changes in the options because\n    // these changes should already be reflected in the optimistic result.\n    observer.setOptions(defaultedOptions, {\n      listeners: false\n    });\n  }, [defaultedOptions, observer]); // Handle suspense\n\n  if (defaultedOptions.suspense && result.isLoading) {\n    throw observer.fetchOptimistic(defaultedOptions).then(function (_ref) {\n      var data = _ref.data;\n      defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n      defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n    }).catch(function (error) {\n      errorResetBoundary.clearReset();\n      defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);\n      defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);\n    });\n  } // Handle error boundary\n\n\n  if (result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(defaultedOptions.suspense, defaultedOptions.useErrorBoundary, [result.error, observer.getCurrentQuery()])) {\n    throw result.error;\n  } // Handle result property usage tracking\n\n\n  if (defaultedOptions.notifyOnChangeProps === 'tracked') {\n    result = observer.trackResult(result, defaultedOptions);\n  }\n\n  return result;\n}","import { QueryObserver } from '../core';\nimport { parseQueryArgs } from '../core/utils';\nimport { useBaseQuery } from './useBaseQuery'; // HOOK\n\nexport function useQuery(arg1, arg2, arg3) {\n  var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n  return useBaseQuery(parsedOptions, QueryObserver);\n}","import { createContext } from 'react';\nimport { QueryClientProvider, QueryClient } from 'react-query';\n\nexport type GlobalOptions = {\n  apiKey: string;\n  apiUrl: string;\n  projectId: string | number | undefined;\n};\n\nconst queryClient = new QueryClient({\n  defaultOptions: {\n    queries: {\n      refetchOnWindowFocus: false,\n      refetchOnReconnect: false,\n      retry: false,\n    },\n  },\n});\n\nexport const QueryContext = createContext({} as GlobalOptions);\n\ntype Props = GlobalOptions;\n\nexport const QueryProvider = ({\n  children,\n  apiUrl,\n  apiKey,\n  projectId,\n}: React.PropsWithChildren<Props>) => {\n  return (\n    <QueryContext.Provider value={{ apiUrl, apiKey, projectId }}>\n      <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n    </QueryContext.Provider>\n  );\n};\n","/**\nThe data structure for documents. @nonabstract\n*/\nclass Text {\n    /**\n    Get the line description around the given position.\n    */\n    lineAt(pos) {\n        if (pos < 0 || pos > this.length)\n            throw new RangeError(`Invalid position ${pos} in document of length ${this.length}`);\n        return this.lineInner(pos, false, 1, 0);\n    }\n    /**\n    Get the description for the given (1-based) line number.\n    */\n    line(n) {\n        if (n < 1 || n > this.lines)\n            throw new RangeError(`Invalid line number ${n} in ${this.lines}-line document`);\n        return this.lineInner(n, true, 1, 0);\n    }\n    /**\n    Replace a range of the text with the given content.\n    */\n    replace(from, to, text) {\n        [from, to] = clip(this, from, to);\n        let parts = [];\n        this.decompose(0, from, parts, 2 /* Open.To */);\n        if (text.length)\n            text.decompose(0, text.length, parts, 1 /* Open.From */ | 2 /* Open.To */);\n        this.decompose(to, this.length, parts, 1 /* Open.From */);\n        return TextNode.from(parts, this.length - (to - from) + text.length);\n    }\n    /**\n    Append another document to this one.\n    */\n    append(other) {\n        return this.replace(this.length, this.length, other);\n    }\n    /**\n    Retrieve the text between the given points.\n    */\n    slice(from, to = this.length) {\n        [from, to] = clip(this, from, to);\n        let parts = [];\n        this.decompose(from, to, parts, 0);\n        return TextNode.from(parts, to - from);\n    }\n    /**\n    Test whether this text is equal to another instance.\n    */\n    eq(other) {\n        if (other == this)\n            return true;\n        if (other.length != this.length || other.lines != this.lines)\n            return false;\n        let start = this.scanIdentical(other, 1), end = this.length - this.scanIdentical(other, -1);\n        let a = new RawTextCursor(this), b = new RawTextCursor(other);\n        for (let skip = start, pos = start;;) {\n            a.next(skip);\n            b.next(skip);\n            skip = 0;\n            if (a.lineBreak != b.lineBreak || a.done != b.done || a.value != b.value)\n                return false;\n            pos += a.value.length;\n            if (a.done || pos >= end)\n                return true;\n        }\n    }\n    /**\n    Iterate over the text. When `dir` is `-1`, iteration happens\n    from end to start. This will return lines and the breaks between\n    them as separate strings.\n    */\n    iter(dir = 1) { return new RawTextCursor(this, dir); }\n    /**\n    Iterate over a range of the text. When `from` > `to`, the\n    iterator will run in reverse.\n    */\n    iterRange(from, to = this.length) { return new PartialTextCursor(this, from, to); }\n    /**\n    Return a cursor that iterates over the given range of lines,\n    _without_ returning the line breaks between, and yielding empty\n    strings for empty lines.\n    \n    When `from` and `to` are given, they should be 1-based line numbers.\n    */\n    iterLines(from, to) {\n        let inner;\n        if (from == null) {\n            inner = this.iter();\n        }\n        else {\n            if (to == null)\n                to = this.lines + 1;\n            let start = this.line(from).from;\n            inner = this.iterRange(start, Math.max(start, to == this.lines + 1 ? this.length : to <= 1 ? 0 : this.line(to - 1).to));\n        }\n        return new LineCursor(inner);\n    }\n    /**\n    Return the document as a string, using newline characters to\n    separate lines.\n    */\n    toString() { return this.sliceString(0); }\n    /**\n    Convert the document to an array of lines (which can be\n    deserialized again via [`Text.of`](https://codemirror.net/6/docs/ref/#state.Text^of)).\n    */\n    toJSON() {\n        let lines = [];\n        this.flatten(lines);\n        return lines;\n    }\n    /**\n    @internal\n    */\n    constructor() { }\n    /**\n    Create a `Text` instance for the given array of lines.\n    */\n    static of(text) {\n        if (text.length == 0)\n            throw new RangeError(\"A document must have at least one line\");\n        if (text.length == 1 && !text[0])\n            return Text.empty;\n        return text.length <= 32 /* Tree.Branch */ ? new TextLeaf(text) : TextNode.from(TextLeaf.split(text, []));\n    }\n}\n// Leaves store an array of line strings. There are always line breaks\n// between these strings. Leaves are limited in size and have to be\n// contained in TextNode instances for bigger documents.\nclass TextLeaf extends Text {\n    constructor(text, length = textLength(text)) {\n        super();\n        this.text = text;\n        this.length = length;\n    }\n    get lines() { return this.text.length; }\n    get children() { return null; }\n    lineInner(target, isLine, line, offset) {\n        for (let i = 0;; i++) {\n            let string = this.text[i], end = offset + string.length;\n            if ((isLine ? line : end) >= target)\n                return new Line(offset, end, line, string);\n            offset = end + 1;\n            line++;\n        }\n    }\n    decompose(from, to, target, open) {\n        let text = from <= 0 && to >= this.length ? this\n            : new TextLeaf(sliceText(this.text, from, to), Math.min(to, this.length) - Math.max(0, from));\n        if (open & 1 /* Open.From */) {\n            let prev = target.pop();\n            let joined = appendText(text.text, prev.text.slice(), 0, text.length);\n            if (joined.length <= 32 /* Tree.Branch */) {\n                target.push(new TextLeaf(joined, prev.length + text.length));\n            }\n            else {\n                let mid = joined.length >> 1;\n                target.push(new TextLeaf(joined.slice(0, mid)), new TextLeaf(joined.slice(mid)));\n            }\n        }\n        else {\n            target.push(text);\n        }\n    }\n    replace(from, to, text) {\n        if (!(text instanceof TextLeaf))\n            return super.replace(from, to, text);\n        [from, to] = clip(this, from, to);\n        let lines = appendText(this.text, appendText(text.text, sliceText(this.text, 0, from)), to);\n        let newLen = this.length + text.length - (to - from);\n        if (lines.length <= 32 /* Tree.Branch */)\n            return new TextLeaf(lines, newLen);\n        return TextNode.from(TextLeaf.split(lines, []), newLen);\n    }\n    sliceString(from, to = this.length, lineSep = \"\\n\") {\n        [from, to] = clip(this, from, to);\n        let result = \"\";\n        for (let pos = 0, i = 0; pos <= to && i < this.text.length; i++) {\n            let line = this.text[i], end = pos + line.length;\n            if (pos > from && i)\n                result += lineSep;\n            if (from < end && to > pos)\n                result += line.slice(Math.max(0, from - pos), to - pos);\n            pos = end + 1;\n        }\n        return result;\n    }\n    flatten(target) {\n        for (let line of this.text)\n            target.push(line);\n    }\n    scanIdentical() { return 0; }\n    static split(text, target) {\n        let part = [], len = -1;\n        for (let line of text) {\n            part.push(line);\n            len += line.length + 1;\n            if (part.length == 32 /* Tree.Branch */) {\n                target.push(new TextLeaf(part, len));\n                part = [];\n                len = -1;\n            }\n        }\n        if (len > -1)\n            target.push(new TextLeaf(part, len));\n        return target;\n    }\n}\n// Nodes provide the tree structure of the `Text` type. They store a\n// number of other nodes or leaves, taking care to balance themselves\n// on changes. There are implied line breaks _between_ the children of\n// a node (but not before the first or after the last child).\nclass TextNode extends Text {\n    constructor(children, length) {\n        super();\n        this.children = children;\n        this.length = length;\n        this.lines = 0;\n        for (let child of children)\n            this.lines += child.lines;\n    }\n    lineInner(target, isLine, line, offset) {\n        for (let i = 0;; i++) {\n            let child = this.children[i], end = offset + child.length, endLine = line + child.lines - 1;\n            if ((isLine ? endLine : end) >= target)\n                return child.lineInner(target, isLine, line, offset);\n            offset = end + 1;\n            line = endLine + 1;\n        }\n    }\n    decompose(from, to, target, open) {\n        for (let i = 0, pos = 0; pos <= to && i < this.children.length; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (from <= end && to >= pos) {\n                let childOpen = open & ((pos <= from ? 1 /* Open.From */ : 0) | (end >= to ? 2 /* Open.To */ : 0));\n                if (pos >= from && end <= to && !childOpen)\n                    target.push(child);\n                else\n                    child.decompose(from - pos, to - pos, target, childOpen);\n            }\n            pos = end + 1;\n        }\n    }\n    replace(from, to, text) {\n        [from, to] = clip(this, from, to);\n        if (text.lines < this.lines)\n            for (let i = 0, pos = 0; i < this.children.length; i++) {\n                let child = this.children[i], end = pos + child.length;\n                // Fast path: if the change only affects one child and the\n                // child's size remains in the acceptable range, only update\n                // that child\n                if (from >= pos && to <= end) {\n                    let updated = child.replace(from - pos, to - pos, text);\n                    let totalLines = this.lines - child.lines + updated.lines;\n                    if (updated.lines < (totalLines >> (5 /* Tree.BranchShift */ - 1)) &&\n                        updated.lines > (totalLines >> (5 /* Tree.BranchShift */ + 1))) {\n                        let copy = this.children.slice();\n                        copy[i] = updated;\n                        return new TextNode(copy, this.length - (to - from) + text.length);\n                    }\n                    return super.replace(pos, end, updated);\n                }\n                pos = end + 1;\n            }\n        return super.replace(from, to, text);\n    }\n    sliceString(from, to = this.length, lineSep = \"\\n\") {\n        [from, to] = clip(this, from, to);\n        let result = \"\";\n        for (let i = 0, pos = 0; i < this.children.length && pos <= to; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (pos > from && i)\n                result += lineSep;\n            if (from < end && to > pos)\n                result += child.sliceString(from - pos, to - pos, lineSep);\n            pos = end + 1;\n        }\n        return result;\n    }\n    flatten(target) {\n        for (let child of this.children)\n            child.flatten(target);\n    }\n    scanIdentical(other, dir) {\n        if (!(other instanceof TextNode))\n            return 0;\n        let length = 0;\n        let [iA, iB, eA, eB] = dir > 0 ? [0, 0, this.children.length, other.children.length]\n            : [this.children.length - 1, other.children.length - 1, -1, -1];\n        for (;; iA += dir, iB += dir) {\n            if (iA == eA || iB == eB)\n                return length;\n            let chA = this.children[iA], chB = other.children[iB];\n            if (chA != chB)\n                return length + chA.scanIdentical(chB, dir);\n            length += chA.length + 1;\n        }\n    }\n    static from(children, length = children.reduce((l, ch) => l + ch.length + 1, -1)) {\n        let lines = 0;\n        for (let ch of children)\n            lines += ch.lines;\n        if (lines < 32 /* Tree.Branch */) {\n            let flat = [];\n            for (let ch of children)\n                ch.flatten(flat);\n            return new TextLeaf(flat, length);\n        }\n        let chunk = Math.max(32 /* Tree.Branch */, lines >> 5 /* Tree.BranchShift */), maxChunk = chunk << 1, minChunk = chunk >> 1;\n        let chunked = [], currentLines = 0, currentLen = -1, currentChunk = [];\n        function add(child) {\n            let last;\n            if (child.lines > maxChunk && child instanceof TextNode) {\n                for (let node of child.children)\n                    add(node);\n            }\n            else if (child.lines > minChunk && (currentLines > minChunk || !currentLines)) {\n                flush();\n                chunked.push(child);\n            }\n            else if (child instanceof TextLeaf && currentLines &&\n                (last = currentChunk[currentChunk.length - 1]) instanceof TextLeaf &&\n                child.lines + last.lines <= 32 /* Tree.Branch */) {\n                currentLines += child.lines;\n                currentLen += child.length + 1;\n                currentChunk[currentChunk.length - 1] = new TextLeaf(last.text.concat(child.text), last.length + 1 + child.length);\n            }\n            else {\n                if (currentLines + child.lines > chunk)\n                    flush();\n                currentLines += child.lines;\n                currentLen += child.length + 1;\n                currentChunk.push(child);\n            }\n        }\n        function flush() {\n            if (currentLines == 0)\n                return;\n            chunked.push(currentChunk.length == 1 ? currentChunk[0] : TextNode.from(currentChunk, currentLen));\n            currentLen = -1;\n            currentLines = currentChunk.length = 0;\n        }\n        for (let child of children)\n            add(child);\n        flush();\n        return chunked.length == 1 ? chunked[0] : new TextNode(chunked, length);\n    }\n}\nText.empty = /*@__PURE__*/new TextLeaf([\"\"], 0);\nfunction textLength(text) {\n    let length = -1;\n    for (let line of text)\n        length += line.length + 1;\n    return length;\n}\nfunction appendText(text, target, from = 0, to = 1e9) {\n    for (let pos = 0, i = 0, first = true; i < text.length && pos <= to; i++) {\n        let line = text[i], end = pos + line.length;\n        if (end >= from) {\n            if (end > to)\n                line = line.slice(0, to - pos);\n            if (pos < from)\n                line = line.slice(from - pos);\n            if (first) {\n                target[target.length - 1] += line;\n                first = false;\n            }\n            else\n                target.push(line);\n        }\n        pos = end + 1;\n    }\n    return target;\n}\nfunction sliceText(text, from, to) {\n    return appendText(text, [\"\"], from, to);\n}\nclass RawTextCursor {\n    constructor(text, dir = 1) {\n        this.dir = dir;\n        this.done = false;\n        this.lineBreak = false;\n        this.value = \"\";\n        this.nodes = [text];\n        this.offsets = [dir > 0 ? 1 : (text instanceof TextLeaf ? text.text.length : text.children.length) << 1];\n    }\n    nextInner(skip, dir) {\n        this.done = this.lineBreak = false;\n        for (;;) {\n            let last = this.nodes.length - 1;\n            let top = this.nodes[last], offsetValue = this.offsets[last], offset = offsetValue >> 1;\n            let size = top instanceof TextLeaf ? top.text.length : top.children.length;\n            if (offset == (dir > 0 ? size : 0)) {\n                if (last == 0) {\n                    this.done = true;\n                    this.value = \"\";\n                    return this;\n                }\n                if (dir > 0)\n                    this.offsets[last - 1]++;\n                this.nodes.pop();\n                this.offsets.pop();\n            }\n            else if ((offsetValue & 1) == (dir > 0 ? 0 : 1)) {\n                this.offsets[last] += dir;\n                if (skip == 0) {\n                    this.lineBreak = true;\n                    this.value = \"\\n\";\n                    return this;\n                }\n                skip--;\n            }\n            else if (top instanceof TextLeaf) {\n                // Move to the next string\n                let next = top.text[offset + (dir < 0 ? -1 : 0)];\n                this.offsets[last] += dir;\n                if (next.length > Math.max(0, skip)) {\n                    this.value = skip == 0 ? next : dir > 0 ? next.slice(skip) : next.slice(0, next.length - skip);\n                    return this;\n                }\n                skip -= next.length;\n            }\n            else {\n                let next = top.children[offset + (dir < 0 ? -1 : 0)];\n                if (skip > next.length) {\n                    skip -= next.length;\n                    this.offsets[last] += dir;\n                }\n                else {\n                    if (dir < 0)\n                        this.offsets[last]--;\n                    this.nodes.push(next);\n                    this.offsets.push(dir > 0 ? 1 : (next instanceof TextLeaf ? next.text.length : next.children.length) << 1);\n                }\n            }\n        }\n    }\n    next(skip = 0) {\n        if (skip < 0) {\n            this.nextInner(-skip, (-this.dir));\n            skip = this.value.length;\n        }\n        return this.nextInner(skip, this.dir);\n    }\n}\nclass PartialTextCursor {\n    constructor(text, start, end) {\n        this.value = \"\";\n        this.done = false;\n        this.cursor = new RawTextCursor(text, start > end ? -1 : 1);\n        this.pos = start > end ? text.length : 0;\n        this.from = Math.min(start, end);\n        this.to = Math.max(start, end);\n    }\n    nextInner(skip, dir) {\n        if (dir < 0 ? this.pos <= this.from : this.pos >= this.to) {\n            this.value = \"\";\n            this.done = true;\n            return this;\n        }\n        skip += Math.max(0, dir < 0 ? this.pos - this.to : this.from - this.pos);\n        let limit = dir < 0 ? this.pos - this.from : this.to - this.pos;\n        if (skip > limit)\n            skip = limit;\n        limit -= skip;\n        let { value } = this.cursor.next(skip);\n        this.pos += (value.length + skip) * dir;\n        this.value = value.length <= limit ? value : dir < 0 ? value.slice(value.length - limit) : value.slice(0, limit);\n        this.done = !this.value;\n        return this;\n    }\n    next(skip = 0) {\n        if (skip < 0)\n            skip = Math.max(skip, this.from - this.pos);\n        else if (skip > 0)\n            skip = Math.min(skip, this.to - this.pos);\n        return this.nextInner(skip, this.cursor.dir);\n    }\n    get lineBreak() { return this.cursor.lineBreak && this.value != \"\"; }\n}\nclass LineCursor {\n    constructor(inner) {\n        this.inner = inner;\n        this.afterBreak = true;\n        this.value = \"\";\n        this.done = false;\n    }\n    next(skip = 0) {\n        let { done, lineBreak, value } = this.inner.next(skip);\n        if (done && this.afterBreak) {\n            this.value = \"\";\n            this.afterBreak = false;\n        }\n        else if (done) {\n            this.done = true;\n            this.value = \"\";\n        }\n        else if (lineBreak) {\n            if (this.afterBreak) {\n                this.value = \"\";\n            }\n            else {\n                this.afterBreak = true;\n                this.next();\n            }\n        }\n        else {\n            this.value = value;\n            this.afterBreak = false;\n        }\n        return this;\n    }\n    get lineBreak() { return false; }\n}\nif (typeof Symbol != \"undefined\") {\n    Text.prototype[Symbol.iterator] = function () { return this.iter(); };\n    RawTextCursor.prototype[Symbol.iterator] = PartialTextCursor.prototype[Symbol.iterator] =\n        LineCursor.prototype[Symbol.iterator] = function () { return this; };\n}\n/**\nThis type describes a line in the document. It is created\non-demand when lines are [queried](https://codemirror.net/6/docs/ref/#state.Text.lineAt).\n*/\nclass Line {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The position of the start of the line.\n    */\n    from, \n    /**\n    The position at the end of the line (_before_ the line break,\n    or at the end of document for the last line).\n    */\n    to, \n    /**\n    This line's line number (1-based).\n    */\n    number, \n    /**\n    The line's content.\n    */\n    text) {\n        this.from = from;\n        this.to = to;\n        this.number = number;\n        this.text = text;\n    }\n    /**\n    The length of the line (not including any line break after it).\n    */\n    get length() { return this.to - this.from; }\n}\nfunction clip(text, from, to) {\n    from = Math.max(0, Math.min(text.length, from));\n    return [from, Math.max(from, Math.min(text.length, to))];\n}\n\n// Compressed representation of the Grapheme_Cluster_Break=Extend\n// information from\n// http://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt.\n// Each pair of elements represents a range, as an offet from the\n// previous range and a length. Numbers are in base-36, with the empty\n// string being a shorthand for 1.\nlet extend = /*@__PURE__*/\"lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o\".split(\",\").map(s => s ? parseInt(s, 36) : 1);\n// Convert offsets into absolute values\nfor (let i = 1; i < extend.length; i++)\n    extend[i] += extend[i - 1];\nfunction isExtendingChar(code) {\n    for (let i = 1; i < extend.length; i += 2)\n        if (extend[i] > code)\n            return extend[i - 1] <= code;\n    return false;\n}\nfunction isRegionalIndicator(code) {\n    return code >= 0x1F1E6 && code <= 0x1F1FF;\n}\nconst ZWJ = 0x200d;\n/**\nReturns a next grapheme cluster break _after_ (not equal to)\n`pos`, if `forward` is true, or before otherwise. Returns `pos`\nitself if no further cluster break is available in the string.\nMoves across surrogate pairs, extending characters (when\n`includeExtending` is true), characters joined with zero-width\njoiners, and flag emoji.\n*/\nfunction findClusterBreak(str, pos, forward = true, includeExtending = true) {\n    return (forward ? nextClusterBreak : prevClusterBreak)(str, pos, includeExtending);\n}\nfunction nextClusterBreak(str, pos, includeExtending) {\n    if (pos == str.length)\n        return pos;\n    // If pos is in the middle of a surrogate pair, move to its start\n    if (pos && surrogateLow(str.charCodeAt(pos)) && surrogateHigh(str.charCodeAt(pos - 1)))\n        pos--;\n    let prev = codePointAt(str, pos);\n    pos += codePointSize(prev);\n    while (pos < str.length) {\n        let next = codePointAt(str, pos);\n        if (prev == ZWJ || next == ZWJ || includeExtending && isExtendingChar(next)) {\n            pos += codePointSize(next);\n            prev = next;\n        }\n        else if (isRegionalIndicator(next)) {\n            let countBefore = 0, i = pos - 2;\n            while (i >= 0 && isRegionalIndicator(codePointAt(str, i))) {\n                countBefore++;\n                i -= 2;\n            }\n            if (countBefore % 2 == 0)\n                break;\n            else\n                pos += 2;\n        }\n        else {\n            break;\n        }\n    }\n    return pos;\n}\nfunction prevClusterBreak(str, pos, includeExtending) {\n    while (pos > 0) {\n        let found = nextClusterBreak(str, pos - 2, includeExtending);\n        if (found < pos)\n            return found;\n        pos--;\n    }\n    return 0;\n}\nfunction surrogateLow(ch) { return ch >= 0xDC00 && ch < 0xE000; }\nfunction surrogateHigh(ch) { return ch >= 0xD800 && ch < 0xDC00; }\n/**\nFind the code point at the given position in a string (like the\n[`codePointAt`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt)\nstring method).\n*/\nfunction codePointAt(str, pos) {\n    let code0 = str.charCodeAt(pos);\n    if (!surrogateHigh(code0) || pos + 1 == str.length)\n        return code0;\n    let code1 = str.charCodeAt(pos + 1);\n    if (!surrogateLow(code1))\n        return code0;\n    return ((code0 - 0xd800) << 10) + (code1 - 0xdc00) + 0x10000;\n}\n/**\nGiven a Unicode codepoint, return the JavaScript string that\nrespresents it (like\n[`String.fromCodePoint`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/fromCodePoint)).\n*/\nfunction fromCodePoint(code) {\n    if (code <= 0xffff)\n        return String.fromCharCode(code);\n    code -= 0x10000;\n    return String.fromCharCode((code >> 10) + 0xd800, (code & 1023) + 0xdc00);\n}\n/**\nThe amount of positions a character takes up a JavaScript string.\n*/\nfunction codePointSize(code) { return code < 0x10000 ? 1 : 2; }\n\nconst DefaultSplit = /\\r\\n?|\\n/;\n/**\nDistinguishes different ways in which positions can be mapped.\n*/\nvar MapMode = /*@__PURE__*/(function (MapMode) {\n    /**\n    Map a position to a valid new position, even when its context\n    was deleted.\n    */\n    MapMode[MapMode[\"Simple\"] = 0] = \"Simple\";\n    /**\n    Return null if deletion happens across the position.\n    */\n    MapMode[MapMode[\"TrackDel\"] = 1] = \"TrackDel\";\n    /**\n    Return null if the character _before_ the position is deleted.\n    */\n    MapMode[MapMode[\"TrackBefore\"] = 2] = \"TrackBefore\";\n    /**\n    Return null if the character _after_ the position is deleted.\n    */\n    MapMode[MapMode[\"TrackAfter\"] = 3] = \"TrackAfter\";\nreturn MapMode})(MapMode || (MapMode = {}));\n/**\nA change description is a variant of [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet)\nthat doesn't store the inserted text. As such, it can't be\napplied, but is cheaper to store and manipulate.\n*/\nclass ChangeDesc {\n    // Sections are encoded as pairs of integers. The first is the\n    // length in the current document, and the second is -1 for\n    // unaffected sections, and the length of the replacement content\n    // otherwise. So an insertion would be (0, n>0), a deletion (n>0,\n    // 0), and a replacement two positive numbers.\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    @internal\n    */\n    sections) {\n        this.sections = sections;\n    }\n    /**\n    The length of the document before the change.\n    */\n    get length() {\n        let result = 0;\n        for (let i = 0; i < this.sections.length; i += 2)\n            result += this.sections[i];\n        return result;\n    }\n    /**\n    The length of the document after the change.\n    */\n    get newLength() {\n        let result = 0;\n        for (let i = 0; i < this.sections.length; i += 2) {\n            let ins = this.sections[i + 1];\n            result += ins < 0 ? this.sections[i] : ins;\n        }\n        return result;\n    }\n    /**\n    False when there are actual changes in this set.\n    */\n    get empty() { return this.sections.length == 0 || this.sections.length == 2 && this.sections[1] < 0; }\n    /**\n    Iterate over the unchanged parts left by these changes. `posA`\n    provides the position of the range in the old document, `posB`\n    the new position in the changed document.\n    */\n    iterGaps(f) {\n        for (let i = 0, posA = 0, posB = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            if (ins < 0) {\n                f(posA, posB, len);\n                posB += len;\n            }\n            else {\n                posB += ins;\n            }\n            posA += len;\n        }\n    }\n    /**\n    Iterate over the ranges changed by these changes. (See\n    [`ChangeSet.iterChanges`](https://codemirror.net/6/docs/ref/#state.ChangeSet.iterChanges) for a\n    variant that also provides you with the inserted text.)\n    `fromA`/`toA` provides the extent of the change in the starting\n    document, `fromB`/`toB` the extent of the replacement in the\n    changed document.\n    \n    When `individual` is true, adjacent changes (which are kept\n    separate for [position mapping](https://codemirror.net/6/docs/ref/#state.ChangeDesc.mapPos)) are\n    reported separately.\n    */\n    iterChangedRanges(f, individual = false) {\n        iterChanges(this, f, individual);\n    }\n    /**\n    Get a description of the inverted form of these changes.\n    */\n    get invertedDesc() {\n        let sections = [];\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            if (ins < 0)\n                sections.push(len, ins);\n            else\n                sections.push(ins, len);\n        }\n        return new ChangeDesc(sections);\n    }\n    /**\n    Compute the combined effect of applying another set of changes\n    after this one. The length of the document after this set should\n    match the length before `other`.\n    */\n    composeDesc(other) { return this.empty ? other : other.empty ? this : composeSets(this, other); }\n    /**\n    Map this description, which should start with the same document\n    as `other`, over another set of changes, so that it can be\n    applied after it. When `before` is true, map as if the changes\n    in `other` happened before the ones in `this`.\n    */\n    mapDesc(other, before = false) { return other.empty ? this : mapSet(this, other, before); }\n    mapPos(pos, assoc = -1, mode = MapMode.Simple) {\n        let posA = 0, posB = 0;\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++], endA = posA + len;\n            if (ins < 0) {\n                if (endA > pos)\n                    return posB + (pos - posA);\n                posB += len;\n            }\n            else {\n                if (mode != MapMode.Simple && endA >= pos &&\n                    (mode == MapMode.TrackDel && posA < pos && endA > pos ||\n                        mode == MapMode.TrackBefore && posA < pos ||\n                        mode == MapMode.TrackAfter && endA > pos))\n                    return null;\n                if (endA > pos || endA == pos && assoc < 0 && !len)\n                    return pos == posA || assoc < 0 ? posB : posB + ins;\n                posB += ins;\n            }\n            posA = endA;\n        }\n        if (pos > posA)\n            throw new RangeError(`Position ${pos} is out of range for changeset of length ${posA}`);\n        return posB;\n    }\n    /**\n    Check whether these changes touch a given range. When one of the\n    changes entirely covers the range, the string `\"cover\"` is\n    returned.\n    */\n    touchesRange(from, to = from) {\n        for (let i = 0, pos = 0; i < this.sections.length && pos <= to;) {\n            let len = this.sections[i++], ins = this.sections[i++], end = pos + len;\n            if (ins >= 0 && pos <= to && end >= from)\n                return pos < from && end > to ? \"cover\" : true;\n            pos = end;\n        }\n        return false;\n    }\n    /**\n    @internal\n    */\n    toString() {\n        let result = \"\";\n        for (let i = 0; i < this.sections.length;) {\n            let len = this.sections[i++], ins = this.sections[i++];\n            result += (result ? \" \" : \"\") + len + (ins >= 0 ? \":\" + ins : \"\");\n        }\n        return result;\n    }\n    /**\n    Serialize this change desc to a JSON-representable value.\n    */\n    toJSON() { return this.sections; }\n    /**\n    Create a change desc from its JSON representation (as produced\n    by [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeDesc.toJSON).\n    */\n    static fromJSON(json) {\n        if (!Array.isArray(json) || json.length % 2 || json.some(a => typeof a != \"number\"))\n            throw new RangeError(\"Invalid JSON representation of ChangeDesc\");\n        return new ChangeDesc(json);\n    }\n    /**\n    @internal\n    */\n    static create(sections) { return new ChangeDesc(sections); }\n}\n/**\nA change set represents a group of modifications to a document. It\nstores the document length, and can only be applied to documents\nwith exactly that length.\n*/\nclass ChangeSet extends ChangeDesc {\n    constructor(sections, \n    /**\n    @internal\n    */\n    inserted) {\n        super(sections);\n        this.inserted = inserted;\n    }\n    /**\n    Apply the changes to a document, returning the modified\n    document.\n    */\n    apply(doc) {\n        if (this.length != doc.length)\n            throw new RangeError(\"Applying change set to a document with the wrong length\");\n        iterChanges(this, (fromA, toA, fromB, _toB, text) => doc = doc.replace(fromB, fromB + (toA - fromA), text), false);\n        return doc;\n    }\n    mapDesc(other, before = false) { return mapSet(this, other, before, true); }\n    /**\n    Given the document as it existed _before_ the changes, return a\n    change set that represents the inverse of this set, which could\n    be used to go from the document created by the changes back to\n    the document as it existed before the changes.\n    */\n    invert(doc) {\n        let sections = this.sections.slice(), inserted = [];\n        for (let i = 0, pos = 0; i < sections.length; i += 2) {\n            let len = sections[i], ins = sections[i + 1];\n            if (ins >= 0) {\n                sections[i] = ins;\n                sections[i + 1] = len;\n                let index = i >> 1;\n                while (inserted.length < index)\n                    inserted.push(Text.empty);\n                inserted.push(len ? doc.slice(pos, pos + len) : Text.empty);\n            }\n            pos += len;\n        }\n        return new ChangeSet(sections, inserted);\n    }\n    /**\n    Combine two subsequent change sets into a single set. `other`\n    must start in the document produced by `this`. If `this` goes\n    `docA` → `docB` and `other` represents `docB` → `docC`, the\n    returned value will represent the change `docA` → `docC`.\n    */\n    compose(other) { return this.empty ? other : other.empty ? this : composeSets(this, other, true); }\n    /**\n    Given another change set starting in the same document, maps this\n    change set over the other, producing a new change set that can be\n    applied to the document produced by applying `other`. When\n    `before` is `true`, order changes as if `this` comes before\n    `other`, otherwise (the default) treat `other` as coming first.\n    \n    Given two changes `A` and `B`, `A.compose(B.map(A))` and\n    `B.compose(A.map(B, true))` will produce the same document. This\n    provides a basic form of [operational\n    transformation](https://en.wikipedia.org/wiki/Operational_transformation),\n    and can be used for collaborative editing.\n    */\n    map(other, before = false) { return other.empty ? this : mapSet(this, other, before, true); }\n    /**\n    Iterate over the changed ranges in the document, calling `f` for\n    each, with the range in the original document (`fromA`-`toA`)\n    and the range that replaces it in the new document\n    (`fromB`-`toB`).\n    \n    When `individual` is true, adjacent changes are reported\n    separately.\n    */\n    iterChanges(f, individual = false) {\n        iterChanges(this, f, individual);\n    }\n    /**\n    Get a [change description](https://codemirror.net/6/docs/ref/#state.ChangeDesc) for this change\n    set.\n    */\n    get desc() { return ChangeDesc.create(this.sections); }\n    /**\n    @internal\n    */\n    filter(ranges) {\n        let resultSections = [], resultInserted = [], filteredSections = [];\n        let iter = new SectionIter(this);\n        done: for (let i = 0, pos = 0;;) {\n            let next = i == ranges.length ? 1e9 : ranges[i++];\n            while (pos < next || pos == next && iter.len == 0) {\n                if (iter.done)\n                    break done;\n                let len = Math.min(iter.len, next - pos);\n                addSection(filteredSections, len, -1);\n                let ins = iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0;\n                addSection(resultSections, len, ins);\n                if (ins > 0)\n                    addInsert(resultInserted, resultSections, iter.text);\n                iter.forward(len);\n                pos += len;\n            }\n            let end = ranges[i++];\n            while (pos < end) {\n                if (iter.done)\n                    break done;\n                let len = Math.min(iter.len, end - pos);\n                addSection(resultSections, len, -1);\n                addSection(filteredSections, len, iter.ins == -1 ? -1 : iter.off == 0 ? iter.ins : 0);\n                iter.forward(len);\n                pos += len;\n            }\n        }\n        return { changes: new ChangeSet(resultSections, resultInserted),\n            filtered: ChangeDesc.create(filteredSections) };\n    }\n    /**\n    Serialize this change set to a JSON-representable value.\n    */\n    toJSON() {\n        let parts = [];\n        for (let i = 0; i < this.sections.length; i += 2) {\n            let len = this.sections[i], ins = this.sections[i + 1];\n            if (ins < 0)\n                parts.push(len);\n            else if (ins == 0)\n                parts.push([len]);\n            else\n                parts.push([len].concat(this.inserted[i >> 1].toJSON()));\n        }\n        return parts;\n    }\n    /**\n    Create a change set for the given changes, for a document of the\n    given length, using `lineSep` as line separator.\n    */\n    static of(changes, length, lineSep) {\n        let sections = [], inserted = [], pos = 0;\n        let total = null;\n        function flush(force = false) {\n            if (!force && !sections.length)\n                return;\n            if (pos < length)\n                addSection(sections, length - pos, -1);\n            let set = new ChangeSet(sections, inserted);\n            total = total ? total.compose(set.map(total)) : set;\n            sections = [];\n            inserted = [];\n            pos = 0;\n        }\n        function process(spec) {\n            if (Array.isArray(spec)) {\n                for (let sub of spec)\n                    process(sub);\n            }\n            else if (spec instanceof ChangeSet) {\n                if (spec.length != length)\n                    throw new RangeError(`Mismatched change set length (got ${spec.length}, expected ${length})`);\n                flush();\n                total = total ? total.compose(spec.map(total)) : spec;\n            }\n            else {\n                let { from, to = from, insert } = spec;\n                if (from > to || from < 0 || to > length)\n                    throw new RangeError(`Invalid change range ${from} to ${to} (in doc of length ${length})`);\n                let insText = !insert ? Text.empty : typeof insert == \"string\" ? Text.of(insert.split(lineSep || DefaultSplit)) : insert;\n                let insLen = insText.length;\n                if (from == to && insLen == 0)\n                    return;\n                if (from < pos)\n                    flush();\n                if (from > pos)\n                    addSection(sections, from - pos, -1);\n                addSection(sections, to - from, insLen);\n                addInsert(inserted, sections, insText);\n                pos = to;\n            }\n        }\n        process(changes);\n        flush(!total);\n        return total;\n    }\n    /**\n    Create an empty changeset of the given length.\n    */\n    static empty(length) {\n        return new ChangeSet(length ? [length, -1] : [], []);\n    }\n    /**\n    Create a changeset from its JSON representation (as produced by\n    [`toJSON`](https://codemirror.net/6/docs/ref/#state.ChangeSet.toJSON).\n    */\n    static fromJSON(json) {\n        if (!Array.isArray(json))\n            throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n        let sections = [], inserted = [];\n        for (let i = 0; i < json.length; i++) {\n            let part = json[i];\n            if (typeof part == \"number\") {\n                sections.push(part, -1);\n            }\n            else if (!Array.isArray(part) || typeof part[0] != \"number\" || part.some((e, i) => i && typeof e != \"string\")) {\n                throw new RangeError(\"Invalid JSON representation of ChangeSet\");\n            }\n            else if (part.length == 1) {\n                sections.push(part[0], 0);\n            }\n            else {\n                while (inserted.length < i)\n                    inserted.push(Text.empty);\n                inserted[i] = Text.of(part.slice(1));\n                sections.push(part[0], inserted[i].length);\n            }\n        }\n        return new ChangeSet(sections, inserted);\n    }\n    /**\n    @internal\n    */\n    static createSet(sections, inserted) {\n        return new ChangeSet(sections, inserted);\n    }\n}\nfunction addSection(sections, len, ins, forceJoin = false) {\n    if (len == 0 && ins <= 0)\n        return;\n    let last = sections.length - 2;\n    if (last >= 0 && ins <= 0 && ins == sections[last + 1])\n        sections[last] += len;\n    else if (len == 0 && sections[last] == 0)\n        sections[last + 1] += ins;\n    else if (forceJoin) {\n        sections[last] += len;\n        sections[last + 1] += ins;\n    }\n    else\n        sections.push(len, ins);\n}\nfunction addInsert(values, sections, value) {\n    if (value.length == 0)\n        return;\n    let index = (sections.length - 2) >> 1;\n    if (index < values.length) {\n        values[values.length - 1] = values[values.length - 1].append(value);\n    }\n    else {\n        while (values.length < index)\n            values.push(Text.empty);\n        values.push(value);\n    }\n}\nfunction iterChanges(desc, f, individual) {\n    let inserted = desc.inserted;\n    for (let posA = 0, posB = 0, i = 0; i < desc.sections.length;) {\n        let len = desc.sections[i++], ins = desc.sections[i++];\n        if (ins < 0) {\n            posA += len;\n            posB += len;\n        }\n        else {\n            let endA = posA, endB = posB, text = Text.empty;\n            for (;;) {\n                endA += len;\n                endB += ins;\n                if (ins && inserted)\n                    text = text.append(inserted[(i - 2) >> 1]);\n                if (individual || i == desc.sections.length || desc.sections[i + 1] < 0)\n                    break;\n                len = desc.sections[i++];\n                ins = desc.sections[i++];\n            }\n            f(posA, endA, posB, endB, text);\n            posA = endA;\n            posB = endB;\n        }\n    }\n}\nfunction mapSet(setA, setB, before, mkSet = false) {\n    // Produce a copy of setA that applies to the document after setB\n    // has been applied (assuming both start at the same document).\n    let sections = [], insert = mkSet ? [] : null;\n    let a = new SectionIter(setA), b = new SectionIter(setB);\n    // Iterate over both sets in parallel. inserted tracks, for changes\n    // in A that have to be processed piece-by-piece, whether their\n    // content has been inserted already, and refers to the section\n    // index.\n    for (let inserted = -1;;) {\n        if (a.ins == -1 && b.ins == -1) {\n            // Move across ranges skipped by both sets.\n            let len = Math.min(a.len, b.len);\n            addSection(sections, len, -1);\n            a.forward(len);\n            b.forward(len);\n        }\n        else if (b.ins >= 0 && (a.ins < 0 || inserted == a.i || a.off == 0 && (b.len < a.len || b.len == a.len && !before))) {\n            // If there's a change in B that comes before the next change in\n            // A (ordered by start pos, then len, then before flag), skip\n            // that (and process any changes in A it covers).\n            let len = b.len;\n            addSection(sections, b.ins, -1);\n            while (len) {\n                let piece = Math.min(a.len, len);\n                if (a.ins >= 0 && inserted < a.i && a.len <= piece) {\n                    addSection(sections, 0, a.ins);\n                    if (insert)\n                        addInsert(insert, sections, a.text);\n                    inserted = a.i;\n                }\n                a.forward(piece);\n                len -= piece;\n            }\n            b.next();\n        }\n        else if (a.ins >= 0) {\n            // Process the part of a change in A up to the start of the next\n            // non-deletion change in B (if overlapping).\n            let len = 0, left = a.len;\n            while (left) {\n                if (b.ins == -1) {\n                    let piece = Math.min(left, b.len);\n                    len += piece;\n                    left -= piece;\n                    b.forward(piece);\n                }\n                else if (b.ins == 0 && b.len < left) {\n                    left -= b.len;\n                    b.next();\n                }\n                else {\n                    break;\n                }\n            }\n            addSection(sections, len, inserted < a.i ? a.ins : 0);\n            if (insert && inserted < a.i)\n                addInsert(insert, sections, a.text);\n            inserted = a.i;\n            a.forward(a.len - left);\n        }\n        else if (a.done && b.done) {\n            return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n        }\n        else {\n            throw new Error(\"Mismatched change set lengths\");\n        }\n    }\n}\nfunction composeSets(setA, setB, mkSet = false) {\n    let sections = [];\n    let insert = mkSet ? [] : null;\n    let a = new SectionIter(setA), b = new SectionIter(setB);\n    for (let open = false;;) {\n        if (a.done && b.done) {\n            return insert ? ChangeSet.createSet(sections, insert) : ChangeDesc.create(sections);\n        }\n        else if (a.ins == 0) { // Deletion in A\n            addSection(sections, a.len, 0, open);\n            a.next();\n        }\n        else if (b.len == 0 && !b.done) { // Insertion in B\n            addSection(sections, 0, b.ins, open);\n            if (insert)\n                addInsert(insert, sections, b.text);\n            b.next();\n        }\n        else if (a.done || b.done) {\n            throw new Error(\"Mismatched change set lengths\");\n        }\n        else {\n            let len = Math.min(a.len2, b.len), sectionLen = sections.length;\n            if (a.ins == -1) {\n                let insB = b.ins == -1 ? -1 : b.off ? 0 : b.ins;\n                addSection(sections, len, insB, open);\n                if (insert && insB)\n                    addInsert(insert, sections, b.text);\n            }\n            else if (b.ins == -1) {\n                addSection(sections, a.off ? 0 : a.len, len, open);\n                if (insert)\n                    addInsert(insert, sections, a.textBit(len));\n            }\n            else {\n                addSection(sections, a.off ? 0 : a.len, b.off ? 0 : b.ins, open);\n                if (insert && !b.off)\n                    addInsert(insert, sections, b.text);\n            }\n            open = (a.ins > len || b.ins >= 0 && b.len > len) && (open || sections.length > sectionLen);\n            a.forward2(len);\n            b.forward(len);\n        }\n    }\n}\nclass SectionIter {\n    constructor(set) {\n        this.set = set;\n        this.i = 0;\n        this.next();\n    }\n    next() {\n        let { sections } = this.set;\n        if (this.i < sections.length) {\n            this.len = sections[this.i++];\n            this.ins = sections[this.i++];\n        }\n        else {\n            this.len = 0;\n            this.ins = -2;\n        }\n        this.off = 0;\n    }\n    get done() { return this.ins == -2; }\n    get len2() { return this.ins < 0 ? this.len : this.ins; }\n    get text() {\n        let { inserted } = this.set, index = (this.i - 2) >> 1;\n        return index >= inserted.length ? Text.empty : inserted[index];\n    }\n    textBit(len) {\n        let { inserted } = this.set, index = (this.i - 2) >> 1;\n        return index >= inserted.length && !len ? Text.empty\n            : inserted[index].slice(this.off, len == null ? undefined : this.off + len);\n    }\n    forward(len) {\n        if (len == this.len)\n            this.next();\n        else {\n            this.len -= len;\n            this.off += len;\n        }\n    }\n    forward2(len) {\n        if (this.ins == -1)\n            this.forward(len);\n        else if (len == this.ins)\n            this.next();\n        else {\n            this.ins -= len;\n            this.off += len;\n        }\n    }\n}\n\n/**\nA single selection range. When\n[`allowMultipleSelections`](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\nis enabled, a [selection](https://codemirror.net/6/docs/ref/#state.EditorSelection) may hold\nmultiple ranges. By default, selections hold exactly one range.\n*/\nclass SelectionRange {\n    constructor(\n    /**\n    The lower boundary of the range.\n    */\n    from, \n    /**\n    The upper boundary of the range.\n    */\n    to, flags) {\n        this.from = from;\n        this.to = to;\n        this.flags = flags;\n    }\n    /**\n    The anchor of the range—the side that doesn't move when you\n    extend it.\n    */\n    get anchor() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.to : this.from; }\n    /**\n    The head of the range, which is moved when the range is\n    [extended](https://codemirror.net/6/docs/ref/#state.SelectionRange.extend).\n    */\n    get head() { return this.flags & 32 /* RangeFlag.Inverted */ ? this.from : this.to; }\n    /**\n    True when `anchor` and `head` are at the same position.\n    */\n    get empty() { return this.from == this.to; }\n    /**\n    If this is a cursor that is explicitly associated with the\n    character on one of its sides, this returns the side. -1 means\n    the character before its position, 1 the character after, and 0\n    means no association.\n    */\n    get assoc() { return this.flags & 8 /* RangeFlag.AssocBefore */ ? -1 : this.flags & 16 /* RangeFlag.AssocAfter */ ? 1 : 0; }\n    /**\n    The bidirectional text level associated with this cursor, if\n    any.\n    */\n    get bidiLevel() {\n        let level = this.flags & 7 /* RangeFlag.BidiLevelMask */;\n        return level == 7 ? null : level;\n    }\n    /**\n    The goal column (stored vertical offset) associated with a\n    cursor. This is used to preserve the vertical position when\n    [moving](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) across\n    lines of different length.\n    */\n    get goalColumn() {\n        let value = this.flags >> 6 /* RangeFlag.GoalColumnOffset */;\n        return value == 16777215 /* RangeFlag.NoGoalColumn */ ? undefined : value;\n    }\n    /**\n    Map this range through a change, producing a valid range in the\n    updated document.\n    */\n    map(change, assoc = -1) {\n        let from, to;\n        if (this.empty) {\n            from = to = change.mapPos(this.from, assoc);\n        }\n        else {\n            from = change.mapPos(this.from, 1);\n            to = change.mapPos(this.to, -1);\n        }\n        return from == this.from && to == this.to ? this : new SelectionRange(from, to, this.flags);\n    }\n    /**\n    Extend this range to cover at least `from` to `to`.\n    */\n    extend(from, to = from) {\n        if (from <= this.anchor && to >= this.anchor)\n            return EditorSelection.range(from, to);\n        let head = Math.abs(from - this.anchor) > Math.abs(to - this.anchor) ? from : to;\n        return EditorSelection.range(this.anchor, head);\n    }\n    /**\n    Compare this range to another range.\n    */\n    eq(other, includeAssoc = false) {\n        return this.anchor == other.anchor && this.head == other.head &&\n            (!includeAssoc || !this.empty || this.assoc == other.assoc);\n    }\n    /**\n    Return a JSON-serializable object representing the range.\n    */\n    toJSON() { return { anchor: this.anchor, head: this.head }; }\n    /**\n    Convert a JSON representation of a range to a `SelectionRange`\n    instance.\n    */\n    static fromJSON(json) {\n        if (!json || typeof json.anchor != \"number\" || typeof json.head != \"number\")\n            throw new RangeError(\"Invalid JSON representation for SelectionRange\");\n        return EditorSelection.range(json.anchor, json.head);\n    }\n    /**\n    @internal\n    */\n    static create(from, to, flags) {\n        return new SelectionRange(from, to, flags);\n    }\n}\n/**\nAn editor selection holds one or more selection ranges.\n*/\nclass EditorSelection {\n    constructor(\n    /**\n    The ranges in the selection, sorted by position. Ranges cannot\n    overlap (but they may touch, if they aren't empty).\n    */\n    ranges, \n    /**\n    The index of the _main_ range in the selection (which is\n    usually the range that was added last).\n    */\n    mainIndex) {\n        this.ranges = ranges;\n        this.mainIndex = mainIndex;\n    }\n    /**\n    Map a selection through a change. Used to adjust the selection\n    position for changes.\n    */\n    map(change, assoc = -1) {\n        if (change.empty)\n            return this;\n        return EditorSelection.create(this.ranges.map(r => r.map(change, assoc)), this.mainIndex);\n    }\n    /**\n    Compare this selection to another selection. By default, ranges\n    are compared only by position. When `includeAssoc` is true,\n    cursor ranges must also have the same\n    [`assoc`](https://codemirror.net/6/docs/ref/#state.SelectionRange.assoc) value.\n    */\n    eq(other, includeAssoc = false) {\n        if (this.ranges.length != other.ranges.length ||\n            this.mainIndex != other.mainIndex)\n            return false;\n        for (let i = 0; i < this.ranges.length; i++)\n            if (!this.ranges[i].eq(other.ranges[i], includeAssoc))\n                return false;\n        return true;\n    }\n    /**\n    Get the primary selection range. Usually, you should make sure\n    your code applies to _all_ ranges, by using methods like\n    [`changeByRange`](https://codemirror.net/6/docs/ref/#state.EditorState.changeByRange).\n    */\n    get main() { return this.ranges[this.mainIndex]; }\n    /**\n    Make sure the selection only has one range. Returns a selection\n    holding only the main range from this selection.\n    */\n    asSingle() {\n        return this.ranges.length == 1 ? this : new EditorSelection([this.main], 0);\n    }\n    /**\n    Extend this selection with an extra range.\n    */\n    addRange(range, main = true) {\n        return EditorSelection.create([range].concat(this.ranges), main ? 0 : this.mainIndex + 1);\n    }\n    /**\n    Replace a given range with another range, and then normalize the\n    selection to merge and sort ranges if necessary.\n    */\n    replaceRange(range, which = this.mainIndex) {\n        let ranges = this.ranges.slice();\n        ranges[which] = range;\n        return EditorSelection.create(ranges, this.mainIndex);\n    }\n    /**\n    Convert this selection to an object that can be serialized to\n    JSON.\n    */\n    toJSON() {\n        return { ranges: this.ranges.map(r => r.toJSON()), main: this.mainIndex };\n    }\n    /**\n    Create a selection from a JSON representation.\n    */\n    static fromJSON(json) {\n        if (!json || !Array.isArray(json.ranges) || typeof json.main != \"number\" || json.main >= json.ranges.length)\n            throw new RangeError(\"Invalid JSON representation for EditorSelection\");\n        return new EditorSelection(json.ranges.map((r) => SelectionRange.fromJSON(r)), json.main);\n    }\n    /**\n    Create a selection holding a single range.\n    */\n    static single(anchor, head = anchor) {\n        return new EditorSelection([EditorSelection.range(anchor, head)], 0);\n    }\n    /**\n    Sort and merge the given set of ranges, creating a valid\n    selection.\n    */\n    static create(ranges, mainIndex = 0) {\n        if (ranges.length == 0)\n            throw new RangeError(\"A selection needs at least one range\");\n        for (let pos = 0, i = 0; i < ranges.length; i++) {\n            let range = ranges[i];\n            if (range.empty ? range.from <= pos : range.from < pos)\n                return EditorSelection.normalized(ranges.slice(), mainIndex);\n            pos = range.to;\n        }\n        return new EditorSelection(ranges, mainIndex);\n    }\n    /**\n    Create a cursor selection range at the given position. You can\n    safely ignore the optional arguments in most situations.\n    */\n    static cursor(pos, assoc = 0, bidiLevel, goalColumn) {\n        return SelectionRange.create(pos, pos, (assoc == 0 ? 0 : assoc < 0 ? 8 /* RangeFlag.AssocBefore */ : 16 /* RangeFlag.AssocAfter */) |\n            (bidiLevel == null ? 7 : Math.min(6, bidiLevel)) |\n            ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */));\n    }\n    /**\n    Create a selection range.\n    */\n    static range(anchor, head, goalColumn, bidiLevel) {\n        let flags = ((goalColumn !== null && goalColumn !== void 0 ? goalColumn : 16777215 /* RangeFlag.NoGoalColumn */) << 6 /* RangeFlag.GoalColumnOffset */) |\n            (bidiLevel == null ? 7 : Math.min(6, bidiLevel));\n        return head < anchor ? SelectionRange.create(head, anchor, 32 /* RangeFlag.Inverted */ | 16 /* RangeFlag.AssocAfter */ | flags)\n            : SelectionRange.create(anchor, head, (head > anchor ? 8 /* RangeFlag.AssocBefore */ : 0) | flags);\n    }\n    /**\n    @internal\n    */\n    static normalized(ranges, mainIndex = 0) {\n        let main = ranges[mainIndex];\n        ranges.sort((a, b) => a.from - b.from);\n        mainIndex = ranges.indexOf(main);\n        for (let i = 1; i < ranges.length; i++) {\n            let range = ranges[i], prev = ranges[i - 1];\n            if (range.empty ? range.from <= prev.to : range.from < prev.to) {\n                let from = prev.from, to = Math.max(range.to, prev.to);\n                if (i <= mainIndex)\n                    mainIndex--;\n                ranges.splice(--i, 2, range.anchor > range.head ? EditorSelection.range(to, from) : EditorSelection.range(from, to));\n            }\n        }\n        return new EditorSelection(ranges, mainIndex);\n    }\n}\nfunction checkSelection(selection, docLength) {\n    for (let range of selection.ranges)\n        if (range.to > docLength)\n            throw new RangeError(\"Selection points outside of document\");\n}\n\nlet nextID = 0;\n/**\nA facet is a labeled value that is associated with an editor\nstate. It takes inputs from any number of extensions, and combines\nthose into a single output value.\n\nExamples of uses of facets are the [tab\nsize](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize), [editor\nattributes](https://codemirror.net/6/docs/ref/#view.EditorView^editorAttributes), and [update\nlisteners](https://codemirror.net/6/docs/ref/#view.EditorView^updateListener).\n\nNote that `Facet` instances can be used anywhere where\n[`FacetReader`](https://codemirror.net/6/docs/ref/#state.FacetReader) is expected.\n*/\nclass Facet {\n    constructor(\n    /**\n    @internal\n    */\n    combine, \n    /**\n    @internal\n    */\n    compareInput, \n    /**\n    @internal\n    */\n    compare, isStatic, enables) {\n        this.combine = combine;\n        this.compareInput = compareInput;\n        this.compare = compare;\n        this.isStatic = isStatic;\n        /**\n        @internal\n        */\n        this.id = nextID++;\n        this.default = combine([]);\n        this.extensions = typeof enables == \"function\" ? enables(this) : enables;\n    }\n    /**\n    Returns a facet reader for this facet, which can be used to\n    [read](https://codemirror.net/6/docs/ref/#state.EditorState.facet) it but not to define values for it.\n    */\n    get reader() { return this; }\n    /**\n    Define a new facet.\n    */\n    static define(config = {}) {\n        return new Facet(config.combine || ((a) => a), config.compareInput || ((a, b) => a === b), config.compare || (!config.combine ? sameArray : (a, b) => a === b), !!config.static, config.enables);\n    }\n    /**\n    Returns an extension that adds the given value to this facet.\n    */\n    of(value) {\n        return new FacetProvider([], this, 0 /* Provider.Static */, value);\n    }\n    /**\n    Create an extension that computes a value for the facet from a\n    state. You must take care to declare the parts of the state that\n    this value depends on, since your function is only called again\n    for a new state when one of those parts changed.\n    \n    In cases where your value depends only on a single field, you'll\n    want to use the [`from`](https://codemirror.net/6/docs/ref/#state.Facet.from) method instead.\n    */\n    compute(deps, get) {\n        if (this.isStatic)\n            throw new Error(\"Can't compute a static facet\");\n        return new FacetProvider(deps, this, 1 /* Provider.Single */, get);\n    }\n    /**\n    Create an extension that computes zero or more values for this\n    facet from a state.\n    */\n    computeN(deps, get) {\n        if (this.isStatic)\n            throw new Error(\"Can't compute a static facet\");\n        return new FacetProvider(deps, this, 2 /* Provider.Multi */, get);\n    }\n    from(field, get) {\n        if (!get)\n            get = x => x;\n        return this.compute([field], state => get(state.field(field)));\n    }\n}\nfunction sameArray(a, b) {\n    return a == b || a.length == b.length && a.every((e, i) => e === b[i]);\n}\nclass FacetProvider {\n    constructor(dependencies, facet, type, value) {\n        this.dependencies = dependencies;\n        this.facet = facet;\n        this.type = type;\n        this.value = value;\n        this.id = nextID++;\n    }\n    dynamicSlot(addresses) {\n        var _a;\n        let getter = this.value;\n        let compare = this.facet.compareInput;\n        let id = this.id, idx = addresses[id] >> 1, multi = this.type == 2 /* Provider.Multi */;\n        let depDoc = false, depSel = false, depAddrs = [];\n        for (let dep of this.dependencies) {\n            if (dep == \"doc\")\n                depDoc = true;\n            else if (dep == \"selection\")\n                depSel = true;\n            else if ((((_a = addresses[dep.id]) !== null && _a !== void 0 ? _a : 1) & 1) == 0)\n                depAddrs.push(addresses[dep.id]);\n        }\n        return {\n            create(state) {\n                state.values[idx] = getter(state);\n                return 1 /* SlotStatus.Changed */;\n            },\n            update(state, tr) {\n                if ((depDoc && tr.docChanged) || (depSel && (tr.docChanged || tr.selection)) || ensureAll(state, depAddrs)) {\n                    let newVal = getter(state);\n                    if (multi ? !compareArray(newVal, state.values[idx], compare) : !compare(newVal, state.values[idx])) {\n                        state.values[idx] = newVal;\n                        return 1 /* SlotStatus.Changed */;\n                    }\n                }\n                return 0;\n            },\n            reconfigure: (state, oldState) => {\n                let newVal, oldAddr = oldState.config.address[id];\n                if (oldAddr != null) {\n                    let oldVal = getAddr(oldState, oldAddr);\n                    if (this.dependencies.every(dep => {\n                        return dep instanceof Facet ? oldState.facet(dep) === state.facet(dep) :\n                            dep instanceof StateField ? oldState.field(dep, false) == state.field(dep, false) : true;\n                    }) || (multi ? compareArray(newVal = getter(state), oldVal, compare) : compare(newVal = getter(state), oldVal))) {\n                        state.values[idx] = oldVal;\n                        return 0;\n                    }\n                }\n                else {\n                    newVal = getter(state);\n                }\n                state.values[idx] = newVal;\n                return 1 /* SlotStatus.Changed */;\n            }\n        };\n    }\n}\nfunction compareArray(a, b, compare) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (!compare(a[i], b[i]))\n            return false;\n    return true;\n}\nfunction ensureAll(state, addrs) {\n    let changed = false;\n    for (let addr of addrs)\n        if (ensureAddr(state, addr) & 1 /* SlotStatus.Changed */)\n            changed = true;\n    return changed;\n}\nfunction dynamicFacetSlot(addresses, facet, providers) {\n    let providerAddrs = providers.map(p => addresses[p.id]);\n    let providerTypes = providers.map(p => p.type);\n    let dynamic = providerAddrs.filter(p => !(p & 1));\n    let idx = addresses[facet.id] >> 1;\n    function get(state) {\n        let values = [];\n        for (let i = 0; i < providerAddrs.length; i++) {\n            let value = getAddr(state, providerAddrs[i]);\n            if (providerTypes[i] == 2 /* Provider.Multi */)\n                for (let val of value)\n                    values.push(val);\n            else\n                values.push(value);\n        }\n        return facet.combine(values);\n    }\n    return {\n        create(state) {\n            for (let addr of providerAddrs)\n                ensureAddr(state, addr);\n            state.values[idx] = get(state);\n            return 1 /* SlotStatus.Changed */;\n        },\n        update(state, tr) {\n            if (!ensureAll(state, dynamic))\n                return 0;\n            let value = get(state);\n            if (facet.compare(value, state.values[idx]))\n                return 0;\n            state.values[idx] = value;\n            return 1 /* SlotStatus.Changed */;\n        },\n        reconfigure(state, oldState) {\n            let depChanged = ensureAll(state, providerAddrs);\n            let oldProviders = oldState.config.facets[facet.id], oldValue = oldState.facet(facet);\n            if (oldProviders && !depChanged && sameArray(providers, oldProviders)) {\n                state.values[idx] = oldValue;\n                return 0;\n            }\n            let value = get(state);\n            if (facet.compare(value, oldValue)) {\n                state.values[idx] = oldValue;\n                return 0;\n            }\n            state.values[idx] = value;\n            return 1 /* SlotStatus.Changed */;\n        }\n    };\n}\nconst initField = /*@__PURE__*/Facet.define({ static: true });\n/**\nFields can store additional information in an editor state, and\nkeep it in sync with the rest of the state.\n*/\nclass StateField {\n    constructor(\n    /**\n    @internal\n    */\n    id, createF, updateF, compareF, \n    /**\n    @internal\n    */\n    spec) {\n        this.id = id;\n        this.createF = createF;\n        this.updateF = updateF;\n        this.compareF = compareF;\n        this.spec = spec;\n        /**\n        @internal\n        */\n        this.provides = undefined;\n    }\n    /**\n    Define a state field.\n    */\n    static define(config) {\n        let field = new StateField(nextID++, config.create, config.update, config.compare || ((a, b) => a === b), config);\n        if (config.provide)\n            field.provides = config.provide(field);\n        return field;\n    }\n    create(state) {\n        let init = state.facet(initField).find(i => i.field == this);\n        return ((init === null || init === void 0 ? void 0 : init.create) || this.createF)(state);\n    }\n    /**\n    @internal\n    */\n    slot(addresses) {\n        let idx = addresses[this.id] >> 1;\n        return {\n            create: (state) => {\n                state.values[idx] = this.create(state);\n                return 1 /* SlotStatus.Changed */;\n            },\n            update: (state, tr) => {\n                let oldVal = state.values[idx];\n                let value = this.updateF(oldVal, tr);\n                if (this.compareF(oldVal, value))\n                    return 0;\n                state.values[idx] = value;\n                return 1 /* SlotStatus.Changed */;\n            },\n            reconfigure: (state, oldState) => {\n                if (oldState.config.address[this.id] != null) {\n                    state.values[idx] = oldState.field(this);\n                    return 0;\n                }\n                state.values[idx] = this.create(state);\n                return 1 /* SlotStatus.Changed */;\n            }\n        };\n    }\n    /**\n    Returns an extension that enables this field and overrides the\n    way it is initialized. Can be useful when you need to provide a\n    non-default starting value for the field.\n    */\n    init(create) {\n        return [this, initField.of({ field: this, create })];\n    }\n    /**\n    State field instances can be used as\n    [`Extension`](https://codemirror.net/6/docs/ref/#state.Extension) values to enable the field in a\n    given state.\n    */\n    get extension() { return this; }\n}\nconst Prec_ = { lowest: 4, low: 3, default: 2, high: 1, highest: 0 };\nfunction prec(value) {\n    return (ext) => new PrecExtension(ext, value);\n}\n/**\nBy default extensions are registered in the order they are found\nin the flattened form of nested array that was provided.\nIndividual extension values can be assigned a precedence to\noverride this. Extensions that do not have a precedence set get\nthe precedence of the nearest parent with a precedence, or\n[`default`](https://codemirror.net/6/docs/ref/#state.Prec.default) if there is no such parent. The\nfinal ordering of extensions is determined by first sorting by\nprecedence and then by order within each precedence.\n*/\nconst Prec = {\n    /**\n    The highest precedence level, for extensions that should end up\n    near the start of the precedence ordering.\n    */\n    highest: /*@__PURE__*/prec(Prec_.highest),\n    /**\n    A higher-than-default precedence, for extensions that should\n    come before those with default precedence.\n    */\n    high: /*@__PURE__*/prec(Prec_.high),\n    /**\n    The default precedence, which is also used for extensions\n    without an explicit precedence.\n    */\n    default: /*@__PURE__*/prec(Prec_.default),\n    /**\n    A lower-than-default precedence.\n    */\n    low: /*@__PURE__*/prec(Prec_.low),\n    /**\n    The lowest precedence level. Meant for things that should end up\n    near the end of the extension order.\n    */\n    lowest: /*@__PURE__*/prec(Prec_.lowest)\n};\nclass PrecExtension {\n    constructor(inner, prec) {\n        this.inner = inner;\n        this.prec = prec;\n    }\n}\n/**\nExtension compartments can be used to make a configuration\ndynamic. By [wrapping](https://codemirror.net/6/docs/ref/#state.Compartment.of) part of your\nconfiguration in a compartment, you can later\n[replace](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure) that part through a\ntransaction.\n*/\nclass Compartment {\n    /**\n    Create an instance of this compartment to add to your [state\n    configuration](https://codemirror.net/6/docs/ref/#state.EditorStateConfig.extensions).\n    */\n    of(ext) { return new CompartmentInstance(this, ext); }\n    /**\n    Create an [effect](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) that\n    reconfigures this compartment.\n    */\n    reconfigure(content) {\n        return Compartment.reconfigure.of({ compartment: this, extension: content });\n    }\n    /**\n    Get the current content of the compartment in the state, or\n    `undefined` if it isn't present.\n    */\n    get(state) {\n        return state.config.compartments.get(this);\n    }\n}\nclass CompartmentInstance {\n    constructor(compartment, inner) {\n        this.compartment = compartment;\n        this.inner = inner;\n    }\n}\nclass Configuration {\n    constructor(base, compartments, dynamicSlots, address, staticValues, facets) {\n        this.base = base;\n        this.compartments = compartments;\n        this.dynamicSlots = dynamicSlots;\n        this.address = address;\n        this.staticValues = staticValues;\n        this.facets = facets;\n        this.statusTemplate = [];\n        while (this.statusTemplate.length < dynamicSlots.length)\n            this.statusTemplate.push(0 /* SlotStatus.Unresolved */);\n    }\n    staticFacet(facet) {\n        let addr = this.address[facet.id];\n        return addr == null ? facet.default : this.staticValues[addr >> 1];\n    }\n    static resolve(base, compartments, oldState) {\n        let fields = [];\n        let facets = Object.create(null);\n        let newCompartments = new Map();\n        for (let ext of flatten(base, compartments, newCompartments)) {\n            if (ext instanceof StateField)\n                fields.push(ext);\n            else\n                (facets[ext.facet.id] || (facets[ext.facet.id] = [])).push(ext);\n        }\n        let address = Object.create(null);\n        let staticValues = [];\n        let dynamicSlots = [];\n        for (let field of fields) {\n            address[field.id] = dynamicSlots.length << 1;\n            dynamicSlots.push(a => field.slot(a));\n        }\n        let oldFacets = oldState === null || oldState === void 0 ? void 0 : oldState.config.facets;\n        for (let id in facets) {\n            let providers = facets[id], facet = providers[0].facet;\n            let oldProviders = oldFacets && oldFacets[id] || [];\n            if (providers.every(p => p.type == 0 /* Provider.Static */)) {\n                address[facet.id] = (staticValues.length << 1) | 1;\n                if (sameArray(oldProviders, providers)) {\n                    staticValues.push(oldState.facet(facet));\n                }\n                else {\n                    let value = facet.combine(providers.map(p => p.value));\n                    staticValues.push(oldState && facet.compare(value, oldState.facet(facet)) ? oldState.facet(facet) : value);\n                }\n            }\n            else {\n                for (let p of providers) {\n                    if (p.type == 0 /* Provider.Static */) {\n                        address[p.id] = (staticValues.length << 1) | 1;\n                        staticValues.push(p.value);\n                    }\n                    else {\n                        address[p.id] = dynamicSlots.length << 1;\n                        dynamicSlots.push(a => p.dynamicSlot(a));\n                    }\n                }\n                address[facet.id] = dynamicSlots.length << 1;\n                dynamicSlots.push(a => dynamicFacetSlot(a, facet, providers));\n            }\n        }\n        let dynamic = dynamicSlots.map(f => f(address));\n        return new Configuration(base, newCompartments, dynamic, address, staticValues, facets);\n    }\n}\nfunction flatten(extension, compartments, newCompartments) {\n    let result = [[], [], [], [], []];\n    let seen = new Map();\n    function inner(ext, prec) {\n        let known = seen.get(ext);\n        if (known != null) {\n            if (known <= prec)\n                return;\n            let found = result[known].indexOf(ext);\n            if (found > -1)\n                result[known].splice(found, 1);\n            if (ext instanceof CompartmentInstance)\n                newCompartments.delete(ext.compartment);\n        }\n        seen.set(ext, prec);\n        if (Array.isArray(ext)) {\n            for (let e of ext)\n                inner(e, prec);\n        }\n        else if (ext instanceof CompartmentInstance) {\n            if (newCompartments.has(ext.compartment))\n                throw new RangeError(`Duplicate use of compartment in extensions`);\n            let content = compartments.get(ext.compartment) || ext.inner;\n            newCompartments.set(ext.compartment, content);\n            inner(content, prec);\n        }\n        else if (ext instanceof PrecExtension) {\n            inner(ext.inner, ext.prec);\n        }\n        else if (ext instanceof StateField) {\n            result[prec].push(ext);\n            if (ext.provides)\n                inner(ext.provides, prec);\n        }\n        else if (ext instanceof FacetProvider) {\n            result[prec].push(ext);\n            if (ext.facet.extensions)\n                inner(ext.facet.extensions, Prec_.default);\n        }\n        else {\n            let content = ext.extension;\n            if (!content)\n                throw new Error(`Unrecognized extension value in extension set (${ext}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);\n            inner(content, prec);\n        }\n    }\n    inner(extension, Prec_.default);\n    return result.reduce((a, b) => a.concat(b));\n}\nfunction ensureAddr(state, addr) {\n    if (addr & 1)\n        return 2 /* SlotStatus.Computed */;\n    let idx = addr >> 1;\n    let status = state.status[idx];\n    if (status == 4 /* SlotStatus.Computing */)\n        throw new Error(\"Cyclic dependency between fields and/or facets\");\n    if (status & 2 /* SlotStatus.Computed */)\n        return status;\n    state.status[idx] = 4 /* SlotStatus.Computing */;\n    let changed = state.computeSlot(state, state.config.dynamicSlots[idx]);\n    return state.status[idx] = 2 /* SlotStatus.Computed */ | changed;\n}\nfunction getAddr(state, addr) {\n    return addr & 1 ? state.config.staticValues[addr >> 1] : state.values[addr >> 1];\n}\n\nconst languageData = /*@__PURE__*/Facet.define();\nconst allowMultipleSelections = /*@__PURE__*/Facet.define({\n    combine: values => values.some(v => v),\n    static: true\n});\nconst lineSeparator = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : undefined,\n    static: true\n});\nconst changeFilter = /*@__PURE__*/Facet.define();\nconst transactionFilter = /*@__PURE__*/Facet.define();\nconst transactionExtender = /*@__PURE__*/Facet.define();\nconst readOnly = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : false\n});\n\n/**\nAnnotations are tagged values that are used to add metadata to\ntransactions in an extensible way. They should be used to model\nthings that effect the entire transaction (such as its [time\nstamp](https://codemirror.net/6/docs/ref/#state.Transaction^time) or information about its\n[origin](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent)). For effects that happen\n_alongside_ the other changes made by the transaction, [state\neffects](https://codemirror.net/6/docs/ref/#state.StateEffect) are more appropriate.\n*/\nclass Annotation {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The annotation type.\n    */\n    type, \n    /**\n    The value of this annotation.\n    */\n    value) {\n        this.type = type;\n        this.value = value;\n    }\n    /**\n    Define a new type of annotation.\n    */\n    static define() { return new AnnotationType(); }\n}\n/**\nMarker that identifies a type of [annotation](https://codemirror.net/6/docs/ref/#state.Annotation).\n*/\nclass AnnotationType {\n    /**\n    Create an instance of this annotation.\n    */\n    of(value) { return new Annotation(this, value); }\n}\n/**\nRepresentation of a type of state effect. Defined with\n[`StateEffect.define`](https://codemirror.net/6/docs/ref/#state.StateEffect^define).\n*/\nclass StateEffectType {\n    /**\n    @internal\n    */\n    constructor(\n    // The `any` types in these function types are there to work\n    // around TypeScript issue #37631, where the type guard on\n    // `StateEffect.is` mysteriously stops working when these properly\n    // have type `Value`.\n    /**\n    @internal\n    */\n    map) {\n        this.map = map;\n    }\n    /**\n    Create a [state effect](https://codemirror.net/6/docs/ref/#state.StateEffect) instance of this\n    type.\n    */\n    of(value) { return new StateEffect(this, value); }\n}\n/**\nState effects can be used to represent additional effects\nassociated with a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction.effects). They\nare often useful to model changes to custom [state\nfields](https://codemirror.net/6/docs/ref/#state.StateField), when those changes aren't implicit in\ndocument or selection changes.\n*/\nclass StateEffect {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    @internal\n    */\n    type, \n    /**\n    The value of this effect.\n    */\n    value) {\n        this.type = type;\n        this.value = value;\n    }\n    /**\n    Map this effect through a position mapping. Will return\n    `undefined` when that ends up deleting the effect.\n    */\n    map(mapping) {\n        let mapped = this.type.map(this.value, mapping);\n        return mapped === undefined ? undefined : mapped == this.value ? this : new StateEffect(this.type, mapped);\n    }\n    /**\n    Tells you whether this effect object is of a given\n    [type](https://codemirror.net/6/docs/ref/#state.StateEffectType).\n    */\n    is(type) { return this.type == type; }\n    /**\n    Define a new effect type. The type parameter indicates the type\n    of values that his effect holds. It should be a type that\n    doesn't include `undefined`, since that is used in\n    [mapping](https://codemirror.net/6/docs/ref/#state.StateEffect.map) to indicate that an effect is\n    removed.\n    */\n    static define(spec = {}) {\n        return new StateEffectType(spec.map || (v => v));\n    }\n    /**\n    Map an array of effects through a change set.\n    */\n    static mapEffects(effects, mapping) {\n        if (!effects.length)\n            return effects;\n        let result = [];\n        for (let effect of effects) {\n            let mapped = effect.map(mapping);\n            if (mapped)\n                result.push(mapped);\n        }\n        return result;\n    }\n}\n/**\nThis effect can be used to reconfigure the root extensions of\nthe editor. Doing this will discard any extensions\n[appended](https://codemirror.net/6/docs/ref/#state.StateEffect^appendConfig), but does not reset\nthe content of [reconfigured](https://codemirror.net/6/docs/ref/#state.Compartment.reconfigure)\ncompartments.\n*/\nStateEffect.reconfigure = /*@__PURE__*/StateEffect.define();\n/**\nAppend extensions to the top-level configuration of the editor.\n*/\nStateEffect.appendConfig = /*@__PURE__*/StateEffect.define();\n/**\nChanges to the editor state are grouped into transactions.\nTypically, a user action creates a single transaction, which may\ncontain any number of document changes, may change the selection,\nor have other effects. Create a transaction by calling\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update), or immediately\ndispatch one by calling\n[`EditorView.dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch).\n*/\nclass Transaction {\n    constructor(\n    /**\n    The state from which the transaction starts.\n    */\n    startState, \n    /**\n    The document changes made by this transaction.\n    */\n    changes, \n    /**\n    The selection set by this transaction, or undefined if it\n    doesn't explicitly set a selection.\n    */\n    selection, \n    /**\n    The effects added to the transaction.\n    */\n    effects, \n    /**\n    @internal\n    */\n    annotations, \n    /**\n    Whether the selection should be scrolled into view after this\n    transaction is dispatched.\n    */\n    scrollIntoView) {\n        this.startState = startState;\n        this.changes = changes;\n        this.selection = selection;\n        this.effects = effects;\n        this.annotations = annotations;\n        this.scrollIntoView = scrollIntoView;\n        /**\n        @internal\n        */\n        this._doc = null;\n        /**\n        @internal\n        */\n        this._state = null;\n        if (selection)\n            checkSelection(selection, changes.newLength);\n        if (!annotations.some((a) => a.type == Transaction.time))\n            this.annotations = annotations.concat(Transaction.time.of(Date.now()));\n    }\n    /**\n    @internal\n    */\n    static create(startState, changes, selection, effects, annotations, scrollIntoView) {\n        return new Transaction(startState, changes, selection, effects, annotations, scrollIntoView);\n    }\n    /**\n    The new document produced by the transaction. Contrary to\n    [`.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state)`.doc`, accessing this won't\n    force the entire new state to be computed right away, so it is\n    recommended that [transaction\n    filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) use this getter\n    when they need to look at the new document.\n    */\n    get newDoc() {\n        return this._doc || (this._doc = this.changes.apply(this.startState.doc));\n    }\n    /**\n    The new selection produced by the transaction. If\n    [`this.selection`](https://codemirror.net/6/docs/ref/#state.Transaction.selection) is undefined,\n    this will [map](https://codemirror.net/6/docs/ref/#state.EditorSelection.map) the start state's\n    current selection through the changes made by the transaction.\n    */\n    get newSelection() {\n        return this.selection || this.startState.selection.map(this.changes);\n    }\n    /**\n    The new state created by the transaction. Computed on demand\n    (but retained for subsequent access), so it is recommended not to\n    access it in [transaction\n    filters](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter) when possible.\n    */\n    get state() {\n        if (!this._state)\n            this.startState.applyTransaction(this);\n        return this._state;\n    }\n    /**\n    Get the value of the given annotation type, if any.\n    */\n    annotation(type) {\n        for (let ann of this.annotations)\n            if (ann.type == type)\n                return ann.value;\n        return undefined;\n    }\n    /**\n    Indicates whether the transaction changed the document.\n    */\n    get docChanged() { return !this.changes.empty; }\n    /**\n    Indicates whether this transaction reconfigures the state\n    (through a [configuration compartment](https://codemirror.net/6/docs/ref/#state.Compartment) or\n    with a top-level configuration\n    [effect](https://codemirror.net/6/docs/ref/#state.StateEffect^reconfigure).\n    */\n    get reconfigured() { return this.startState.config != this.state.config; }\n    /**\n    Returns true if the transaction has a [user\n    event](https://codemirror.net/6/docs/ref/#state.Transaction^userEvent) annotation that is equal to\n    or more specific than `event`. For example, if the transaction\n    has `\"select.pointer\"` as user event, `\"select\"` and\n    `\"select.pointer\"` will match it.\n    */\n    isUserEvent(event) {\n        let e = this.annotation(Transaction.userEvent);\n        return !!(e && (e == event || e.length > event.length && e.slice(0, event.length) == event && e[event.length] == \".\"));\n    }\n}\n/**\nAnnotation used to store transaction timestamps. Automatically\nadded to every transaction, holding `Date.now()`.\n*/\nTransaction.time = /*@__PURE__*/Annotation.define();\n/**\nAnnotation used to associate a transaction with a user interface\nevent. Holds a string identifying the event, using a\ndot-separated format to support attaching more specific\ninformation. The events used by the core libraries are:\n\n - `\"input\"` when content is entered\n   - `\"input.type\"` for typed input\n     - `\"input.type.compose\"` for composition\n   - `\"input.paste\"` for pasted input\n   - `\"input.drop\"` when adding content with drag-and-drop\n   - `\"input.complete\"` when autocompleting\n - `\"delete\"` when the user deletes content\n   - `\"delete.selection\"` when deleting the selection\n   - `\"delete.forward\"` when deleting forward from the selection\n   - `\"delete.backward\"` when deleting backward from the selection\n   - `\"delete.cut\"` when cutting to the clipboard\n - `\"move\"` when content is moved\n   - `\"move.drop\"` when content is moved within the editor through drag-and-drop\n - `\"select\"` when explicitly changing the selection\n   - `\"select.pointer\"` when selecting with a mouse or other pointing device\n - `\"undo\"` and `\"redo\"` for history actions\n\nUse [`isUserEvent`](https://codemirror.net/6/docs/ref/#state.Transaction.isUserEvent) to check\nwhether the annotation matches a given event.\n*/\nTransaction.userEvent = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating whether a transaction should be added to\nthe undo history or not.\n*/\nTransaction.addToHistory = /*@__PURE__*/Annotation.define();\n/**\nAnnotation indicating (when present and true) that a transaction\nrepresents a change made by some other actor, not the user. This\nis used, for example, to tag other people's changes in\ncollaborative editing.\n*/\nTransaction.remote = /*@__PURE__*/Annotation.define();\nfunction joinRanges(a, b) {\n    let result = [];\n    for (let iA = 0, iB = 0;;) {\n        let from, to;\n        if (iA < a.length && (iB == b.length || b[iB] >= a[iA])) {\n            from = a[iA++];\n            to = a[iA++];\n        }\n        else if (iB < b.length) {\n            from = b[iB++];\n            to = b[iB++];\n        }\n        else\n            return result;\n        if (!result.length || result[result.length - 1] < from)\n            result.push(from, to);\n        else if (result[result.length - 1] < to)\n            result[result.length - 1] = to;\n    }\n}\nfunction mergeTransaction(a, b, sequential) {\n    var _a;\n    let mapForA, mapForB, changes;\n    if (sequential) {\n        mapForA = b.changes;\n        mapForB = ChangeSet.empty(b.changes.length);\n        changes = a.changes.compose(b.changes);\n    }\n    else {\n        mapForA = b.changes.map(a.changes);\n        mapForB = a.changes.mapDesc(b.changes, true);\n        changes = a.changes.compose(mapForA);\n    }\n    return {\n        changes,\n        selection: b.selection ? b.selection.map(mapForB) : (_a = a.selection) === null || _a === void 0 ? void 0 : _a.map(mapForA),\n        effects: StateEffect.mapEffects(a.effects, mapForA).concat(StateEffect.mapEffects(b.effects, mapForB)),\n        annotations: a.annotations.length ? a.annotations.concat(b.annotations) : b.annotations,\n        scrollIntoView: a.scrollIntoView || b.scrollIntoView\n    };\n}\nfunction resolveTransactionInner(state, spec, docSize) {\n    let sel = spec.selection, annotations = asArray(spec.annotations);\n    if (spec.userEvent)\n        annotations = annotations.concat(Transaction.userEvent.of(spec.userEvent));\n    return {\n        changes: spec.changes instanceof ChangeSet ? spec.changes\n            : ChangeSet.of(spec.changes || [], docSize, state.facet(lineSeparator)),\n        selection: sel && (sel instanceof EditorSelection ? sel : EditorSelection.single(sel.anchor, sel.head)),\n        effects: asArray(spec.effects),\n        annotations,\n        scrollIntoView: !!spec.scrollIntoView\n    };\n}\nfunction resolveTransaction(state, specs, filter) {\n    let s = resolveTransactionInner(state, specs.length ? specs[0] : {}, state.doc.length);\n    if (specs.length && specs[0].filter === false)\n        filter = false;\n    for (let i = 1; i < specs.length; i++) {\n        if (specs[i].filter === false)\n            filter = false;\n        let seq = !!specs[i].sequential;\n        s = mergeTransaction(s, resolveTransactionInner(state, specs[i], seq ? s.changes.newLength : state.doc.length), seq);\n    }\n    let tr = Transaction.create(state, s.changes, s.selection, s.effects, s.annotations, s.scrollIntoView);\n    return extendTransaction(filter ? filterTransaction(tr) : tr);\n}\n// Finish a transaction by applying filters if necessary.\nfunction filterTransaction(tr) {\n    let state = tr.startState;\n    // Change filters\n    let result = true;\n    for (let filter of state.facet(changeFilter)) {\n        let value = filter(tr);\n        if (value === false) {\n            result = false;\n            break;\n        }\n        if (Array.isArray(value))\n            result = result === true ? value : joinRanges(result, value);\n    }\n    if (result !== true) {\n        let changes, back;\n        if (result === false) {\n            back = tr.changes.invertedDesc;\n            changes = ChangeSet.empty(state.doc.length);\n        }\n        else {\n            let filtered = tr.changes.filter(result);\n            changes = filtered.changes;\n            back = filtered.filtered.mapDesc(filtered.changes).invertedDesc;\n        }\n        tr = Transaction.create(state, changes, tr.selection && tr.selection.map(back), StateEffect.mapEffects(tr.effects, back), tr.annotations, tr.scrollIntoView);\n    }\n    // Transaction filters\n    let filters = state.facet(transactionFilter);\n    for (let i = filters.length - 1; i >= 0; i--) {\n        let filtered = filters[i](tr);\n        if (filtered instanceof Transaction)\n            tr = filtered;\n        else if (Array.isArray(filtered) && filtered.length == 1 && filtered[0] instanceof Transaction)\n            tr = filtered[0];\n        else\n            tr = resolveTransaction(state, asArray(filtered), false);\n    }\n    return tr;\n}\nfunction extendTransaction(tr) {\n    let state = tr.startState, extenders = state.facet(transactionExtender), spec = tr;\n    for (let i = extenders.length - 1; i >= 0; i--) {\n        let extension = extenders[i](tr);\n        if (extension && Object.keys(extension).length)\n            spec = mergeTransaction(spec, resolveTransactionInner(state, extension, tr.changes.newLength), true);\n    }\n    return spec == tr ? tr : Transaction.create(state, tr.changes, tr.selection, spec.effects, spec.annotations, spec.scrollIntoView);\n}\nconst none = [];\nfunction asArray(value) {\n    return value == null ? none : Array.isArray(value) ? value : [value];\n}\n\n/**\nThe categories produced by a [character\ncategorizer](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer). These are used\ndo things like selecting by word.\n*/\nvar CharCategory = /*@__PURE__*/(function (CharCategory) {\n    /**\n    Word characters.\n    */\n    CharCategory[CharCategory[\"Word\"] = 0] = \"Word\";\n    /**\n    Whitespace.\n    */\n    CharCategory[CharCategory[\"Space\"] = 1] = \"Space\";\n    /**\n    Anything else.\n    */\n    CharCategory[CharCategory[\"Other\"] = 2] = \"Other\";\nreturn CharCategory})(CharCategory || (CharCategory = {}));\nconst nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\nlet wordChar;\ntry {\n    wordChar = /*@__PURE__*/new RegExp(\"[\\\\p{Alphabetic}\\\\p{Number}_]\", \"u\");\n}\ncatch (_) { }\nfunction hasWordChar(str) {\n    if (wordChar)\n        return wordChar.test(str);\n    for (let i = 0; i < str.length; i++) {\n        let ch = str[i];\n        if (/\\w/.test(ch) || ch > \"\\x80\" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)))\n            return true;\n    }\n    return false;\n}\nfunction makeCategorizer(wordChars) {\n    return (char) => {\n        if (!/\\S/.test(char))\n            return CharCategory.Space;\n        if (hasWordChar(char))\n            return CharCategory.Word;\n        for (let i = 0; i < wordChars.length; i++)\n            if (char.indexOf(wordChars[i]) > -1)\n                return CharCategory.Word;\n        return CharCategory.Other;\n    };\n}\n\n/**\nThe editor state class is a persistent (immutable) data structure.\nTo update a state, you [create](https://codemirror.net/6/docs/ref/#state.EditorState.update) a\n[transaction](https://codemirror.net/6/docs/ref/#state.Transaction), which produces a _new_ state\ninstance, without modifying the original object.\n\nAs such, _never_ mutate properties of a state directly. That'll\njust break things.\n*/\nclass EditorState {\n    constructor(\n    /**\n    @internal\n    */\n    config, \n    /**\n    The current document.\n    */\n    doc, \n    /**\n    The current selection.\n    */\n    selection, \n    /**\n    @internal\n    */\n    values, computeSlot, tr) {\n        this.config = config;\n        this.doc = doc;\n        this.selection = selection;\n        this.values = values;\n        this.status = config.statusTemplate.slice();\n        this.computeSlot = computeSlot;\n        // Fill in the computed state immediately, so that further queries\n        // for it made during the update return this state\n        if (tr)\n            tr._state = this;\n        for (let i = 0; i < this.config.dynamicSlots.length; i++)\n            ensureAddr(this, i << 1);\n        this.computeSlot = null;\n    }\n    field(field, require = true) {\n        let addr = this.config.address[field.id];\n        if (addr == null) {\n            if (require)\n                throw new RangeError(\"Field is not present in this state\");\n            return undefined;\n        }\n        ensureAddr(this, addr);\n        return getAddr(this, addr);\n    }\n    /**\n    Create a [transaction](https://codemirror.net/6/docs/ref/#state.Transaction) that updates this\n    state. Any number of [transaction specs](https://codemirror.net/6/docs/ref/#state.TransactionSpec)\n    can be passed. Unless\n    [`sequential`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.sequential) is set, the\n    [changes](https://codemirror.net/6/docs/ref/#state.TransactionSpec.changes) (if any) of each spec\n    are assumed to start in the _current_ document (not the document\n    produced by previous specs), and its\n    [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) and\n    [effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) are assumed to refer\n    to the document created by its _own_ changes. The resulting\n    transaction contains the combined effect of all the different\n    specs. For [selection](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection), later\n    specs take precedence over earlier ones.\n    */\n    update(...specs) {\n        return resolveTransaction(this, specs, true);\n    }\n    /**\n    @internal\n    */\n    applyTransaction(tr) {\n        let conf = this.config, { base, compartments } = conf;\n        for (let effect of tr.effects) {\n            if (effect.is(Compartment.reconfigure)) {\n                if (conf) {\n                    compartments = new Map;\n                    conf.compartments.forEach((val, key) => compartments.set(key, val));\n                    conf = null;\n                }\n                compartments.set(effect.value.compartment, effect.value.extension);\n            }\n            else if (effect.is(StateEffect.reconfigure)) {\n                conf = null;\n                base = effect.value;\n            }\n            else if (effect.is(StateEffect.appendConfig)) {\n                conf = null;\n                base = asArray(base).concat(effect.value);\n            }\n        }\n        let startValues;\n        if (!conf) {\n            conf = Configuration.resolve(base, compartments, this);\n            let intermediateState = new EditorState(conf, this.doc, this.selection, conf.dynamicSlots.map(() => null), (state, slot) => slot.reconfigure(state, this), null);\n            startValues = intermediateState.values;\n        }\n        else {\n            startValues = tr.startState.values.slice();\n        }\n        let selection = tr.startState.facet(allowMultipleSelections) ? tr.newSelection : tr.newSelection.asSingle();\n        new EditorState(conf, tr.newDoc, selection, startValues, (state, slot) => slot.update(state, tr), tr);\n    }\n    /**\n    Create a [transaction spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec) that\n    replaces every selection range with the given content.\n    */\n    replaceSelection(text) {\n        if (typeof text == \"string\")\n            text = this.toText(text);\n        return this.changeByRange(range => ({ changes: { from: range.from, to: range.to, insert: text },\n            range: EditorSelection.cursor(range.from + text.length) }));\n    }\n    /**\n    Create a set of changes and a new selection by running the given\n    function for each range in the active selection. The function\n    can return an optional set of changes (in the coordinate space\n    of the start document), plus an updated range (in the coordinate\n    space of the document produced by the call's own changes). This\n    method will merge all the changes and ranges into a single\n    changeset and selection, and return it as a [transaction\n    spec](https://codemirror.net/6/docs/ref/#state.TransactionSpec), which can be passed to\n    [`update`](https://codemirror.net/6/docs/ref/#state.EditorState.update).\n    */\n    changeByRange(f) {\n        let sel = this.selection;\n        let result1 = f(sel.ranges[0]);\n        let changes = this.changes(result1.changes), ranges = [result1.range];\n        let effects = asArray(result1.effects);\n        for (let i = 1; i < sel.ranges.length; i++) {\n            let result = f(sel.ranges[i]);\n            let newChanges = this.changes(result.changes), newMapped = newChanges.map(changes);\n            for (let j = 0; j < i; j++)\n                ranges[j] = ranges[j].map(newMapped);\n            let mapBy = changes.mapDesc(newChanges, true);\n            ranges.push(result.range.map(mapBy));\n            changes = changes.compose(newMapped);\n            effects = StateEffect.mapEffects(effects, newMapped).concat(StateEffect.mapEffects(asArray(result.effects), mapBy));\n        }\n        return {\n            changes,\n            selection: EditorSelection.create(ranges, sel.mainIndex),\n            effects\n        };\n    }\n    /**\n    Create a [change set](https://codemirror.net/6/docs/ref/#state.ChangeSet) from the given change\n    description, taking the state's document length and line\n    separator into account.\n    */\n    changes(spec = []) {\n        if (spec instanceof ChangeSet)\n            return spec;\n        return ChangeSet.of(spec, this.doc.length, this.facet(EditorState.lineSeparator));\n    }\n    /**\n    Using the state's [line\n    separator](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator), create a\n    [`Text`](https://codemirror.net/6/docs/ref/#state.Text) instance from the given string.\n    */\n    toText(string) {\n        return Text.of(string.split(this.facet(EditorState.lineSeparator) || DefaultSplit));\n    }\n    /**\n    Return the given range of the document as a string.\n    */\n    sliceDoc(from = 0, to = this.doc.length) {\n        return this.doc.sliceString(from, to, this.lineBreak);\n    }\n    /**\n    Get the value of a state [facet](https://codemirror.net/6/docs/ref/#state.Facet).\n    */\n    facet(facet) {\n        let addr = this.config.address[facet.id];\n        if (addr == null)\n            return facet.default;\n        ensureAddr(this, addr);\n        return getAddr(this, addr);\n    }\n    /**\n    Convert this state to a JSON-serializable object. When custom\n    fields should be serialized, you can pass them in as an object\n    mapping property names (in the resulting object, which should\n    not use `doc` or `selection`) to fields.\n    */\n    toJSON(fields) {\n        let result = {\n            doc: this.sliceDoc(),\n            selection: this.selection.toJSON()\n        };\n        if (fields)\n            for (let prop in fields) {\n                let value = fields[prop];\n                if (value instanceof StateField && this.config.address[value.id] != null)\n                    result[prop] = value.spec.toJSON(this.field(fields[prop]), this);\n            }\n        return result;\n    }\n    /**\n    Deserialize a state from its JSON representation. When custom\n    fields should be deserialized, pass the same object you passed\n    to [`toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) when serializing as\n    third argument.\n    */\n    static fromJSON(json, config = {}, fields) {\n        if (!json || typeof json.doc != \"string\")\n            throw new RangeError(\"Invalid JSON representation for EditorState\");\n        let fieldInit = [];\n        if (fields)\n            for (let prop in fields) {\n                if (Object.prototype.hasOwnProperty.call(json, prop)) {\n                    let field = fields[prop], value = json[prop];\n                    fieldInit.push(field.init(state => field.spec.fromJSON(value, state)));\n                }\n            }\n        return EditorState.create({\n            doc: json.doc,\n            selection: EditorSelection.fromJSON(json.selection),\n            extensions: config.extensions ? fieldInit.concat([config.extensions]) : fieldInit\n        });\n    }\n    /**\n    Create a new state. You'll usually only need this when\n    initializing an editor—updated states are created by applying\n    transactions.\n    */\n    static create(config = {}) {\n        let configuration = Configuration.resolve(config.extensions || [], new Map);\n        let doc = config.doc instanceof Text ? config.doc\n            : Text.of((config.doc || \"\").split(configuration.staticFacet(EditorState.lineSeparator) || DefaultSplit));\n        let selection = !config.selection ? EditorSelection.single(0)\n            : config.selection instanceof EditorSelection ? config.selection\n                : EditorSelection.single(config.selection.anchor, config.selection.head);\n        checkSelection(selection, doc.length);\n        if (!configuration.staticFacet(allowMultipleSelections))\n            selection = selection.asSingle();\n        return new EditorState(configuration, doc, selection, configuration.dynamicSlots.map(() => null), (state, slot) => slot.create(state), null);\n    }\n    /**\n    The size (in columns) of a tab in the document, determined by\n    the [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) facet.\n    */\n    get tabSize() { return this.facet(EditorState.tabSize); }\n    /**\n    Get the proper [line-break](https://codemirror.net/6/docs/ref/#state.EditorState^lineSeparator)\n    string for this state.\n    */\n    get lineBreak() { return this.facet(EditorState.lineSeparator) || \"\\n\"; }\n    /**\n    Returns true when the editor is\n    [configured](https://codemirror.net/6/docs/ref/#state.EditorState^readOnly) to be read-only.\n    */\n    get readOnly() { return this.facet(readOnly); }\n    /**\n    Look up a translation for the given phrase (via the\n    [`phrases`](https://codemirror.net/6/docs/ref/#state.EditorState^phrases) facet), or return the\n    original string if no translation is found.\n    \n    If additional arguments are passed, they will be inserted in\n    place of markers like `$1` (for the first value) and `$2`, etc.\n    A single `$` is equivalent to `$1`, and `$$` will produce a\n    literal dollar sign.\n    */\n    phrase(phrase, ...insert) {\n        for (let map of this.facet(EditorState.phrases))\n            if (Object.prototype.hasOwnProperty.call(map, phrase)) {\n                phrase = map[phrase];\n                break;\n            }\n        if (insert.length)\n            phrase = phrase.replace(/\\$(\\$|\\d*)/g, (m, i) => {\n                if (i == \"$\")\n                    return \"$\";\n                let n = +(i || 1);\n                return !n || n > insert.length ? m : insert[n - 1];\n            });\n        return phrase;\n    }\n    /**\n    Find the values for a given language data field, provided by the\n    the [`languageData`](https://codemirror.net/6/docs/ref/#state.EditorState^languageData) facet.\n    \n    Examples of language data fields are...\n    \n    - [`\"commentTokens\"`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) for specifying\n      comment syntax.\n    - [`\"autocomplete\"`](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion^config.override)\n      for providing language-specific completion sources.\n    - [`\"wordChars\"`](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) for adding\n      characters that should be considered part of words in this\n      language.\n    - [`\"closeBrackets\"`](https://codemirror.net/6/docs/ref/#autocomplete.CloseBracketConfig) controls\n      bracket closing behavior.\n    */\n    languageDataAt(name, pos, side = -1) {\n        let values = [];\n        for (let provider of this.facet(languageData)) {\n            for (let result of provider(this, pos, side)) {\n                if (Object.prototype.hasOwnProperty.call(result, name))\n                    values.push(result[name]);\n            }\n        }\n        return values;\n    }\n    /**\n    Return a function that can categorize strings (expected to\n    represent a single [grapheme cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak))\n    into one of:\n    \n     - Word (contains an alphanumeric character or a character\n       explicitly listed in the local language's `\"wordChars\"`\n       language data, which should be a string)\n     - Space (contains only whitespace)\n     - Other (anything else)\n    */\n    charCategorizer(at) {\n        return makeCategorizer(this.languageDataAt(\"wordChars\", at).join(\"\"));\n    }\n    /**\n    Find the word at the given position, meaning the range\n    containing all [word](https://codemirror.net/6/docs/ref/#state.CharCategory.Word) characters\n    around it. If no word characters are adjacent to the position,\n    this returns null.\n    */\n    wordAt(pos) {\n        let { text, from, length } = this.doc.lineAt(pos);\n        let cat = this.charCategorizer(pos);\n        let start = pos - from, end = pos - from;\n        while (start > 0) {\n            let prev = findClusterBreak(text, start, false);\n            if (cat(text.slice(prev, start)) != CharCategory.Word)\n                break;\n            start = prev;\n        }\n        while (end < length) {\n            let next = findClusterBreak(text, end);\n            if (cat(text.slice(end, next)) != CharCategory.Word)\n                break;\n            end = next;\n        }\n        return start == end ? null : EditorSelection.range(start + from, end + from);\n    }\n}\n/**\nA facet that, when enabled, causes the editor to allow multiple\nranges to be selected. Be careful though, because by default the\neditor relies on the native DOM selection, which cannot handle\nmultiple selections. An extension like\n[`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) can be used to make\nsecondary selections visible to the user.\n*/\nEditorState.allowMultipleSelections = allowMultipleSelections;\n/**\nConfigures the tab size to use in this state. The first\n(highest-precedence) value of the facet is used. If no value is\ngiven, this defaults to 4.\n*/\nEditorState.tabSize = /*@__PURE__*/Facet.define({\n    combine: values => values.length ? values[0] : 4\n});\n/**\nThe line separator to use. By default, any of `\"\\n\"`, `\"\\r\\n\"`\nand `\"\\r\"` is treated as a separator when splitting lines, and\nlines are joined with `\"\\n\"`.\n\nWhen you configure a value here, only that precise separator\nwill be used, allowing you to round-trip documents through the\neditor without normalizing line separators.\n*/\nEditorState.lineSeparator = lineSeparator;\n/**\nThis facet controls the value of the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) getter, which is\nconsulted by commands and extensions that implement editing\nfunctionality to determine whether they should apply. It\ndefaults to false, but when its highest-precedence value is\n`true`, such functionality disables itself.\n\nNot to be confused with\n[`EditorView.editable`](https://codemirror.net/6/docs/ref/#view.EditorView^editable), which\ncontrols whether the editor's DOM is set to be editable (and\nthus focusable).\n*/\nEditorState.readOnly = readOnly;\n/**\nRegisters translation phrases. The\n[`phrase`](https://codemirror.net/6/docs/ref/#state.EditorState.phrase) method will look through\nall objects registered with this facet to find translations for\nits argument.\n*/\nEditorState.phrases = /*@__PURE__*/Facet.define({\n    compare(a, b) {\n        let kA = Object.keys(a), kB = Object.keys(b);\n        return kA.length == kB.length && kA.every(k => a[k] == b[k]);\n    }\n});\n/**\nA facet used to register [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) providers.\n*/\nEditorState.languageData = languageData;\n/**\nFacet used to register change filters, which are called for each\ntransaction (unless explicitly\n[disabled](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter)), and can suppress\npart of the transaction's changes.\n\nSuch a function can return `true` to indicate that it doesn't\nwant to do anything, `false` to completely stop the changes in\nthe transaction, or a set of ranges in which changes should be\nsuppressed. Such ranges are represented as an array of numbers,\nwith each pair of two numbers indicating the start and end of a\nrange. So for example `[10, 20, 100, 110]` suppresses changes\nbetween 10 and 20, and between 100 and 110.\n*/\nEditorState.changeFilter = changeFilter;\n/**\nFacet used to register a hook that gets a chance to update or\nreplace transaction specs before they are applied. This will\nonly be applied for transactions that don't have\n[`filter`](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter) set to `false`. You\ncan either return a single transaction spec (possibly the input\ntransaction), or an array of specs (which will be combined in\nthe same way as the arguments to\n[`EditorState.update`](https://codemirror.net/6/docs/ref/#state.EditorState.update)).\n\nWhen possible, it is recommended to avoid accessing\n[`Transaction.state`](https://codemirror.net/6/docs/ref/#state.Transaction.state) in a filter,\nsince it will force creation of a state that will then be\ndiscarded again, if the transaction is actually filtered.\n\n(This functionality should be used with care. Indiscriminately\nmodifying transaction is likely to break something or degrade\nthe user experience.)\n*/\nEditorState.transactionFilter = transactionFilter;\n/**\nThis is a more limited form of\n[`transactionFilter`](https://codemirror.net/6/docs/ref/#state.EditorState^transactionFilter),\nwhich can only add\n[annotations](https://codemirror.net/6/docs/ref/#state.TransactionSpec.annotations) and\n[effects](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects). _But_, this type\nof filter runs even if the transaction has disabled regular\n[filtering](https://codemirror.net/6/docs/ref/#state.TransactionSpec.filter), making it suitable\nfor effects that don't need to touch the changes or selection,\nbut do want to process every transaction.\n\nExtenders run _after_ filters, when both are present.\n*/\nEditorState.transactionExtender = transactionExtender;\nCompartment.reconfigure = /*@__PURE__*/StateEffect.define();\n\n/**\nUtility function for combining behaviors to fill in a config\nobject from an array of provided configs. `defaults` should hold\ndefault values for all optional fields in `Config`.\n\nThe function will, by default, error\nwhen a field gets two values that aren't `===`-equal, but you can\nprovide combine functions per field to do something else.\n*/\nfunction combineConfig(configs, defaults, // Should hold only the optional properties of Config, but I haven't managed to express that\ncombine = {}) {\n    let result = {};\n    for (let config of configs)\n        for (let key of Object.keys(config)) {\n            let value = config[key], current = result[key];\n            if (current === undefined)\n                result[key] = value;\n            else if (current === value || value === undefined) ; // No conflict\n            else if (Object.hasOwnProperty.call(combine, key))\n                result[key] = combine[key](current, value);\n            else\n                throw new Error(\"Config merge conflict for field \" + key);\n        }\n    for (let key in defaults)\n        if (result[key] === undefined)\n            result[key] = defaults[key];\n    return result;\n}\n\n/**\nEach range is associated with a value, which must inherit from\nthis class.\n*/\nclass RangeValue {\n    /**\n    Compare this value with another value. Used when comparing\n    rangesets. The default implementation compares by identity.\n    Unless you are only creating a fixed number of unique instances\n    of your value type, it is a good idea to implement this\n    properly.\n    */\n    eq(other) { return this == other; }\n    /**\n    Create a [range](https://codemirror.net/6/docs/ref/#state.Range) with this value.\n    */\n    range(from, to = from) { return Range.create(from, to, this); }\n}\nRangeValue.prototype.startSide = RangeValue.prototype.endSide = 0;\nRangeValue.prototype.point = false;\nRangeValue.prototype.mapMode = MapMode.TrackDel;\n/**\nA range associates a value with a range of positions.\n*/\nclass Range {\n    constructor(\n    /**\n    The range's start position.\n    */\n    from, \n    /**\n    Its end position.\n    */\n    to, \n    /**\n    The value associated with this range.\n    */\n    value) {\n        this.from = from;\n        this.to = to;\n        this.value = value;\n    }\n    /**\n    @internal\n    */\n    static create(from, to, value) {\n        return new Range(from, to, value);\n    }\n}\nfunction cmpRange(a, b) {\n    return a.from - b.from || a.value.startSide - b.value.startSide;\n}\nclass Chunk {\n    constructor(from, to, value, \n    // Chunks are marked with the largest point that occurs\n    // in them (or -1 for no points), so that scans that are\n    // only interested in points (such as the\n    // heightmap-related logic) can skip range-only chunks.\n    maxPoint) {\n        this.from = from;\n        this.to = to;\n        this.value = value;\n        this.maxPoint = maxPoint;\n    }\n    get length() { return this.to[this.to.length - 1]; }\n    // Find the index of the given position and side. Use the ranges'\n    // `from` pos when `end == false`, `to` when `end == true`.\n    findIndex(pos, side, end, startAt = 0) {\n        let arr = end ? this.to : this.from;\n        for (let lo = startAt, hi = arr.length;;) {\n            if (lo == hi)\n                return lo;\n            let mid = (lo + hi) >> 1;\n            let diff = arr[mid] - pos || (end ? this.value[mid].endSide : this.value[mid].startSide) - side;\n            if (mid == lo)\n                return diff >= 0 ? lo : hi;\n            if (diff >= 0)\n                hi = mid;\n            else\n                lo = mid + 1;\n        }\n    }\n    between(offset, from, to, f) {\n        for (let i = this.findIndex(from, -1000000000 /* C.Far */, true), e = this.findIndex(to, 1000000000 /* C.Far */, false, i); i < e; i++)\n            if (f(this.from[i] + offset, this.to[i] + offset, this.value[i]) === false)\n                return false;\n    }\n    map(offset, changes) {\n        let value = [], from = [], to = [], newPos = -1, maxPoint = -1;\n        for (let i = 0; i < this.value.length; i++) {\n            let val = this.value[i], curFrom = this.from[i] + offset, curTo = this.to[i] + offset, newFrom, newTo;\n            if (curFrom == curTo) {\n                let mapped = changes.mapPos(curFrom, val.startSide, val.mapMode);\n                if (mapped == null)\n                    continue;\n                newFrom = newTo = mapped;\n                if (val.startSide != val.endSide) {\n                    newTo = changes.mapPos(curFrom, val.endSide);\n                    if (newTo < newFrom)\n                        continue;\n                }\n            }\n            else {\n                newFrom = changes.mapPos(curFrom, val.startSide);\n                newTo = changes.mapPos(curTo, val.endSide);\n                if (newFrom > newTo || newFrom == newTo && val.startSide > 0 && val.endSide <= 0)\n                    continue;\n            }\n            if ((newTo - newFrom || val.endSide - val.startSide) < 0)\n                continue;\n            if (newPos < 0)\n                newPos = newFrom;\n            if (val.point)\n                maxPoint = Math.max(maxPoint, newTo - newFrom);\n            value.push(val);\n            from.push(newFrom - newPos);\n            to.push(newTo - newPos);\n        }\n        return { mapped: value.length ? new Chunk(from, to, value, maxPoint) : null, pos: newPos };\n    }\n}\n/**\nA range set stores a collection of [ranges](https://codemirror.net/6/docs/ref/#state.Range) in a\nway that makes them efficient to [map](https://codemirror.net/6/docs/ref/#state.RangeSet.map) and\n[update](https://codemirror.net/6/docs/ref/#state.RangeSet.update). This is an immutable data\nstructure.\n*/\nclass RangeSet {\n    constructor(\n    /**\n    @internal\n    */\n    chunkPos, \n    /**\n    @internal\n    */\n    chunk, \n    /**\n    @internal\n    */\n    nextLayer, \n    /**\n    @internal\n    */\n    maxPoint) {\n        this.chunkPos = chunkPos;\n        this.chunk = chunk;\n        this.nextLayer = nextLayer;\n        this.maxPoint = maxPoint;\n    }\n    /**\n    @internal\n    */\n    static create(chunkPos, chunk, nextLayer, maxPoint) {\n        return new RangeSet(chunkPos, chunk, nextLayer, maxPoint);\n    }\n    /**\n    @internal\n    */\n    get length() {\n        let last = this.chunk.length - 1;\n        return last < 0 ? 0 : Math.max(this.chunkEnd(last), this.nextLayer.length);\n    }\n    /**\n    The number of ranges in the set.\n    */\n    get size() {\n        if (this.isEmpty)\n            return 0;\n        let size = this.nextLayer.size;\n        for (let chunk of this.chunk)\n            size += chunk.value.length;\n        return size;\n    }\n    /**\n    @internal\n    */\n    chunkEnd(index) {\n        return this.chunkPos[index] + this.chunk[index].length;\n    }\n    /**\n    Update the range set, optionally adding new ranges or filtering\n    out existing ones.\n    \n    (Note: The type parameter is just there as a kludge to work\n    around TypeScript variance issues that prevented `RangeSet<X>`\n    from being a subtype of `RangeSet<Y>` when `X` is a subtype of\n    `Y`.)\n    */\n    update(updateSpec) {\n        let { add = [], sort = false, filterFrom = 0, filterTo = this.length } = updateSpec;\n        let filter = updateSpec.filter;\n        if (add.length == 0 && !filter)\n            return this;\n        if (sort)\n            add = add.slice().sort(cmpRange);\n        if (this.isEmpty)\n            return add.length ? RangeSet.of(add) : this;\n        let cur = new LayerCursor(this, null, -1).goto(0), i = 0, spill = [];\n        let builder = new RangeSetBuilder();\n        while (cur.value || i < add.length) {\n            if (i < add.length && (cur.from - add[i].from || cur.startSide - add[i].value.startSide) >= 0) {\n                let range = add[i++];\n                if (!builder.addInner(range.from, range.to, range.value))\n                    spill.push(range);\n            }\n            else if (cur.rangeIndex == 1 && cur.chunkIndex < this.chunk.length &&\n                (i == add.length || this.chunkEnd(cur.chunkIndex) < add[i].from) &&\n                (!filter || filterFrom > this.chunkEnd(cur.chunkIndex) || filterTo < this.chunkPos[cur.chunkIndex]) &&\n                builder.addChunk(this.chunkPos[cur.chunkIndex], this.chunk[cur.chunkIndex])) {\n                cur.nextChunk();\n            }\n            else {\n                if (!filter || filterFrom > cur.to || filterTo < cur.from || filter(cur.from, cur.to, cur.value)) {\n                    if (!builder.addInner(cur.from, cur.to, cur.value))\n                        spill.push(Range.create(cur.from, cur.to, cur.value));\n                }\n                cur.next();\n            }\n        }\n        return builder.finishInner(this.nextLayer.isEmpty && !spill.length ? RangeSet.empty\n            : this.nextLayer.update({ add: spill, filter, filterFrom, filterTo }));\n    }\n    /**\n    Map this range set through a set of changes, return the new set.\n    */\n    map(changes) {\n        if (changes.empty || this.isEmpty)\n            return this;\n        let chunks = [], chunkPos = [], maxPoint = -1;\n        for (let i = 0; i < this.chunk.length; i++) {\n            let start = this.chunkPos[i], chunk = this.chunk[i];\n            let touch = changes.touchesRange(start, start + chunk.length);\n            if (touch === false) {\n                maxPoint = Math.max(maxPoint, chunk.maxPoint);\n                chunks.push(chunk);\n                chunkPos.push(changes.mapPos(start));\n            }\n            else if (touch === true) {\n                let { mapped, pos } = chunk.map(start, changes);\n                if (mapped) {\n                    maxPoint = Math.max(maxPoint, mapped.maxPoint);\n                    chunks.push(mapped);\n                    chunkPos.push(pos);\n                }\n            }\n        }\n        let next = this.nextLayer.map(changes);\n        return chunks.length == 0 ? next : new RangeSet(chunkPos, chunks, next || RangeSet.empty, maxPoint);\n    }\n    /**\n    Iterate over the ranges that touch the region `from` to `to`,\n    calling `f` for each. There is no guarantee that the ranges will\n    be reported in any specific order. When the callback returns\n    `false`, iteration stops.\n    */\n    between(from, to, f) {\n        if (this.isEmpty)\n            return;\n        for (let i = 0; i < this.chunk.length; i++) {\n            let start = this.chunkPos[i], chunk = this.chunk[i];\n            if (to >= start && from <= start + chunk.length &&\n                chunk.between(start, from - start, to - start, f) === false)\n                return;\n        }\n        this.nextLayer.between(from, to, f);\n    }\n    /**\n    Iterate over the ranges in this set, in order, including all\n    ranges that end at or after `from`.\n    */\n    iter(from = 0) {\n        return HeapCursor.from([this]).goto(from);\n    }\n    /**\n    @internal\n    */\n    get isEmpty() { return this.nextLayer == this; }\n    /**\n    Iterate over the ranges in a collection of sets, in order,\n    starting from `from`.\n    */\n    static iter(sets, from = 0) {\n        return HeapCursor.from(sets).goto(from);\n    }\n    /**\n    Iterate over two groups of sets, calling methods on `comparator`\n    to notify it of possible differences.\n    */\n    static compare(oldSets, newSets, \n    /**\n    This indicates how the underlying data changed between these\n    ranges, and is needed to synchronize the iteration.\n    */\n    textDiff, comparator, \n    /**\n    Can be used to ignore all non-point ranges, and points below\n    the given size. When -1, all ranges are compared.\n    */\n    minPointSize = -1) {\n        let a = oldSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n        let b = newSets.filter(set => set.maxPoint > 0 || !set.isEmpty && set.maxPoint >= minPointSize);\n        let sharedChunks = findSharedChunks(a, b, textDiff);\n        let sideA = new SpanCursor(a, sharedChunks, minPointSize);\n        let sideB = new SpanCursor(b, sharedChunks, minPointSize);\n        textDiff.iterGaps((fromA, fromB, length) => compare(sideA, fromA, sideB, fromB, length, comparator));\n        if (textDiff.empty && textDiff.length == 0)\n            compare(sideA, 0, sideB, 0, 0, comparator);\n    }\n    /**\n    Compare the contents of two groups of range sets, returning true\n    if they are equivalent in the given range.\n    */\n    static eq(oldSets, newSets, from = 0, to) {\n        if (to == null)\n            to = 1000000000 /* C.Far */ - 1;\n        let a = oldSets.filter(set => !set.isEmpty && newSets.indexOf(set) < 0);\n        let b = newSets.filter(set => !set.isEmpty && oldSets.indexOf(set) < 0);\n        if (a.length != b.length)\n            return false;\n        if (!a.length)\n            return true;\n        let sharedChunks = findSharedChunks(a, b);\n        let sideA = new SpanCursor(a, sharedChunks, 0).goto(from), sideB = new SpanCursor(b, sharedChunks, 0).goto(from);\n        for (;;) {\n            if (sideA.to != sideB.to ||\n                !sameValues(sideA.active, sideB.active) ||\n                sideA.point && (!sideB.point || !sideA.point.eq(sideB.point)))\n                return false;\n            if (sideA.to > to)\n                return true;\n            sideA.next();\n            sideB.next();\n        }\n    }\n    /**\n    Iterate over a group of range sets at the same time, notifying\n    the iterator about the ranges covering every given piece of\n    content. Returns the open count (see\n    [`SpanIterator.span`](https://codemirror.net/6/docs/ref/#state.SpanIterator.span)) at the end\n    of the iteration.\n    */\n    static spans(sets, from, to, iterator, \n    /**\n    When given and greater than -1, only points of at least this\n    size are taken into account.\n    */\n    minPointSize = -1) {\n        let cursor = new SpanCursor(sets, null, minPointSize).goto(from), pos = from;\n        let openRanges = cursor.openStart;\n        for (;;) {\n            let curTo = Math.min(cursor.to, to);\n            if (cursor.point) {\n                let active = cursor.activeForPoint(cursor.to);\n                let openCount = cursor.pointFrom < from ? active.length + 1\n                    : cursor.point.startSide < 0 ? active.length\n                        : Math.min(active.length, openRanges);\n                iterator.point(pos, curTo, cursor.point, active, openCount, cursor.pointRank);\n                openRanges = Math.min(cursor.openEnd(curTo), active.length);\n            }\n            else if (curTo > pos) {\n                iterator.span(pos, curTo, cursor.active, openRanges);\n                openRanges = cursor.openEnd(curTo);\n            }\n            if (cursor.to > to)\n                return openRanges + (cursor.point && cursor.to > to ? 1 : 0);\n            pos = cursor.to;\n            cursor.next();\n        }\n    }\n    /**\n    Create a range set for the given range or array of ranges. By\n    default, this expects the ranges to be _sorted_ (by start\n    position and, if two start at the same position,\n    `value.startSide`). You can pass `true` as second argument to\n    cause the method to sort them.\n    */\n    static of(ranges, sort = false) {\n        let build = new RangeSetBuilder();\n        for (let range of ranges instanceof Range ? [ranges] : sort ? lazySort(ranges) : ranges)\n            build.add(range.from, range.to, range.value);\n        return build.finish();\n    }\n    /**\n    Join an array of range sets into a single set.\n    */\n    static join(sets) {\n        if (!sets.length)\n            return RangeSet.empty;\n        let result = sets[sets.length - 1];\n        for (let i = sets.length - 2; i >= 0; i--) {\n            for (let layer = sets[i]; layer != RangeSet.empty; layer = layer.nextLayer)\n                result = new RangeSet(layer.chunkPos, layer.chunk, result, Math.max(layer.maxPoint, result.maxPoint));\n        }\n        return result;\n    }\n}\n/**\nThe empty set of ranges.\n*/\nRangeSet.empty = /*@__PURE__*/new RangeSet([], [], null, -1);\nfunction lazySort(ranges) {\n    if (ranges.length > 1)\n        for (let prev = ranges[0], i = 1; i < ranges.length; i++) {\n            let cur = ranges[i];\n            if (cmpRange(prev, cur) > 0)\n                return ranges.slice().sort(cmpRange);\n            prev = cur;\n        }\n    return ranges;\n}\nRangeSet.empty.nextLayer = RangeSet.empty;\n/**\nA range set builder is a data structure that helps build up a\n[range set](https://codemirror.net/6/docs/ref/#state.RangeSet) directly, without first allocating\nan array of [`Range`](https://codemirror.net/6/docs/ref/#state.Range) objects.\n*/\nclass RangeSetBuilder {\n    finishChunk(newArrays) {\n        this.chunks.push(new Chunk(this.from, this.to, this.value, this.maxPoint));\n        this.chunkPos.push(this.chunkStart);\n        this.chunkStart = -1;\n        this.setMaxPoint = Math.max(this.setMaxPoint, this.maxPoint);\n        this.maxPoint = -1;\n        if (newArrays) {\n            this.from = [];\n            this.to = [];\n            this.value = [];\n        }\n    }\n    /**\n    Create an empty builder.\n    */\n    constructor() {\n        this.chunks = [];\n        this.chunkPos = [];\n        this.chunkStart = -1;\n        this.last = null;\n        this.lastFrom = -1000000000 /* C.Far */;\n        this.lastTo = -1000000000 /* C.Far */;\n        this.from = [];\n        this.to = [];\n        this.value = [];\n        this.maxPoint = -1;\n        this.setMaxPoint = -1;\n        this.nextLayer = null;\n    }\n    /**\n    Add a range. Ranges should be added in sorted (by `from` and\n    `value.startSide`) order.\n    */\n    add(from, to, value) {\n        if (!this.addInner(from, to, value))\n            (this.nextLayer || (this.nextLayer = new RangeSetBuilder)).add(from, to, value);\n    }\n    /**\n    @internal\n    */\n    addInner(from, to, value) {\n        let diff = from - this.lastTo || value.startSide - this.last.endSide;\n        if (diff <= 0 && (from - this.lastFrom || value.startSide - this.last.startSide) < 0)\n            throw new Error(\"Ranges must be added sorted by `from` position and `startSide`\");\n        if (diff < 0)\n            return false;\n        if (this.from.length == 250 /* C.ChunkSize */)\n            this.finishChunk(true);\n        if (this.chunkStart < 0)\n            this.chunkStart = from;\n        this.from.push(from - this.chunkStart);\n        this.to.push(to - this.chunkStart);\n        this.last = value;\n        this.lastFrom = from;\n        this.lastTo = to;\n        this.value.push(value);\n        if (value.point)\n            this.maxPoint = Math.max(this.maxPoint, to - from);\n        return true;\n    }\n    /**\n    @internal\n    */\n    addChunk(from, chunk) {\n        if ((from - this.lastTo || chunk.value[0].startSide - this.last.endSide) < 0)\n            return false;\n        if (this.from.length)\n            this.finishChunk(true);\n        this.setMaxPoint = Math.max(this.setMaxPoint, chunk.maxPoint);\n        this.chunks.push(chunk);\n        this.chunkPos.push(from);\n        let last = chunk.value.length - 1;\n        this.last = chunk.value[last];\n        this.lastFrom = chunk.from[last] + from;\n        this.lastTo = chunk.to[last] + from;\n        return true;\n    }\n    /**\n    Finish the range set. Returns the new set. The builder can't be\n    used anymore after this has been called.\n    */\n    finish() { return this.finishInner(RangeSet.empty); }\n    /**\n    @internal\n    */\n    finishInner(next) {\n        if (this.from.length)\n            this.finishChunk(false);\n        if (this.chunks.length == 0)\n            return next;\n        let result = RangeSet.create(this.chunkPos, this.chunks, this.nextLayer ? this.nextLayer.finishInner(next) : next, this.setMaxPoint);\n        this.from = null; // Make sure further `add` calls produce errors\n        return result;\n    }\n}\nfunction findSharedChunks(a, b, textDiff) {\n    let inA = new Map();\n    for (let set of a)\n        for (let i = 0; i < set.chunk.length; i++)\n            if (set.chunk[i].maxPoint <= 0)\n                inA.set(set.chunk[i], set.chunkPos[i]);\n    let shared = new Set();\n    for (let set of b)\n        for (let i = 0; i < set.chunk.length; i++) {\n            let known = inA.get(set.chunk[i]);\n            if (known != null && (textDiff ? textDiff.mapPos(known) : known) == set.chunkPos[i] &&\n                !(textDiff === null || textDiff === void 0 ? void 0 : textDiff.touchesRange(known, known + set.chunk[i].length)))\n                shared.add(set.chunk[i]);\n        }\n    return shared;\n}\nclass LayerCursor {\n    constructor(layer, skip, minPoint, rank = 0) {\n        this.layer = layer;\n        this.skip = skip;\n        this.minPoint = minPoint;\n        this.rank = rank;\n    }\n    get startSide() { return this.value ? this.value.startSide : 0; }\n    get endSide() { return this.value ? this.value.endSide : 0; }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        this.chunkIndex = this.rangeIndex = 0;\n        this.gotoInner(pos, side, false);\n        return this;\n    }\n    gotoInner(pos, side, forward) {\n        while (this.chunkIndex < this.layer.chunk.length) {\n            let next = this.layer.chunk[this.chunkIndex];\n            if (!(this.skip && this.skip.has(next) ||\n                this.layer.chunkEnd(this.chunkIndex) < pos ||\n                next.maxPoint < this.minPoint))\n                break;\n            this.chunkIndex++;\n            forward = false;\n        }\n        if (this.chunkIndex < this.layer.chunk.length) {\n            let rangeIndex = this.layer.chunk[this.chunkIndex].findIndex(pos - this.layer.chunkPos[this.chunkIndex], side, true);\n            if (!forward || this.rangeIndex < rangeIndex)\n                this.setRangeIndex(rangeIndex);\n        }\n        this.next();\n    }\n    forward(pos, side) {\n        if ((this.to - pos || this.endSide - side) < 0)\n            this.gotoInner(pos, side, true);\n    }\n    next() {\n        for (;;) {\n            if (this.chunkIndex == this.layer.chunk.length) {\n                this.from = this.to = 1000000000 /* C.Far */;\n                this.value = null;\n                break;\n            }\n            else {\n                let chunkPos = this.layer.chunkPos[this.chunkIndex], chunk = this.layer.chunk[this.chunkIndex];\n                let from = chunkPos + chunk.from[this.rangeIndex];\n                this.from = from;\n                this.to = chunkPos + chunk.to[this.rangeIndex];\n                this.value = chunk.value[this.rangeIndex];\n                this.setRangeIndex(this.rangeIndex + 1);\n                if (this.minPoint < 0 || this.value.point && this.to - this.from >= this.minPoint)\n                    break;\n            }\n        }\n    }\n    setRangeIndex(index) {\n        if (index == this.layer.chunk[this.chunkIndex].value.length) {\n            this.chunkIndex++;\n            if (this.skip) {\n                while (this.chunkIndex < this.layer.chunk.length && this.skip.has(this.layer.chunk[this.chunkIndex]))\n                    this.chunkIndex++;\n            }\n            this.rangeIndex = 0;\n        }\n        else {\n            this.rangeIndex = index;\n        }\n    }\n    nextChunk() {\n        this.chunkIndex++;\n        this.rangeIndex = 0;\n        this.next();\n    }\n    compare(other) {\n        return this.from - other.from || this.startSide - other.startSide || this.rank - other.rank ||\n            this.to - other.to || this.endSide - other.endSide;\n    }\n}\nclass HeapCursor {\n    constructor(heap) {\n        this.heap = heap;\n    }\n    static from(sets, skip = null, minPoint = -1) {\n        let heap = [];\n        for (let i = 0; i < sets.length; i++) {\n            for (let cur = sets[i]; !cur.isEmpty; cur = cur.nextLayer) {\n                if (cur.maxPoint >= minPoint)\n                    heap.push(new LayerCursor(cur, skip, minPoint, i));\n            }\n        }\n        return heap.length == 1 ? heap[0] : new HeapCursor(heap);\n    }\n    get startSide() { return this.value ? this.value.startSide : 0; }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        for (let cur of this.heap)\n            cur.goto(pos, side);\n        for (let i = this.heap.length >> 1; i >= 0; i--)\n            heapBubble(this.heap, i);\n        this.next();\n        return this;\n    }\n    forward(pos, side) {\n        for (let cur of this.heap)\n            cur.forward(pos, side);\n        for (let i = this.heap.length >> 1; i >= 0; i--)\n            heapBubble(this.heap, i);\n        if ((this.to - pos || this.value.endSide - side) < 0)\n            this.next();\n    }\n    next() {\n        if (this.heap.length == 0) {\n            this.from = this.to = 1000000000 /* C.Far */;\n            this.value = null;\n            this.rank = -1;\n        }\n        else {\n            let top = this.heap[0];\n            this.from = top.from;\n            this.to = top.to;\n            this.value = top.value;\n            this.rank = top.rank;\n            if (top.value)\n                top.next();\n            heapBubble(this.heap, 0);\n        }\n    }\n}\nfunction heapBubble(heap, index) {\n    for (let cur = heap[index];;) {\n        let childIndex = (index << 1) + 1;\n        if (childIndex >= heap.length)\n            break;\n        let child = heap[childIndex];\n        if (childIndex + 1 < heap.length && child.compare(heap[childIndex + 1]) >= 0) {\n            child = heap[childIndex + 1];\n            childIndex++;\n        }\n        if (cur.compare(child) < 0)\n            break;\n        heap[childIndex] = cur;\n        heap[index] = child;\n        index = childIndex;\n    }\n}\nclass SpanCursor {\n    constructor(sets, skip, minPoint) {\n        this.minPoint = minPoint;\n        this.active = [];\n        this.activeTo = [];\n        this.activeRank = [];\n        this.minActive = -1;\n        // A currently active point range, if any\n        this.point = null;\n        this.pointFrom = 0;\n        this.pointRank = 0;\n        this.to = -1000000000 /* C.Far */;\n        this.endSide = 0;\n        // The amount of open active ranges at the start of the iterator.\n        // Not including points.\n        this.openStart = -1;\n        this.cursor = HeapCursor.from(sets, skip, minPoint);\n    }\n    goto(pos, side = -1000000000 /* C.Far */) {\n        this.cursor.goto(pos, side);\n        this.active.length = this.activeTo.length = this.activeRank.length = 0;\n        this.minActive = -1;\n        this.to = pos;\n        this.endSide = side;\n        this.openStart = -1;\n        this.next();\n        return this;\n    }\n    forward(pos, side) {\n        while (this.minActive > -1 && (this.activeTo[this.minActive] - pos || this.active[this.minActive].endSide - side) < 0)\n            this.removeActive(this.minActive);\n        this.cursor.forward(pos, side);\n    }\n    removeActive(index) {\n        remove(this.active, index);\n        remove(this.activeTo, index);\n        remove(this.activeRank, index);\n        this.minActive = findMinIndex(this.active, this.activeTo);\n    }\n    addActive(trackOpen) {\n        let i = 0, { value, to, rank } = this.cursor;\n        // Organize active marks by rank first, then by size\n        while (i < this.activeRank.length && (rank - this.activeRank[i] || to - this.activeTo[i]) > 0)\n            i++;\n        insert(this.active, i, value);\n        insert(this.activeTo, i, to);\n        insert(this.activeRank, i, rank);\n        if (trackOpen)\n            insert(trackOpen, i, this.cursor.from);\n        this.minActive = findMinIndex(this.active, this.activeTo);\n    }\n    // After calling this, if `this.point` != null, the next range is a\n    // point. Otherwise, it's a regular range, covered by `this.active`.\n    next() {\n        let from = this.to, wasPoint = this.point;\n        this.point = null;\n        let trackOpen = this.openStart < 0 ? [] : null;\n        for (;;) {\n            let a = this.minActive;\n            if (a > -1 && (this.activeTo[a] - this.cursor.from || this.active[a].endSide - this.cursor.startSide) < 0) {\n                if (this.activeTo[a] > from) {\n                    this.to = this.activeTo[a];\n                    this.endSide = this.active[a].endSide;\n                    break;\n                }\n                this.removeActive(a);\n                if (trackOpen)\n                    remove(trackOpen, a);\n            }\n            else if (!this.cursor.value) {\n                this.to = this.endSide = 1000000000 /* C.Far */;\n                break;\n            }\n            else if (this.cursor.from > from) {\n                this.to = this.cursor.from;\n                this.endSide = this.cursor.startSide;\n                break;\n            }\n            else {\n                let nextVal = this.cursor.value;\n                if (!nextVal.point) { // Opening a range\n                    this.addActive(trackOpen);\n                    this.cursor.next();\n                }\n                else if (wasPoint && this.cursor.to == this.to && this.cursor.from < this.cursor.to) {\n                    // Ignore any non-empty points that end precisely at the end of the prev point\n                    this.cursor.next();\n                }\n                else { // New point\n                    this.point = nextVal;\n                    this.pointFrom = this.cursor.from;\n                    this.pointRank = this.cursor.rank;\n                    this.to = this.cursor.to;\n                    this.endSide = nextVal.endSide;\n                    this.cursor.next();\n                    this.forward(this.to, this.endSide);\n                    break;\n                }\n            }\n        }\n        if (trackOpen) {\n            this.openStart = 0;\n            for (let i = trackOpen.length - 1; i >= 0 && trackOpen[i] < from; i--)\n                this.openStart++;\n        }\n    }\n    activeForPoint(to) {\n        if (!this.active.length)\n            return this.active;\n        let active = [];\n        for (let i = this.active.length - 1; i >= 0; i--) {\n            if (this.activeRank[i] < this.pointRank)\n                break;\n            if (this.activeTo[i] > to || this.activeTo[i] == to && this.active[i].endSide >= this.point.endSide)\n                active.push(this.active[i]);\n        }\n        return active.reverse();\n    }\n    openEnd(to) {\n        let open = 0;\n        for (let i = this.activeTo.length - 1; i >= 0 && this.activeTo[i] > to; i--)\n            open++;\n        return open;\n    }\n}\nfunction compare(a, startA, b, startB, length, comparator) {\n    a.goto(startA);\n    b.goto(startB);\n    let endB = startB + length;\n    let pos = startB, dPos = startB - startA;\n    for (;;) {\n        let diff = (a.to + dPos) - b.to || a.endSide - b.endSide;\n        let end = diff < 0 ? a.to + dPos : b.to, clipEnd = Math.min(end, endB);\n        if (a.point || b.point) {\n            if (!(a.point && b.point && (a.point == b.point || a.point.eq(b.point)) &&\n                sameValues(a.activeForPoint(a.to), b.activeForPoint(b.to))))\n                comparator.comparePoint(pos, clipEnd, a.point, b.point);\n        }\n        else {\n            if (clipEnd > pos && !sameValues(a.active, b.active))\n                comparator.compareRange(pos, clipEnd, a.active, b.active);\n        }\n        if (end > endB)\n            break;\n        pos = end;\n        if (diff <= 0)\n            a.next();\n        if (diff >= 0)\n            b.next();\n    }\n}\nfunction sameValues(a, b) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (a[i] != b[i] && !a[i].eq(b[i]))\n            return false;\n    return true;\n}\nfunction remove(array, index) {\n    for (let i = index, e = array.length - 1; i < e; i++)\n        array[i] = array[i + 1];\n    array.pop();\n}\nfunction insert(array, index, value) {\n    for (let i = array.length - 1; i >= index; i--)\n        array[i + 1] = array[i];\n    array[index] = value;\n}\nfunction findMinIndex(value, array) {\n    let found = -1, foundPos = 1000000000 /* C.Far */;\n    for (let i = 0; i < array.length; i++)\n        if ((array[i] - foundPos || value[i].endSide - value[found].endSide) < 0) {\n            found = i;\n            foundPos = array[i];\n        }\n    return found;\n}\n\n/**\nCount the column position at the given offset into the string,\ntaking extending characters and tab size into account.\n*/\nfunction countColumn(string, tabSize, to = string.length) {\n    let n = 0;\n    for (let i = 0; i < to;) {\n        if (string.charCodeAt(i) == 9) {\n            n += tabSize - (n % tabSize);\n            i++;\n        }\n        else {\n            n++;\n            i = findClusterBreak(string, i);\n        }\n    }\n    return n;\n}\n/**\nFind the offset that corresponds to the given column position in a\nstring, taking extending characters and tab size into account. By\ndefault, the string length is returned when it is too short to\nreach the column. Pass `strict` true to make it return -1 in that\nsituation.\n*/\nfunction findColumn(string, col, tabSize, strict) {\n    for (let i = 0, n = 0;;) {\n        if (n >= col)\n            return i;\n        if (i == string.length)\n            break;\n        n += string.charCodeAt(i) == 9 ? tabSize - (n % tabSize) : 1;\n        i = findClusterBreak(string, i);\n    }\n    return strict === true ? -1 : string.length;\n}\n\nexport { Annotation, AnnotationType, ChangeDesc, ChangeSet, CharCategory, Compartment, EditorSelection, EditorState, Facet, Line, MapMode, Prec, Range, RangeSet, RangeSetBuilder, RangeValue, SelectionRange, StateEffect, StateEffectType, StateField, Text, Transaction, codePointAt, codePointSize, combineConfig, countColumn, findClusterBreak, findColumn, fromCodePoint };\n","const C = \"\\u037c\"\nconst COUNT = typeof Symbol == \"undefined\" ? \"__\" + C : Symbol.for(C)\nconst SET = typeof Symbol == \"undefined\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\")\nconst top = typeof globalThis != \"undefined\" ? globalThis : typeof window != \"undefined\" ? window : {}\n\n// :: - Style modules encapsulate a set of CSS rules defined from\n// JavaScript. Their definitions are only available in a given DOM\n// root after it has been _mounted_ there with `StyleModule.mount`.\n//\n// Style modules should be created once and stored somewhere, as\n// opposed to re-creating them every time you need them. The amount of\n// CSS rules generated for a given DOM root is bounded by the amount\n// of style modules that were used. So to avoid leaking rules, don't\n// create these dynamically, but treat them as one-time allocations.\nexport class StyleModule {\n  // :: (Object<Style>, ?{finish: ?(string) → string})\n  // Create a style module from the given spec.\n  //\n  // When `finish` is given, it is called on regular (non-`@`)\n  // selectors (after `&` expansion) to compute the final selector.\n  constructor(spec, options) {\n    this.rules = []\n    let {finish} = options || {}\n\n    function splitSelector(selector) {\n      return /^@/.test(selector) ? [selector] : selector.split(/,\\s*/)\n    }\n\n    function render(selectors, spec, target, isKeyframes) {\n      let local = [], isAt = /^@(\\w+)\\b/.exec(selectors[0]), keyframes = isAt && isAt[1] == \"keyframes\"\n      if (isAt && spec == null) return target.push(selectors[0] + \";\")\n      for (let prop in spec) {\n        let value = spec[prop]\n        if (/&/.test(prop)) {\n          render(prop.split(/,\\s*/).map(part => selectors.map(sel => part.replace(/&/, sel))).reduce((a, b) => a.concat(b)),\n                 value, target)\n        } else if (value && typeof value == \"object\") {\n          if (!isAt) throw new RangeError(\"The value of a property (\" + prop + \") should be a primitive value.\")\n          render(splitSelector(prop), value, local, keyframes)\n        } else if (value != null) {\n          local.push(prop.replace(/_.*/, \"\").replace(/[A-Z]/g, l => \"-\" + l.toLowerCase()) + \": \" + value + \";\")\n        }\n      }\n      if (local.length || keyframes) {\n        target.push((finish && !isAt && !isKeyframes ? selectors.map(finish) : selectors).join(\", \") +\n                    \" {\" + local.join(\" \") + \"}\")\n      }\n    }\n\n    for (let prop in spec) render(splitSelector(prop), spec[prop], this.rules)\n  }\n\n  // :: () → string\n  // Returns a string containing the module's CSS rules.\n  getRules() { return this.rules.join(\"\\n\") }\n\n  // :: () → string\n  // Generate a new unique CSS class name.\n  static newName() {\n    let id = top[COUNT] || 1\n    top[COUNT] = id + 1\n    return C + id.toString(36)\n  }\n\n  // :: (union<Document, ShadowRoot>, union<[StyleModule], StyleModule>, ?{nonce: ?string})\n  //\n  // Mount the given set of modules in the given DOM root, which ensures\n  // that the CSS rules defined by the module are available in that\n  // context.\n  //\n  // Rules are only added to the document once per root.\n  //\n  // Rule order will follow the order of the modules, so that rules from\n  // modules later in the array take precedence of those from earlier\n  // modules. If you call this function multiple times for the same root\n  // in a way that changes the order of already mounted modules, the old\n  // order will be changed.\n  //\n  // If a Content Security Policy nonce is provided, it is added to\n  // the `<style>` tag generated by the library.\n  static mount(root, modules, options) {\n    let set = root[SET], nonce = options && options.nonce\n    if (!set) set = new StyleSet(root, nonce)\n    else if (nonce) set.setNonce(nonce)\n    set.mount(Array.isArray(modules) ? modules : [modules], root)\n  }\n}\n\nlet adoptedSet = new Map //<Document, StyleSet>\n\nclass StyleSet {\n  constructor(root, nonce) {\n    let doc = root.ownerDocument || root, win = doc.defaultView\n    if (!root.head && root.adoptedStyleSheets && win.CSSStyleSheet) {\n      let adopted = adoptedSet.get(doc)\n      if (adopted) return root[SET] = adopted\n      this.sheet = new win.CSSStyleSheet\n      adoptedSet.set(doc, this)\n    } else {\n      this.styleTag = doc.createElement(\"style\")\n      if (nonce) this.styleTag.setAttribute(\"nonce\", nonce)\n    }\n    this.modules = []\n    root[SET] = this\n  }\n\n  mount(modules, root) {\n    let sheet = this.sheet\n    let pos = 0 /* Current rule offset */, j = 0 /* Index into this.modules */\n    for (let i = 0; i < modules.length; i++) {\n      let mod = modules[i], index = this.modules.indexOf(mod)\n      if (index < j && index > -1) { // Ordering conflict\n        this.modules.splice(index, 1)\n        j--\n        index = -1\n      }\n      if (index == -1) {\n        this.modules.splice(j++, 0, mod)\n        if (sheet) for (let k = 0; k < mod.rules.length; k++)\n          sheet.insertRule(mod.rules[k], pos++)\n      } else {\n        while (j < index) pos += this.modules[j++].rules.length\n        pos += mod.rules.length\n        j++\n      }\n    }\n\n    if (sheet) {\n      if (root.adoptedStyleSheets.indexOf(this.sheet) < 0)\n        root.adoptedStyleSheets = [this.sheet, ...root.adoptedStyleSheets]\n    } else {\n      let text = \"\"\n      for (let i = 0; i < this.modules.length; i++)\n        text += this.modules[i].getRules() + \"\\n\"\n      this.styleTag.textContent = text\n      let target = root.head || root\n      if (this.styleTag.parentNode != target)\n        target.insertBefore(this.styleTag, target.firstChild)\n    }\n  }\n\n  setNonce(nonce) {\n    if (this.styleTag && this.styleTag.getAttribute(\"nonce\") != nonce)\n      this.styleTag.setAttribute(\"nonce\", nonce)\n  }\n}\n\n// Style::Object<union<Style,string>>\n//\n// A style is an object that, in the simple case, maps CSS property\n// names to strings holding their values, as in `{color: \"red\",\n// fontWeight: \"bold\"}`. The property names can be given in\n// camel-case—the library will insert a dash before capital letters\n// when converting them to CSS.\n//\n// If you include an underscore in a property name, it and everything\n// after it will be removed from the output, which can be useful when\n// providing a property multiple times, for browser compatibility\n// reasons.\n//\n// A property in a style object can also be a sub-selector, which\n// extends the current context to add a pseudo-selector or a child\n// selector. Such a property should contain a `&` character, which\n// will be replaced by the current selector. For example `{\"&:before\":\n// {content: '\"hi\"'}}`. Sub-selectors and regular properties can\n// freely be mixed in a given object. Any property containing a `&` is\n// assumed to be a sub-selector.\n//\n// Finally, a property can specify an @-block to be wrapped around the\n// styles defined inside the object that's the property's value. For\n// example to create a media query you can do `{\"@media screen and\n// (min-width: 400px)\": {...}}`.\n","export var base = {\n  8: \"Backspace\",\n  9: \"Tab\",\n  10: \"Enter\",\n  12: \"NumLock\",\n  13: \"Enter\",\n  16: \"Shift\",\n  17: \"Control\",\n  18: \"Alt\",\n  20: \"CapsLock\",\n  27: \"Escape\",\n  32: \" \",\n  33: \"PageUp\",\n  34: \"PageDown\",\n  35: \"End\",\n  36: \"Home\",\n  37: \"ArrowLeft\",\n  38: \"ArrowUp\",\n  39: \"ArrowRight\",\n  40: \"ArrowDown\",\n  44: \"PrintScreen\",\n  45: \"Insert\",\n  46: \"Delete\",\n  59: \";\",\n  61: \"=\",\n  91: \"Meta\",\n  92: \"Meta\",\n  106: \"*\",\n  107: \"+\",\n  108: \",\",\n  109: \"-\",\n  110: \".\",\n  111: \"/\",\n  144: \"NumLock\",\n  145: \"ScrollLock\",\n  160: \"Shift\",\n  161: \"Shift\",\n  162: \"Control\",\n  163: \"Control\",\n  164: \"Alt\",\n  165: \"Alt\",\n  173: \"-\",\n  186: \";\",\n  187: \"=\",\n  188: \",\",\n  189: \"-\",\n  190: \".\",\n  191: \"/\",\n  192: \"`\",\n  219: \"[\",\n  220: \"\\\\\",\n  221: \"]\",\n  222: \"'\"\n}\n\nexport var shift = {\n  48: \")\",\n  49: \"!\",\n  50: \"@\",\n  51: \"#\",\n  52: \"$\",\n  53: \"%\",\n  54: \"^\",\n  55: \"&\",\n  56: \"*\",\n  57: \"(\",\n  59: \":\",\n  61: \"+\",\n  173: \"_\",\n  186: \":\",\n  187: \"+\",\n  188: \"<\",\n  189: \"_\",\n  190: \">\",\n  191: \"?\",\n  192: \"~\",\n  219: \"{\",\n  220: \"|\",\n  221: \"}\",\n  222: \"\\\"\"\n}\n\nvar mac = typeof navigator != \"undefined\" && /Mac/.test(navigator.platform)\nvar ie = typeof navigator != \"undefined\" && /MSIE \\d|Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(navigator.userAgent)\n\n// Fill in the digit keys\nfor (var i = 0; i < 10; i++) base[48 + i] = base[96 + i] = String(i)\n\n// The function keys\nfor (var i = 1; i <= 24; i++) base[i + 111] = \"F\" + i\n\n// And the alphabetic keys\nfor (var i = 65; i <= 90; i++) {\n  base[i] = String.fromCharCode(i + 32)\n  shift[i] = String.fromCharCode(i)\n}\n\n// For each code that doesn't have a shift-equivalent, copy the base name\nfor (var code in base) if (!shift.hasOwnProperty(code)) shift[code] = base[code]\n\nexport function keyName(event) {\n  // On macOS, keys held with Shift and Cmd don't reflect the effect of Shift in `.key`.\n  // On IE, shift effect is never included in `.key`.\n  var ignoreKey = mac && event.metaKey && event.shiftKey && !event.ctrlKey && !event.altKey ||\n      ie && event.shiftKey && event.key && event.key.length == 1 ||\n      event.key == \"Unidentified\"\n  var name = (!ignoreKey && event.key) ||\n    (event.shiftKey ? shift : base)[event.keyCode] ||\n    event.key || \"Unidentified\"\n  // Edge sometimes produces wrong names (Issue #3)\n  if (name == \"Esc\") name = \"Escape\"\n  if (name == \"Del\") name = \"Delete\"\n  // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8860571/\n  if (name == \"Left\") name = \"ArrowLeft\"\n  if (name == \"Up\") name = \"ArrowUp\"\n  if (name == \"Right\") name = \"ArrowRight\"\n  if (name == \"Down\") name = \"ArrowDown\"\n  return name\n}\n","import { Text, RangeSet, MapMode, RangeValue, findClusterBreak, EditorSelection, Facet, StateEffect, ChangeSet, findColumn, CharCategory, EditorState, Annotation, Transaction, Prec, codePointAt, codePointSize, combineConfig, StateField, RangeSetBuilder, countColumn } from '@codemirror/state';\nimport { StyleModule } from 'style-mod';\nimport { keyName, base, shift } from 'w3c-keyname';\n\nfunction getSelection(root) {\n    let target;\n    // Browsers differ on whether shadow roots have a getSelection\n    // method. If it exists, use that, otherwise, call it on the\n    // document.\n    if (root.nodeType == 11) { // Shadow root\n        target = root.getSelection ? root : root.ownerDocument;\n    }\n    else {\n        target = root;\n    }\n    return target.getSelection();\n}\nfunction contains(dom, node) {\n    return node ? dom == node || dom.contains(node.nodeType != 1 ? node.parentNode : node) : false;\n}\nfunction deepActiveElement(doc) {\n    let elt = doc.activeElement;\n    while (elt && elt.shadowRoot)\n        elt = elt.shadowRoot.activeElement;\n    return elt;\n}\nfunction hasSelection(dom, selection) {\n    if (!selection.anchorNode)\n        return false;\n    try {\n        // Firefox will raise 'permission denied' errors when accessing\n        // properties of `sel.anchorNode` when it's in a generated CSS\n        // element.\n        return contains(dom, selection.anchorNode);\n    }\n    catch (_) {\n        return false;\n    }\n}\nfunction clientRectsFor(dom) {\n    if (dom.nodeType == 3)\n        return textRange(dom, 0, dom.nodeValue.length).getClientRects();\n    else if (dom.nodeType == 1)\n        return dom.getClientRects();\n    else\n        return [];\n}\n// Scans forward and backward through DOM positions equivalent to the\n// given one to see if the two are in the same place (i.e. after a\n// text node vs at the end of that text node)\nfunction isEquivalentPosition(node, off, targetNode, targetOff) {\n    return targetNode ? (scanFor(node, off, targetNode, targetOff, -1) ||\n        scanFor(node, off, targetNode, targetOff, 1)) : false;\n}\nfunction domIndex(node) {\n    for (var index = 0;; index++) {\n        node = node.previousSibling;\n        if (!node)\n            return index;\n    }\n}\nfunction isBlockElement(node) {\n    return node.nodeType == 1 && /^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\\d|SECTION|PRE)$/.test(node.nodeName);\n}\nfunction scanFor(node, off, targetNode, targetOff, dir) {\n    for (;;) {\n        if (node == targetNode && off == targetOff)\n            return true;\n        if (off == (dir < 0 ? 0 : maxOffset(node))) {\n            if (node.nodeName == \"DIV\")\n                return false;\n            let parent = node.parentNode;\n            if (!parent || parent.nodeType != 1)\n                return false;\n            off = domIndex(node) + (dir < 0 ? 0 : 1);\n            node = parent;\n        }\n        else if (node.nodeType == 1) {\n            node = node.childNodes[off + (dir < 0 ? -1 : 0)];\n            if (node.nodeType == 1 && node.contentEditable == \"false\")\n                return false;\n            off = dir < 0 ? maxOffset(node) : 0;\n        }\n        else {\n            return false;\n        }\n    }\n}\nfunction maxOffset(node) {\n    return node.nodeType == 3 ? node.nodeValue.length : node.childNodes.length;\n}\nfunction flattenRect(rect, left) {\n    let x = left ? rect.left : rect.right;\n    return { left: x, right: x, top: rect.top, bottom: rect.bottom };\n}\nfunction windowRect(win) {\n    let vp = win.visualViewport;\n    if (vp)\n        return {\n            left: 0, right: vp.width,\n            top: 0, bottom: vp.height\n        };\n    return { left: 0, right: win.innerWidth,\n        top: 0, bottom: win.innerHeight };\n}\nfunction getScale(elt, rect) {\n    let scaleX = rect.width / elt.offsetWidth;\n    let scaleY = rect.height / elt.offsetHeight;\n    if (scaleX > 0.995 && scaleX < 1.005 || !isFinite(scaleX) || Math.abs(rect.width - elt.offsetWidth) < 1)\n        scaleX = 1;\n    if (scaleY > 0.995 && scaleY < 1.005 || !isFinite(scaleY) || Math.abs(rect.height - elt.offsetHeight) < 1)\n        scaleY = 1;\n    return { scaleX, scaleY };\n}\nfunction scrollRectIntoView(dom, rect, side, x, y, xMargin, yMargin, ltr) {\n    let doc = dom.ownerDocument, win = doc.defaultView || window;\n    for (let cur = dom, stop = false; cur && !stop;) {\n        if (cur.nodeType == 1) { // Element\n            let bounding, top = cur == doc.body;\n            let scaleX = 1, scaleY = 1;\n            if (top) {\n                bounding = windowRect(win);\n            }\n            else {\n                if (/^(fixed|sticky)$/.test(getComputedStyle(cur).position))\n                    stop = true;\n                if (cur.scrollHeight <= cur.clientHeight && cur.scrollWidth <= cur.clientWidth) {\n                    cur = cur.assignedSlot || cur.parentNode;\n                    continue;\n                }\n                let rect = cur.getBoundingClientRect();\n                ({ scaleX, scaleY } = getScale(cur, rect));\n                // Make sure scrollbar width isn't included in the rectangle\n                bounding = { left: rect.left, right: rect.left + cur.clientWidth * scaleX,\n                    top: rect.top, bottom: rect.top + cur.clientHeight * scaleY };\n            }\n            let moveX = 0, moveY = 0;\n            if (y == \"nearest\") {\n                if (rect.top < bounding.top) {\n                    moveY = -(bounding.top - rect.top + yMargin);\n                    if (side > 0 && rect.bottom > bounding.bottom + moveY)\n                        moveY = rect.bottom - bounding.bottom + moveY + yMargin;\n                }\n                else if (rect.bottom > bounding.bottom) {\n                    moveY = rect.bottom - bounding.bottom + yMargin;\n                    if (side < 0 && (rect.top - moveY) < bounding.top)\n                        moveY = -(bounding.top + moveY - rect.top + yMargin);\n                }\n            }\n            else {\n                let rectHeight = rect.bottom - rect.top, boundingHeight = bounding.bottom - bounding.top;\n                let targetTop = y == \"center\" && rectHeight <= boundingHeight ? rect.top + rectHeight / 2 - boundingHeight / 2 :\n                    y == \"start\" || y == \"center\" && side < 0 ? rect.top - yMargin :\n                        rect.bottom - boundingHeight + yMargin;\n                moveY = targetTop - bounding.top;\n            }\n            if (x == \"nearest\") {\n                if (rect.left < bounding.left) {\n                    moveX = -(bounding.left - rect.left + xMargin);\n                    if (side > 0 && rect.right > bounding.right + moveX)\n                        moveX = rect.right - bounding.right + moveX + xMargin;\n                }\n                else if (rect.right > bounding.right) {\n                    moveX = rect.right - bounding.right + xMargin;\n                    if (side < 0 && rect.left < bounding.left + moveX)\n                        moveX = -(bounding.left + moveX - rect.left + xMargin);\n                }\n            }\n            else {\n                let targetLeft = x == \"center\" ? rect.left + (rect.right - rect.left) / 2 - (bounding.right - bounding.left) / 2 :\n                    (x == \"start\") == ltr ? rect.left - xMargin :\n                        rect.right - (bounding.right - bounding.left) + xMargin;\n                moveX = targetLeft - bounding.left;\n            }\n            if (moveX || moveY) {\n                if (top) {\n                    win.scrollBy(moveX, moveY);\n                }\n                else {\n                    let movedX = 0, movedY = 0;\n                    if (moveY) {\n                        let start = cur.scrollTop;\n                        cur.scrollTop += moveY / scaleY;\n                        movedY = (cur.scrollTop - start) * scaleY;\n                    }\n                    if (moveX) {\n                        let start = cur.scrollLeft;\n                        cur.scrollLeft += moveX / scaleX;\n                        movedX = (cur.scrollLeft - start) * scaleX;\n                    }\n                    rect = { left: rect.left - movedX, top: rect.top - movedY,\n                        right: rect.right - movedX, bottom: rect.bottom - movedY };\n                    if (movedX && Math.abs(movedX - moveX) < 1)\n                        x = \"nearest\";\n                    if (movedY && Math.abs(movedY - moveY) < 1)\n                        y = \"nearest\";\n                }\n            }\n            if (top)\n                break;\n            cur = cur.assignedSlot || cur.parentNode;\n        }\n        else if (cur.nodeType == 11) { // A shadow root\n            cur = cur.host;\n        }\n        else {\n            break;\n        }\n    }\n}\nfunction scrollableParents(dom) {\n    let doc = dom.ownerDocument, x, y;\n    for (let cur = dom.parentNode; cur;) {\n        if (cur == doc.body || (x && y)) {\n            break;\n        }\n        else if (cur.nodeType == 1) {\n            if (!y && cur.scrollHeight > cur.clientHeight)\n                y = cur;\n            if (!x && cur.scrollWidth > cur.clientWidth)\n                x = cur;\n            cur = cur.assignedSlot || cur.parentNode;\n        }\n        else if (cur.nodeType == 11) {\n            cur = cur.host;\n        }\n        else {\n            break;\n        }\n    }\n    return { x, y };\n}\nclass DOMSelectionState {\n    constructor() {\n        this.anchorNode = null;\n        this.anchorOffset = 0;\n        this.focusNode = null;\n        this.focusOffset = 0;\n    }\n    eq(domSel) {\n        return this.anchorNode == domSel.anchorNode && this.anchorOffset == domSel.anchorOffset &&\n            this.focusNode == domSel.focusNode && this.focusOffset == domSel.focusOffset;\n    }\n    setRange(range) {\n        let { anchorNode, focusNode } = range;\n        // Clip offsets to node size to avoid crashes when Safari reports bogus offsets (#1152)\n        this.set(anchorNode, Math.min(range.anchorOffset, anchorNode ? maxOffset(anchorNode) : 0), focusNode, Math.min(range.focusOffset, focusNode ? maxOffset(focusNode) : 0));\n    }\n    set(anchorNode, anchorOffset, focusNode, focusOffset) {\n        this.anchorNode = anchorNode;\n        this.anchorOffset = anchorOffset;\n        this.focusNode = focusNode;\n        this.focusOffset = focusOffset;\n    }\n}\nlet preventScrollSupported = null;\n// Feature-detects support for .focus({preventScroll: true}), and uses\n// a fallback kludge when not supported.\nfunction focusPreventScroll(dom) {\n    if (dom.setActive)\n        return dom.setActive(); // in IE\n    if (preventScrollSupported)\n        return dom.focus(preventScrollSupported);\n    let stack = [];\n    for (let cur = dom; cur; cur = cur.parentNode) {\n        stack.push(cur, cur.scrollTop, cur.scrollLeft);\n        if (cur == cur.ownerDocument)\n            break;\n    }\n    dom.focus(preventScrollSupported == null ? {\n        get preventScroll() {\n            preventScrollSupported = { preventScroll: true };\n            return true;\n        }\n    } : undefined);\n    if (!preventScrollSupported) {\n        preventScrollSupported = false;\n        for (let i = 0; i < stack.length;) {\n            let elt = stack[i++], top = stack[i++], left = stack[i++];\n            if (elt.scrollTop != top)\n                elt.scrollTop = top;\n            if (elt.scrollLeft != left)\n                elt.scrollLeft = left;\n        }\n    }\n}\nlet scratchRange;\nfunction textRange(node, from, to = from) {\n    let range = scratchRange || (scratchRange = document.createRange());\n    range.setEnd(node, to);\n    range.setStart(node, from);\n    return range;\n}\nfunction dispatchKey(elt, name, code, mods) {\n    let options = { key: name, code: name, keyCode: code, which: code, cancelable: true };\n    if (mods)\n        ({ altKey: options.altKey, ctrlKey: options.ctrlKey, shiftKey: options.shiftKey, metaKey: options.metaKey } = mods);\n    let down = new KeyboardEvent(\"keydown\", options);\n    down.synthetic = true;\n    elt.dispatchEvent(down);\n    let up = new KeyboardEvent(\"keyup\", options);\n    up.synthetic = true;\n    elt.dispatchEvent(up);\n    return down.defaultPrevented || up.defaultPrevented;\n}\nfunction getRoot(node) {\n    while (node) {\n        if (node && (node.nodeType == 9 || node.nodeType == 11 && node.host))\n            return node;\n        node = node.assignedSlot || node.parentNode;\n    }\n    return null;\n}\nfunction clearAttributes(node) {\n    while (node.attributes.length)\n        node.removeAttributeNode(node.attributes[0]);\n}\nfunction atElementStart(doc, selection) {\n    let node = selection.focusNode, offset = selection.focusOffset;\n    if (!node || selection.anchorNode != node || selection.anchorOffset != offset)\n        return false;\n    // Safari can report bogus offsets (#1152)\n    offset = Math.min(offset, maxOffset(node));\n    for (;;) {\n        if (offset) {\n            if (node.nodeType != 1)\n                return false;\n            let prev = node.childNodes[offset - 1];\n            if (prev.contentEditable == \"false\")\n                offset--;\n            else {\n                node = prev;\n                offset = maxOffset(node);\n            }\n        }\n        else if (node == doc) {\n            return true;\n        }\n        else {\n            offset = domIndex(node);\n            node = node.parentNode;\n        }\n    }\n}\nfunction isScrolledToBottom(elt) {\n    return elt.scrollTop > Math.max(1, elt.scrollHeight - elt.clientHeight - 4);\n}\nfunction textNodeBefore(startNode, startOffset) {\n    for (let node = startNode, offset = startOffset;;) {\n        if (node.nodeType == 3 && offset > 0) {\n            return { node: node, offset: offset };\n        }\n        else if (node.nodeType == 1 && offset > 0) {\n            if (node.contentEditable == \"false\")\n                return null;\n            node = node.childNodes[offset - 1];\n            offset = maxOffset(node);\n        }\n        else if (node.parentNode && !isBlockElement(node)) {\n            offset = domIndex(node);\n            node = node.parentNode;\n        }\n        else {\n            return null;\n        }\n    }\n}\nfunction textNodeAfter(startNode, startOffset) {\n    for (let node = startNode, offset = startOffset;;) {\n        if (node.nodeType == 3 && offset < node.nodeValue.length) {\n            return { node: node, offset: offset };\n        }\n        else if (node.nodeType == 1 && offset < node.childNodes.length) {\n            if (node.contentEditable == \"false\")\n                return null;\n            node = node.childNodes[offset];\n            offset = 0;\n        }\n        else if (node.parentNode && !isBlockElement(node)) {\n            offset = domIndex(node) + 1;\n            node = node.parentNode;\n        }\n        else {\n            return null;\n        }\n    }\n}\n\nclass DOMPos {\n    constructor(node, offset, precise = true) {\n        this.node = node;\n        this.offset = offset;\n        this.precise = precise;\n    }\n    static before(dom, precise) { return new DOMPos(dom.parentNode, domIndex(dom), precise); }\n    static after(dom, precise) { return new DOMPos(dom.parentNode, domIndex(dom) + 1, precise); }\n}\nconst noChildren = [];\nclass ContentView {\n    constructor() {\n        this.parent = null;\n        this.dom = null;\n        this.flags = 2 /* ViewFlag.NodeDirty */;\n    }\n    get overrideDOMText() { return null; }\n    get posAtStart() {\n        return this.parent ? this.parent.posBefore(this) : 0;\n    }\n    get posAtEnd() {\n        return this.posAtStart + this.length;\n    }\n    posBefore(view) {\n        let pos = this.posAtStart;\n        for (let child of this.children) {\n            if (child == view)\n                return pos;\n            pos += child.length + child.breakAfter;\n        }\n        throw new RangeError(\"Invalid child in posBefore\");\n    }\n    posAfter(view) {\n        return this.posBefore(view) + view.length;\n    }\n    sync(view, track) {\n        if (this.flags & 2 /* ViewFlag.NodeDirty */) {\n            let parent = this.dom;\n            let prev = null, next;\n            for (let child of this.children) {\n                if (child.flags & 7 /* ViewFlag.Dirty */) {\n                    if (!child.dom && (next = prev ? prev.nextSibling : parent.firstChild)) {\n                        let contentView = ContentView.get(next);\n                        if (!contentView || !contentView.parent && contentView.canReuseDOM(child))\n                            child.reuseDOM(next);\n                    }\n                    child.sync(view, track);\n                    child.flags &= ~7 /* ViewFlag.Dirty */;\n                }\n                next = prev ? prev.nextSibling : parent.firstChild;\n                if (track && !track.written && track.node == parent && next != child.dom)\n                    track.written = true;\n                if (child.dom.parentNode == parent) {\n                    while (next && next != child.dom)\n                        next = rm$1(next);\n                }\n                else {\n                    parent.insertBefore(child.dom, next);\n                }\n                prev = child.dom;\n            }\n            next = prev ? prev.nextSibling : parent.firstChild;\n            if (next && track && track.node == parent)\n                track.written = true;\n            while (next)\n                next = rm$1(next);\n        }\n        else if (this.flags & 1 /* ViewFlag.ChildDirty */) {\n            for (let child of this.children)\n                if (child.flags & 7 /* ViewFlag.Dirty */) {\n                    child.sync(view, track);\n                    child.flags &= ~7 /* ViewFlag.Dirty */;\n                }\n        }\n    }\n    reuseDOM(_dom) { }\n    localPosFromDOM(node, offset) {\n        let after;\n        if (node == this.dom) {\n            after = this.dom.childNodes[offset];\n        }\n        else {\n            let bias = maxOffset(node) == 0 ? 0 : offset == 0 ? -1 : 1;\n            for (;;) {\n                let parent = node.parentNode;\n                if (parent == this.dom)\n                    break;\n                if (bias == 0 && parent.firstChild != parent.lastChild) {\n                    if (node == parent.firstChild)\n                        bias = -1;\n                    else\n                        bias = 1;\n                }\n                node = parent;\n            }\n            if (bias < 0)\n                after = node;\n            else\n                after = node.nextSibling;\n        }\n        if (after == this.dom.firstChild)\n            return 0;\n        while (after && !ContentView.get(after))\n            after = after.nextSibling;\n        if (!after)\n            return this.length;\n        for (let i = 0, pos = 0;; i++) {\n            let child = this.children[i];\n            if (child.dom == after)\n                return pos;\n            pos += child.length + child.breakAfter;\n        }\n    }\n    domBoundsAround(from, to, offset = 0) {\n        let fromI = -1, fromStart = -1, toI = -1, toEnd = -1;\n        for (let i = 0, pos = offset, prevEnd = offset; i < this.children.length; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (pos < from && end > to)\n                return child.domBoundsAround(from, to, pos);\n            if (end >= from && fromI == -1) {\n                fromI = i;\n                fromStart = pos;\n            }\n            if (pos > to && child.dom.parentNode == this.dom) {\n                toI = i;\n                toEnd = prevEnd;\n                break;\n            }\n            prevEnd = end;\n            pos = end + child.breakAfter;\n        }\n        return { from: fromStart, to: toEnd < 0 ? offset + this.length : toEnd,\n            startDOM: (fromI ? this.children[fromI - 1].dom.nextSibling : null) || this.dom.firstChild,\n            endDOM: toI < this.children.length && toI >= 0 ? this.children[toI].dom : null };\n    }\n    markDirty(andParent = false) {\n        this.flags |= 2 /* ViewFlag.NodeDirty */;\n        this.markParentsDirty(andParent);\n    }\n    markParentsDirty(childList) {\n        for (let parent = this.parent; parent; parent = parent.parent) {\n            if (childList)\n                parent.flags |= 2 /* ViewFlag.NodeDirty */;\n            if (parent.flags & 1 /* ViewFlag.ChildDirty */)\n                return;\n            parent.flags |= 1 /* ViewFlag.ChildDirty */;\n            childList = false;\n        }\n    }\n    setParent(parent) {\n        if (this.parent != parent) {\n            this.parent = parent;\n            if (this.flags & 7 /* ViewFlag.Dirty */)\n                this.markParentsDirty(true);\n        }\n    }\n    setDOM(dom) {\n        if (this.dom == dom)\n            return;\n        if (this.dom)\n            this.dom.cmView = null;\n        this.dom = dom;\n        dom.cmView = this;\n    }\n    get rootView() {\n        for (let v = this;;) {\n            let parent = v.parent;\n            if (!parent)\n                return v;\n            v = parent;\n        }\n    }\n    replaceChildren(from, to, children = noChildren) {\n        this.markDirty();\n        for (let i = from; i < to; i++) {\n            let child = this.children[i];\n            if (child.parent == this && children.indexOf(child) < 0)\n                child.destroy();\n        }\n        this.children.splice(from, to - from, ...children);\n        for (let i = 0; i < children.length; i++)\n            children[i].setParent(this);\n    }\n    ignoreMutation(_rec) { return false; }\n    ignoreEvent(_event) { return false; }\n    childCursor(pos = this.length) {\n        return new ChildCursor(this.children, pos, this.children.length);\n    }\n    childPos(pos, bias = 1) {\n        return this.childCursor().findPos(pos, bias);\n    }\n    toString() {\n        let name = this.constructor.name.replace(\"View\", \"\");\n        return name + (this.children.length ? \"(\" + this.children.join() + \")\" :\n            this.length ? \"[\" + (name == \"Text\" ? this.text : this.length) + \"]\" : \"\") +\n            (this.breakAfter ? \"#\" : \"\");\n    }\n    static get(node) { return node.cmView; }\n    get isEditable() { return true; }\n    get isWidget() { return false; }\n    get isHidden() { return false; }\n    merge(from, to, source, hasStart, openStart, openEnd) {\n        return false;\n    }\n    become(other) { return false; }\n    canReuseDOM(other) {\n        return other.constructor == this.constructor && !((this.flags | other.flags) & 8 /* ViewFlag.Composition */);\n    }\n    // When this is a zero-length view with a side, this should return a\n    // number <= 0 to indicate it is before its position, or a\n    // number > 0 when after its position.\n    getSide() { return 0; }\n    destroy() {\n        for (let child of this.children)\n            if (child.parent == this)\n                child.destroy();\n        this.parent = null;\n    }\n}\nContentView.prototype.breakAfter = 0;\n// Remove a DOM node and return its next sibling.\nfunction rm$1(dom) {\n    let next = dom.nextSibling;\n    dom.parentNode.removeChild(dom);\n    return next;\n}\nclass ChildCursor {\n    constructor(children, pos, i) {\n        this.children = children;\n        this.pos = pos;\n        this.i = i;\n        this.off = 0;\n    }\n    findPos(pos, bias = 1) {\n        for (;;) {\n            if (pos > this.pos || pos == this.pos &&\n                (bias > 0 || this.i == 0 || this.children[this.i - 1].breakAfter)) {\n                this.off = pos - this.pos;\n                return this;\n            }\n            let next = this.children[--this.i];\n            this.pos -= next.length + next.breakAfter;\n        }\n    }\n}\nfunction replaceRange(parent, fromI, fromOff, toI, toOff, insert, breakAtStart, openStart, openEnd) {\n    let { children } = parent;\n    let before = children.length ? children[fromI] : null;\n    let last = insert.length ? insert[insert.length - 1] : null;\n    let breakAtEnd = last ? last.breakAfter : breakAtStart;\n    // Change within a single child\n    if (fromI == toI && before && !breakAtStart && !breakAtEnd && insert.length < 2 &&\n        before.merge(fromOff, toOff, insert.length ? last : null, fromOff == 0, openStart, openEnd))\n        return;\n    if (toI < children.length) {\n        let after = children[toI];\n        // Make sure the end of the child after the update is preserved in `after`\n        if (after && (toOff < after.length || after.breakAfter && (last === null || last === void 0 ? void 0 : last.breakAfter))) {\n            // If we're splitting a child, separate part of it to avoid that\n            // being mangled when updating the child before the update.\n            if (fromI == toI) {\n                after = after.split(toOff);\n                toOff = 0;\n            }\n            // If the element after the replacement should be merged with\n            // the last replacing element, update `content`\n            if (!breakAtEnd && last && after.merge(0, toOff, last, true, 0, openEnd)) {\n                insert[insert.length - 1] = after;\n            }\n            else {\n                // Remove the start of the after element, if necessary, and\n                // add it to `content`.\n                if (toOff || after.children.length && !after.children[0].length)\n                    after.merge(0, toOff, null, false, 0, openEnd);\n                insert.push(after);\n            }\n        }\n        else if (after === null || after === void 0 ? void 0 : after.breakAfter) {\n            // The element at `toI` is entirely covered by this range.\n            // Preserve its line break, if any.\n            if (last)\n                last.breakAfter = 1;\n            else\n                breakAtStart = 1;\n        }\n        // Since we've handled the next element from the current elements\n        // now, make sure `toI` points after that.\n        toI++;\n    }\n    if (before) {\n        before.breakAfter = breakAtStart;\n        if (fromOff > 0) {\n            if (!breakAtStart && insert.length && before.merge(fromOff, before.length, insert[0], false, openStart, 0)) {\n                before.breakAfter = insert.shift().breakAfter;\n            }\n            else if (fromOff < before.length || before.children.length && before.children[before.children.length - 1].length == 0) {\n                before.merge(fromOff, before.length, null, false, openStart, 0);\n            }\n            fromI++;\n        }\n    }\n    // Try to merge widgets on the boundaries of the replacement\n    while (fromI < toI && insert.length) {\n        if (children[toI - 1].become(insert[insert.length - 1])) {\n            toI--;\n            insert.pop();\n            openEnd = insert.length ? 0 : openStart;\n        }\n        else if (children[fromI].become(insert[0])) {\n            fromI++;\n            insert.shift();\n            openStart = insert.length ? 0 : openEnd;\n        }\n        else {\n            break;\n        }\n    }\n    if (!insert.length && fromI && toI < children.length && !children[fromI - 1].breakAfter &&\n        children[toI].merge(0, 0, children[fromI - 1], false, openStart, openEnd))\n        fromI--;\n    if (fromI < toI || insert.length)\n        parent.replaceChildren(fromI, toI, insert);\n}\nfunction mergeChildrenInto(parent, from, to, insert, openStart, openEnd) {\n    let cur = parent.childCursor();\n    let { i: toI, off: toOff } = cur.findPos(to, 1);\n    let { i: fromI, off: fromOff } = cur.findPos(from, -1);\n    let dLen = from - to;\n    for (let view of insert)\n        dLen += view.length;\n    parent.length += dLen;\n    replaceRange(parent, fromI, fromOff, toI, toOff, insert, 0, openStart, openEnd);\n}\n\nlet nav = typeof navigator != \"undefined\" ? navigator : { userAgent: \"\", vendor: \"\", platform: \"\" };\nlet doc = typeof document != \"undefined\" ? document : { documentElement: { style: {} } };\nconst ie_edge = /*@__PURE__*//Edge\\/(\\d+)/.exec(nav.userAgent);\nconst ie_upto10 = /*@__PURE__*//MSIE \\d/.test(nav.userAgent);\nconst ie_11up = /*@__PURE__*//Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(nav.userAgent);\nconst ie = !!(ie_upto10 || ie_11up || ie_edge);\nconst gecko = !ie && /*@__PURE__*//gecko\\/(\\d+)/i.test(nav.userAgent);\nconst chrome = !ie && /*@__PURE__*//Chrome\\/(\\d+)/.exec(nav.userAgent);\nconst webkit = \"webkitFontSmoothing\" in doc.documentElement.style;\nconst safari = !ie && /*@__PURE__*//Apple Computer/.test(nav.vendor);\nconst ios = safari && (/*@__PURE__*//Mobile\\/\\w+/.test(nav.userAgent) || nav.maxTouchPoints > 2);\nvar browser = {\n    mac: ios || /*@__PURE__*//Mac/.test(nav.platform),\n    windows: /*@__PURE__*//Win/.test(nav.platform),\n    linux: /*@__PURE__*//Linux|X11/.test(nav.platform),\n    ie,\n    ie_version: ie_upto10 ? doc.documentMode || 6 : ie_11up ? +ie_11up[1] : ie_edge ? +ie_edge[1] : 0,\n    gecko,\n    gecko_version: gecko ? +(/*@__PURE__*//Firefox\\/(\\d+)/.exec(nav.userAgent) || [0, 0])[1] : 0,\n    chrome: !!chrome,\n    chrome_version: chrome ? +chrome[1] : 0,\n    ios,\n    android: /*@__PURE__*//Android\\b/.test(nav.userAgent),\n    webkit,\n    safari,\n    webkit_version: webkit ? +(/*@__PURE__*//\\bAppleWebKit\\/(\\d+)/.exec(nav.userAgent) || [0, 0])[1] : 0,\n    tabSize: doc.documentElement.style.tabSize != null ? \"tab-size\" : \"-moz-tab-size\"\n};\n\nconst MaxJoinLen = 256;\nclass TextView extends ContentView {\n    constructor(text) {\n        super();\n        this.text = text;\n    }\n    get length() { return this.text.length; }\n    createDOM(textDOM) {\n        this.setDOM(textDOM || document.createTextNode(this.text));\n    }\n    sync(view, track) {\n        if (!this.dom)\n            this.createDOM();\n        if (this.dom.nodeValue != this.text) {\n            if (track && track.node == this.dom)\n                track.written = true;\n            this.dom.nodeValue = this.text;\n        }\n    }\n    reuseDOM(dom) {\n        if (dom.nodeType == 3)\n            this.createDOM(dom);\n    }\n    merge(from, to, source) {\n        if ((this.flags & 8 /* ViewFlag.Composition */) ||\n            source && (!(source instanceof TextView) ||\n                this.length - (to - from) + source.length > MaxJoinLen ||\n                (source.flags & 8 /* ViewFlag.Composition */)))\n            return false;\n        this.text = this.text.slice(0, from) + (source ? source.text : \"\") + this.text.slice(to);\n        this.markDirty();\n        return true;\n    }\n    split(from) {\n        let result = new TextView(this.text.slice(from));\n        this.text = this.text.slice(0, from);\n        this.markDirty();\n        result.flags |= this.flags & 8 /* ViewFlag.Composition */;\n        return result;\n    }\n    localPosFromDOM(node, offset) {\n        return node == this.dom ? offset : offset ? this.text.length : 0;\n    }\n    domAtPos(pos) { return new DOMPos(this.dom, pos); }\n    domBoundsAround(_from, _to, offset) {\n        return { from: offset, to: offset + this.length, startDOM: this.dom, endDOM: this.dom.nextSibling };\n    }\n    coordsAt(pos, side) {\n        return textCoords(this.dom, pos, side);\n    }\n}\nclass MarkView extends ContentView {\n    constructor(mark, children = [], length = 0) {\n        super();\n        this.mark = mark;\n        this.children = children;\n        this.length = length;\n        for (let ch of children)\n            ch.setParent(this);\n    }\n    setAttrs(dom) {\n        clearAttributes(dom);\n        if (this.mark.class)\n            dom.className = this.mark.class;\n        if (this.mark.attrs)\n            for (let name in this.mark.attrs)\n                dom.setAttribute(name, this.mark.attrs[name]);\n        return dom;\n    }\n    canReuseDOM(other) {\n        return super.canReuseDOM(other) && !((this.flags | other.flags) & 8 /* ViewFlag.Composition */);\n    }\n    reuseDOM(node) {\n        if (node.nodeName == this.mark.tagName.toUpperCase()) {\n            this.setDOM(node);\n            this.flags |= 4 /* ViewFlag.AttrsDirty */ | 2 /* ViewFlag.NodeDirty */;\n        }\n    }\n    sync(view, track) {\n        if (!this.dom)\n            this.setDOM(this.setAttrs(document.createElement(this.mark.tagName)));\n        else if (this.flags & 4 /* ViewFlag.AttrsDirty */)\n            this.setAttrs(this.dom);\n        super.sync(view, track);\n    }\n    merge(from, to, source, _hasStart, openStart, openEnd) {\n        if (source && (!(source instanceof MarkView && source.mark.eq(this.mark)) ||\n            (from && openStart <= 0) || (to < this.length && openEnd <= 0)))\n            return false;\n        mergeChildrenInto(this, from, to, source ? source.children.slice() : [], openStart - 1, openEnd - 1);\n        this.markDirty();\n        return true;\n    }\n    split(from) {\n        let result = [], off = 0, detachFrom = -1, i = 0;\n        for (let elt of this.children) {\n            let end = off + elt.length;\n            if (end > from)\n                result.push(off < from ? elt.split(from - off) : elt);\n            if (detachFrom < 0 && off >= from)\n                detachFrom = i;\n            off = end;\n            i++;\n        }\n        let length = this.length - from;\n        this.length = from;\n        if (detachFrom > -1) {\n            this.children.length = detachFrom;\n            this.markDirty();\n        }\n        return new MarkView(this.mark, result, length);\n    }\n    domAtPos(pos) {\n        return inlineDOMAtPos(this, pos);\n    }\n    coordsAt(pos, side) {\n        return coordsInChildren(this, pos, side);\n    }\n}\nfunction textCoords(text, pos, side) {\n    let length = text.nodeValue.length;\n    if (pos > length)\n        pos = length;\n    let from = pos, to = pos, flatten = 0;\n    if (pos == 0 && side < 0 || pos == length && side >= 0) {\n        if (!(browser.chrome || browser.gecko)) { // These browsers reliably return valid rectangles for empty ranges\n            if (pos) {\n                from--;\n                flatten = 1;\n            } // FIXME this is wrong in RTL text\n            else if (to < length) {\n                to++;\n                flatten = -1;\n            }\n        }\n    }\n    else {\n        if (side < 0)\n            from--;\n        else if (to < length)\n            to++;\n    }\n    let rects = textRange(text, from, to).getClientRects();\n    if (!rects.length)\n        return null;\n    let rect = rects[(flatten ? flatten < 0 : side >= 0) ? 0 : rects.length - 1];\n    if (browser.safari && !flatten && rect.width == 0)\n        rect = Array.prototype.find.call(rects, r => r.width) || rect;\n    return flatten ? flattenRect(rect, flatten < 0) : rect || null;\n}\n// Also used for collapsed ranges that don't have a placeholder widget!\nclass WidgetView extends ContentView {\n    static create(widget, length, side) {\n        return new WidgetView(widget, length, side);\n    }\n    constructor(widget, length, side) {\n        super();\n        this.widget = widget;\n        this.length = length;\n        this.side = side;\n        this.prevWidget = null;\n    }\n    split(from) {\n        let result = WidgetView.create(this.widget, this.length - from, this.side);\n        this.length -= from;\n        return result;\n    }\n    sync(view) {\n        if (!this.dom || !this.widget.updateDOM(this.dom, view)) {\n            if (this.dom && this.prevWidget)\n                this.prevWidget.destroy(this.dom);\n            this.prevWidget = null;\n            this.setDOM(this.widget.toDOM(view));\n            if (!this.widget.editable)\n                this.dom.contentEditable = \"false\";\n        }\n    }\n    getSide() { return this.side; }\n    merge(from, to, source, hasStart, openStart, openEnd) {\n        if (source && (!(source instanceof WidgetView) || !this.widget.compare(source.widget) ||\n            from > 0 && openStart <= 0 || to < this.length && openEnd <= 0))\n            return false;\n        this.length = from + (source ? source.length : 0) + (this.length - to);\n        return true;\n    }\n    become(other) {\n        if (other instanceof WidgetView && other.side == this.side &&\n            this.widget.constructor == other.widget.constructor) {\n            if (!this.widget.compare(other.widget))\n                this.markDirty(true);\n            if (this.dom && !this.prevWidget)\n                this.prevWidget = this.widget;\n            this.widget = other.widget;\n            this.length = other.length;\n            return true;\n        }\n        return false;\n    }\n    ignoreMutation() { return true; }\n    ignoreEvent(event) { return this.widget.ignoreEvent(event); }\n    get overrideDOMText() {\n        if (this.length == 0)\n            return Text.empty;\n        let top = this;\n        while (top.parent)\n            top = top.parent;\n        let { view } = top, text = view && view.state.doc, start = this.posAtStart;\n        return text ? text.slice(start, start + this.length) : Text.empty;\n    }\n    domAtPos(pos) {\n        return (this.length ? pos == 0 : this.side > 0)\n            ? DOMPos.before(this.dom)\n            : DOMPos.after(this.dom, pos == this.length);\n    }\n    domBoundsAround() { return null; }\n    coordsAt(pos, side) {\n        let custom = this.widget.coordsAt(this.dom, pos, side);\n        if (custom)\n            return custom;\n        let rects = this.dom.getClientRects(), rect = null;\n        if (!rects.length)\n            return null;\n        let fromBack = this.side ? this.side < 0 : pos > 0;\n        for (let i = fromBack ? rects.length - 1 : 0;; i += (fromBack ? -1 : 1)) {\n            rect = rects[i];\n            if (pos > 0 ? i == 0 : i == rects.length - 1 || rect.top < rect.bottom)\n                break;\n        }\n        return flattenRect(rect, !fromBack);\n    }\n    get isEditable() { return false; }\n    get isWidget() { return true; }\n    get isHidden() { return this.widget.isHidden; }\n    destroy() {\n        super.destroy();\n        if (this.dom)\n            this.widget.destroy(this.dom);\n    }\n}\n// These are drawn around uneditable widgets to avoid a number of\n// browser bugs that show up when the cursor is directly next to\n// uneditable inline content.\nclass WidgetBufferView extends ContentView {\n    constructor(side) {\n        super();\n        this.side = side;\n    }\n    get length() { return 0; }\n    merge() { return false; }\n    become(other) {\n        return other instanceof WidgetBufferView && other.side == this.side;\n    }\n    split() { return new WidgetBufferView(this.side); }\n    sync() {\n        if (!this.dom) {\n            let dom = document.createElement(\"img\");\n            dom.className = \"cm-widgetBuffer\";\n            dom.setAttribute(\"aria-hidden\", \"true\");\n            this.setDOM(dom);\n        }\n    }\n    getSide() { return this.side; }\n    domAtPos(pos) { return this.side > 0 ? DOMPos.before(this.dom) : DOMPos.after(this.dom); }\n    localPosFromDOM() { return 0; }\n    domBoundsAround() { return null; }\n    coordsAt(pos) {\n        return this.dom.getBoundingClientRect();\n    }\n    get overrideDOMText() {\n        return Text.empty;\n    }\n    get isHidden() { return true; }\n}\nTextView.prototype.children = WidgetView.prototype.children = WidgetBufferView.prototype.children = noChildren;\nfunction inlineDOMAtPos(parent, pos) {\n    let dom = parent.dom, { children } = parent, i = 0;\n    for (let off = 0; i < children.length; i++) {\n        let child = children[i], end = off + child.length;\n        if (end == off && child.getSide() <= 0)\n            continue;\n        if (pos > off && pos < end && child.dom.parentNode == dom)\n            return child.domAtPos(pos - off);\n        if (pos <= off)\n            break;\n        off = end;\n    }\n    for (let j = i; j > 0; j--) {\n        let prev = children[j - 1];\n        if (prev.dom.parentNode == dom)\n            return prev.domAtPos(prev.length);\n    }\n    for (let j = i; j < children.length; j++) {\n        let next = children[j];\n        if (next.dom.parentNode == dom)\n            return next.domAtPos(0);\n    }\n    return new DOMPos(dom, 0);\n}\n// Assumes `view`, if a mark view, has precisely 1 child.\nfunction joinInlineInto(parent, view, open) {\n    let last, { children } = parent;\n    if (open > 0 && view instanceof MarkView && children.length &&\n        (last = children[children.length - 1]) instanceof MarkView && last.mark.eq(view.mark)) {\n        joinInlineInto(last, view.children[0], open - 1);\n    }\n    else {\n        children.push(view);\n        view.setParent(parent);\n    }\n    parent.length += view.length;\n}\nfunction coordsInChildren(view, pos, side) {\n    let before = null, beforePos = -1, after = null, afterPos = -1;\n    function scan(view, pos) {\n        for (let i = 0, off = 0; i < view.children.length && off <= pos; i++) {\n            let child = view.children[i], end = off + child.length;\n            if (end >= pos) {\n                if (child.children.length) {\n                    scan(child, pos - off);\n                }\n                else if ((!after || after.isHidden && side > 0) &&\n                    (end > pos || off == end && child.getSide() > 0)) {\n                    after = child;\n                    afterPos = pos - off;\n                }\n                else if (off < pos || (off == end && child.getSide() < 0) && !child.isHidden) {\n                    before = child;\n                    beforePos = pos - off;\n                }\n            }\n            off = end;\n        }\n    }\n    scan(view, pos);\n    let target = (side < 0 ? before : after) || before || after;\n    if (target)\n        return target.coordsAt(Math.max(0, target == before ? beforePos : afterPos), side);\n    return fallbackRect(view);\n}\nfunction fallbackRect(view) {\n    let last = view.dom.lastChild;\n    if (!last)\n        return view.dom.getBoundingClientRect();\n    let rects = clientRectsFor(last);\n    return rects[rects.length - 1] || null;\n}\n\nfunction combineAttrs(source, target) {\n    for (let name in source) {\n        if (name == \"class\" && target.class)\n            target.class += \" \" + source.class;\n        else if (name == \"style\" && target.style)\n            target.style += \";\" + source.style;\n        else\n            target[name] = source[name];\n    }\n    return target;\n}\nconst noAttrs = /*@__PURE__*/Object.create(null);\nfunction attrsEq(a, b, ignore) {\n    if (a == b)\n        return true;\n    if (!a)\n        a = noAttrs;\n    if (!b)\n        b = noAttrs;\n    let keysA = Object.keys(a), keysB = Object.keys(b);\n    if (keysA.length - (ignore && keysA.indexOf(ignore) > -1 ? 1 : 0) !=\n        keysB.length - (ignore && keysB.indexOf(ignore) > -1 ? 1 : 0))\n        return false;\n    for (let key of keysA) {\n        if (key != ignore && (keysB.indexOf(key) == -1 || a[key] !== b[key]))\n            return false;\n    }\n    return true;\n}\nfunction updateAttrs(dom, prev, attrs) {\n    let changed = false;\n    if (prev)\n        for (let name in prev)\n            if (!(attrs && name in attrs)) {\n                changed = true;\n                if (name == \"style\")\n                    dom.style.cssText = \"\";\n                else\n                    dom.removeAttribute(name);\n            }\n    if (attrs)\n        for (let name in attrs)\n            if (!(prev && prev[name] == attrs[name])) {\n                changed = true;\n                if (name == \"style\")\n                    dom.style.cssText = attrs[name];\n                else\n                    dom.setAttribute(name, attrs[name]);\n            }\n    return changed;\n}\nfunction getAttrs(dom) {\n    let attrs = Object.create(null);\n    for (let i = 0; i < dom.attributes.length; i++) {\n        let attr = dom.attributes[i];\n        attrs[attr.name] = attr.value;\n    }\n    return attrs;\n}\n\n/**\nWidgets added to the content are described by subclasses of this\nclass. Using a description object like that makes it possible to\ndelay creating of the DOM structure for a widget until it is\nneeded, and to avoid redrawing widgets even if the decorations\nthat define them are recreated.\n*/\nclass WidgetType {\n    /**\n    Compare this instance to another instance of the same type.\n    (TypeScript can't express this, but only instances of the same\n    specific class will be passed to this method.) This is used to\n    avoid redrawing widgets when they are replaced by a new\n    decoration of the same type. The default implementation just\n    returns `false`, which will cause new instances of the widget to\n    always be redrawn.\n    */\n    eq(widget) { return false; }\n    /**\n    Update a DOM element created by a widget of the same type (but\n    different, non-`eq` content) to reflect this widget. May return\n    true to indicate that it could update, false to indicate it\n    couldn't (in which case the widget will be redrawn). The default\n    implementation just returns false.\n    */\n    updateDOM(dom, view) { return false; }\n    /**\n    @internal\n    */\n    compare(other) {\n        return this == other || this.constructor == other.constructor && this.eq(other);\n    }\n    /**\n    The estimated height this widget will have, to be used when\n    estimating the height of content that hasn't been drawn. May\n    return -1 to indicate you don't know. The default implementation\n    returns -1.\n    */\n    get estimatedHeight() { return -1; }\n    /**\n    For inline widgets that are displayed inline (as opposed to\n    `inline-block`) and introduce line breaks (through `<br>` tags\n    or textual newlines), this must indicate the amount of line\n    breaks they introduce. Defaults to 0.\n    */\n    get lineBreaks() { return 0; }\n    /**\n    Can be used to configure which kinds of events inside the widget\n    should be ignored by the editor. The default is to ignore all\n    events.\n    */\n    ignoreEvent(event) { return true; }\n    /**\n    Override the way screen coordinates for positions at/in the\n    widget are found. `pos` will be the offset into the widget, and\n    `side` the side of the position that is being queried—less than\n    zero for before, greater than zero for after, and zero for\n    directly at that position.\n    */\n    coordsAt(dom, pos, side) { return null; }\n    /**\n    @internal\n    */\n    get isHidden() { return false; }\n    /**\n    @internal\n    */\n    get editable() { return false; }\n    /**\n    This is called when the an instance of the widget is removed\n    from the editor view.\n    */\n    destroy(dom) { }\n}\n/**\nThe different types of blocks that can occur in an editor view.\n*/\nvar BlockType = /*@__PURE__*/(function (BlockType) {\n    /**\n    A line of text.\n    */\n    BlockType[BlockType[\"Text\"] = 0] = \"Text\";\n    /**\n    A block widget associated with the position after it.\n    */\n    BlockType[BlockType[\"WidgetBefore\"] = 1] = \"WidgetBefore\";\n    /**\n    A block widget associated with the position before it.\n    */\n    BlockType[BlockType[\"WidgetAfter\"] = 2] = \"WidgetAfter\";\n    /**\n    A block widget [replacing](https://codemirror.net/6/docs/ref/#view.Decoration^replace) a range of content.\n    */\n    BlockType[BlockType[\"WidgetRange\"] = 3] = \"WidgetRange\";\nreturn BlockType})(BlockType || (BlockType = {}));\n/**\nA decoration provides information on how to draw or style a piece\nof content. You'll usually use it wrapped in a\n[`Range`](https://codemirror.net/6/docs/ref/#state.Range), which adds a start and end position.\n@nonabstract\n*/\nclass Decoration extends RangeValue {\n    constructor(\n    /**\n    @internal\n    */\n    startSide, \n    /**\n    @internal\n    */\n    endSide, \n    /**\n    @internal\n    */\n    widget, \n    /**\n    The config object used to create this decoration. You can\n    include additional properties in there to store metadata about\n    your decoration.\n    */\n    spec) {\n        super();\n        this.startSide = startSide;\n        this.endSide = endSide;\n        this.widget = widget;\n        this.spec = spec;\n    }\n    /**\n    @internal\n    */\n    get heightRelevant() { return false; }\n    /**\n    Create a mark decoration, which influences the styling of the\n    content in its range. Nested mark decorations will cause nested\n    DOM elements to be created. Nesting order is determined by\n    precedence of the [facet](https://codemirror.net/6/docs/ref/#view.EditorView^decorations), with\n    the higher-precedence decorations creating the inner DOM nodes.\n    Such elements are split on line boundaries and on the boundaries\n    of lower-precedence decorations.\n    */\n    static mark(spec) {\n        return new MarkDecoration(spec);\n    }\n    /**\n    Create a widget decoration, which displays a DOM element at the\n    given position.\n    */\n    static widget(spec) {\n        let side = Math.max(-10000, Math.min(10000, spec.side || 0)), block = !!spec.block;\n        side += (block && !spec.inlineOrder)\n            ? (side > 0 ? 300000000 /* Side.BlockAfter */ : -400000000 /* Side.BlockBefore */)\n            : (side > 0 ? 100000000 /* Side.InlineAfter */ : -100000000 /* Side.InlineBefore */);\n        return new PointDecoration(spec, side, side, block, spec.widget || null, false);\n    }\n    /**\n    Create a replace decoration which replaces the given range with\n    a widget, or simply hides it.\n    */\n    static replace(spec) {\n        let block = !!spec.block, startSide, endSide;\n        if (spec.isBlockGap) {\n            startSide = -500000000 /* Side.GapStart */;\n            endSide = 400000000 /* Side.GapEnd */;\n        }\n        else {\n            let { start, end } = getInclusive(spec, block);\n            startSide = (start ? (block ? -300000000 /* Side.BlockIncStart */ : -1 /* Side.InlineIncStart */) : 500000000 /* Side.NonIncStart */) - 1;\n            endSide = (end ? (block ? 200000000 /* Side.BlockIncEnd */ : 1 /* Side.InlineIncEnd */) : -600000000 /* Side.NonIncEnd */) + 1;\n        }\n        return new PointDecoration(spec, startSide, endSide, block, spec.widget || null, true);\n    }\n    /**\n    Create a line decoration, which can add DOM attributes to the\n    line starting at the given position.\n    */\n    static line(spec) {\n        return new LineDecoration(spec);\n    }\n    /**\n    Build a [`DecorationSet`](https://codemirror.net/6/docs/ref/#view.DecorationSet) from the given\n    decorated range or ranges. If the ranges aren't already sorted,\n    pass `true` for `sort` to make the library sort them for you.\n    */\n    static set(of, sort = false) {\n        return RangeSet.of(of, sort);\n    }\n    /**\n    @internal\n    */\n    hasHeight() { return this.widget ? this.widget.estimatedHeight > -1 : false; }\n}\n/**\nThe empty set of decorations.\n*/\nDecoration.none = RangeSet.empty;\nclass MarkDecoration extends Decoration {\n    constructor(spec) {\n        let { start, end } = getInclusive(spec);\n        super(start ? -1 /* Side.InlineIncStart */ : 500000000 /* Side.NonIncStart */, end ? 1 /* Side.InlineIncEnd */ : -600000000 /* Side.NonIncEnd */, null, spec);\n        this.tagName = spec.tagName || \"span\";\n        this.class = spec.class || \"\";\n        this.attrs = spec.attributes || null;\n    }\n    eq(other) {\n        var _a, _b;\n        return this == other ||\n            other instanceof MarkDecoration &&\n                this.tagName == other.tagName &&\n                (this.class || ((_a = this.attrs) === null || _a === void 0 ? void 0 : _a.class)) == (other.class || ((_b = other.attrs) === null || _b === void 0 ? void 0 : _b.class)) &&\n                attrsEq(this.attrs, other.attrs, \"class\");\n    }\n    range(from, to = from) {\n        if (from >= to)\n            throw new RangeError(\"Mark decorations may not be empty\");\n        return super.range(from, to);\n    }\n}\nMarkDecoration.prototype.point = false;\nclass LineDecoration extends Decoration {\n    constructor(spec) {\n        super(-200000000 /* Side.Line */, -200000000 /* Side.Line */, null, spec);\n    }\n    eq(other) {\n        return other instanceof LineDecoration &&\n            this.spec.class == other.spec.class &&\n            attrsEq(this.spec.attributes, other.spec.attributes);\n    }\n    range(from, to = from) {\n        if (to != from)\n            throw new RangeError(\"Line decoration ranges must be zero-length\");\n        return super.range(from, to);\n    }\n}\nLineDecoration.prototype.mapMode = MapMode.TrackBefore;\nLineDecoration.prototype.point = true;\nclass PointDecoration extends Decoration {\n    constructor(spec, startSide, endSide, block, widget, isReplace) {\n        super(startSide, endSide, widget, spec);\n        this.block = block;\n        this.isReplace = isReplace;\n        this.mapMode = !block ? MapMode.TrackDel : startSide <= 0 ? MapMode.TrackBefore : MapMode.TrackAfter;\n    }\n    // Only relevant when this.block == true\n    get type() {\n        return this.startSide != this.endSide ? BlockType.WidgetRange\n            : this.startSide <= 0 ? BlockType.WidgetBefore : BlockType.WidgetAfter;\n    }\n    get heightRelevant() {\n        return this.block || !!this.widget && (this.widget.estimatedHeight >= 5 || this.widget.lineBreaks > 0);\n    }\n    eq(other) {\n        return other instanceof PointDecoration &&\n            widgetsEq(this.widget, other.widget) &&\n            this.block == other.block &&\n            this.startSide == other.startSide && this.endSide == other.endSide;\n    }\n    range(from, to = from) {\n        if (this.isReplace && (from > to || (from == to && this.startSide > 0 && this.endSide <= 0)))\n            throw new RangeError(\"Invalid range for replacement decoration\");\n        if (!this.isReplace && to != from)\n            throw new RangeError(\"Widget decorations can only have zero-length ranges\");\n        return super.range(from, to);\n    }\n}\nPointDecoration.prototype.point = true;\nfunction getInclusive(spec, block = false) {\n    let { inclusiveStart: start, inclusiveEnd: end } = spec;\n    if (start == null)\n        start = spec.inclusive;\n    if (end == null)\n        end = spec.inclusive;\n    return { start: start !== null && start !== void 0 ? start : block, end: end !== null && end !== void 0 ? end : block };\n}\nfunction widgetsEq(a, b) {\n    return a == b || !!(a && b && a.compare(b));\n}\nfunction addRange(from, to, ranges, margin = 0) {\n    let last = ranges.length - 1;\n    if (last >= 0 && ranges[last] + margin >= from)\n        ranges[last] = Math.max(ranges[last], to);\n    else\n        ranges.push(from, to);\n}\n\nclass LineView extends ContentView {\n    constructor() {\n        super(...arguments);\n        this.children = [];\n        this.length = 0;\n        this.prevAttrs = undefined;\n        this.attrs = null;\n        this.breakAfter = 0;\n    }\n    // Consumes source\n    merge(from, to, source, hasStart, openStart, openEnd) {\n        if (source) {\n            if (!(source instanceof LineView))\n                return false;\n            if (!this.dom)\n                source.transferDOM(this); // Reuse source.dom when appropriate\n        }\n        if (hasStart)\n            this.setDeco(source ? source.attrs : null);\n        mergeChildrenInto(this, from, to, source ? source.children.slice() : [], openStart, openEnd);\n        return true;\n    }\n    split(at) {\n        let end = new LineView;\n        end.breakAfter = this.breakAfter;\n        if (this.length == 0)\n            return end;\n        let { i, off } = this.childPos(at);\n        if (off) {\n            end.append(this.children[i].split(off), 0);\n            this.children[i].merge(off, this.children[i].length, null, false, 0, 0);\n            i++;\n        }\n        for (let j = i; j < this.children.length; j++)\n            end.append(this.children[j], 0);\n        while (i > 0 && this.children[i - 1].length == 0)\n            this.children[--i].destroy();\n        this.children.length = i;\n        this.markDirty();\n        this.length = at;\n        return end;\n    }\n    transferDOM(other) {\n        if (!this.dom)\n            return;\n        this.markDirty();\n        other.setDOM(this.dom);\n        other.prevAttrs = this.prevAttrs === undefined ? this.attrs : this.prevAttrs;\n        this.prevAttrs = undefined;\n        this.dom = null;\n    }\n    setDeco(attrs) {\n        if (!attrsEq(this.attrs, attrs)) {\n            if (this.dom) {\n                this.prevAttrs = this.attrs;\n                this.markDirty();\n            }\n            this.attrs = attrs;\n        }\n    }\n    append(child, openStart) {\n        joinInlineInto(this, child, openStart);\n    }\n    // Only called when building a line view in ContentBuilder\n    addLineDeco(deco) {\n        let attrs = deco.spec.attributes, cls = deco.spec.class;\n        if (attrs)\n            this.attrs = combineAttrs(attrs, this.attrs || {});\n        if (cls)\n            this.attrs = combineAttrs({ class: cls }, this.attrs || {});\n    }\n    domAtPos(pos) {\n        return inlineDOMAtPos(this, pos);\n    }\n    reuseDOM(node) {\n        if (node.nodeName == \"DIV\") {\n            this.setDOM(node);\n            this.flags |= 4 /* ViewFlag.AttrsDirty */ | 2 /* ViewFlag.NodeDirty */;\n        }\n    }\n    sync(view, track) {\n        var _a;\n        if (!this.dom) {\n            this.setDOM(document.createElement(\"div\"));\n            this.dom.className = \"cm-line\";\n            this.prevAttrs = this.attrs ? null : undefined;\n        }\n        else if (this.flags & 4 /* ViewFlag.AttrsDirty */) {\n            clearAttributes(this.dom);\n            this.dom.className = \"cm-line\";\n            this.prevAttrs = this.attrs ? null : undefined;\n        }\n        if (this.prevAttrs !== undefined) {\n            updateAttrs(this.dom, this.prevAttrs, this.attrs);\n            this.dom.classList.add(\"cm-line\");\n            this.prevAttrs = undefined;\n        }\n        super.sync(view, track);\n        let last = this.dom.lastChild;\n        while (last && ContentView.get(last) instanceof MarkView)\n            last = last.lastChild;\n        if (!last || !this.length ||\n            last.nodeName != \"BR\" && ((_a = ContentView.get(last)) === null || _a === void 0 ? void 0 : _a.isEditable) == false &&\n                (!browser.ios || !this.children.some(ch => ch instanceof TextView))) {\n            let hack = document.createElement(\"BR\");\n            hack.cmIgnore = true;\n            this.dom.appendChild(hack);\n        }\n    }\n    measureTextSize() {\n        if (this.children.length == 0 || this.length > 20)\n            return null;\n        let totalWidth = 0, textHeight;\n        for (let child of this.children) {\n            if (!(child instanceof TextView) || /[^ -~]/.test(child.text))\n                return null;\n            let rects = clientRectsFor(child.dom);\n            if (rects.length != 1)\n                return null;\n            totalWidth += rects[0].width;\n            textHeight = rects[0].height;\n        }\n        return !totalWidth ? null : {\n            lineHeight: this.dom.getBoundingClientRect().height,\n            charWidth: totalWidth / this.length,\n            textHeight\n        };\n    }\n    coordsAt(pos, side) {\n        let rect = coordsInChildren(this, pos, side);\n        // Correct rectangle height for empty lines when the returned\n        // height is larger than the text height.\n        if (!this.children.length && rect && this.parent) {\n            let { heightOracle } = this.parent.view.viewState, height = rect.bottom - rect.top;\n            if (Math.abs(height - heightOracle.lineHeight) < 2 && heightOracle.textHeight < height) {\n                let dist = (height - heightOracle.textHeight) / 2;\n                return { top: rect.top + dist, bottom: rect.bottom - dist, left: rect.left, right: rect.left };\n            }\n        }\n        return rect;\n    }\n    become(other) {\n        return other instanceof LineView && this.children.length == 0 && other.children.length == 0 &&\n            attrsEq(this.attrs, other.attrs) && this.breakAfter == other.breakAfter;\n    }\n    covers() { return true; }\n    static find(docView, pos) {\n        for (let i = 0, off = 0; i < docView.children.length; i++) {\n            let block = docView.children[i], end = off + block.length;\n            if (end >= pos) {\n                if (block instanceof LineView)\n                    return block;\n                if (end > pos)\n                    break;\n            }\n            off = end + block.breakAfter;\n        }\n        return null;\n    }\n}\nclass BlockWidgetView extends ContentView {\n    constructor(widget, length, deco) {\n        super();\n        this.widget = widget;\n        this.length = length;\n        this.deco = deco;\n        this.breakAfter = 0;\n        this.prevWidget = null;\n    }\n    merge(from, to, source, _takeDeco, openStart, openEnd) {\n        if (source && (!(source instanceof BlockWidgetView) || !this.widget.compare(source.widget) ||\n            from > 0 && openStart <= 0 || to < this.length && openEnd <= 0))\n            return false;\n        this.length = from + (source ? source.length : 0) + (this.length - to);\n        return true;\n    }\n    domAtPos(pos) {\n        return pos == 0 ? DOMPos.before(this.dom) : DOMPos.after(this.dom, pos == this.length);\n    }\n    split(at) {\n        let len = this.length - at;\n        this.length = at;\n        let end = new BlockWidgetView(this.widget, len, this.deco);\n        end.breakAfter = this.breakAfter;\n        return end;\n    }\n    get children() { return noChildren; }\n    sync(view) {\n        if (!this.dom || !this.widget.updateDOM(this.dom, view)) {\n            if (this.dom && this.prevWidget)\n                this.prevWidget.destroy(this.dom);\n            this.prevWidget = null;\n            this.setDOM(this.widget.toDOM(view));\n            if (!this.widget.editable)\n                this.dom.contentEditable = \"false\";\n        }\n    }\n    get overrideDOMText() {\n        return this.parent ? this.parent.view.state.doc.slice(this.posAtStart, this.posAtEnd) : Text.empty;\n    }\n    domBoundsAround() { return null; }\n    become(other) {\n        if (other instanceof BlockWidgetView &&\n            other.widget.constructor == this.widget.constructor) {\n            if (!other.widget.compare(this.widget))\n                this.markDirty(true);\n            if (this.dom && !this.prevWidget)\n                this.prevWidget = this.widget;\n            this.widget = other.widget;\n            this.length = other.length;\n            this.deco = other.deco;\n            this.breakAfter = other.breakAfter;\n            return true;\n        }\n        return false;\n    }\n    ignoreMutation() { return true; }\n    ignoreEvent(event) { return this.widget.ignoreEvent(event); }\n    get isEditable() { return false; }\n    get isWidget() { return true; }\n    coordsAt(pos, side) {\n        let custom = this.widget.coordsAt(this.dom, pos, side);\n        if (custom)\n            return custom;\n        if (this.widget instanceof BlockGapWidget)\n            return null;\n        return flattenRect(this.dom.getBoundingClientRect(), this.length ? pos == 0 : side <= 0);\n    }\n    destroy() {\n        super.destroy();\n        if (this.dom)\n            this.widget.destroy(this.dom);\n    }\n    covers(side) {\n        let { startSide, endSide } = this.deco;\n        return startSide == endSide ? false : side < 0 ? startSide < 0 : endSide > 0;\n    }\n}\nclass BlockGapWidget extends WidgetType {\n    constructor(height) {\n        super();\n        this.height = height;\n    }\n    toDOM() {\n        let elt = document.createElement(\"div\");\n        elt.className = \"cm-gap\";\n        this.updateDOM(elt);\n        return elt;\n    }\n    eq(other) { return other.height == this.height; }\n    updateDOM(elt) {\n        elt.style.height = this.height + \"px\";\n        return true;\n    }\n    get editable() { return true; }\n    get estimatedHeight() { return this.height; }\n    ignoreEvent() { return false; }\n}\n\nclass ContentBuilder {\n    constructor(doc, pos, end, disallowBlockEffectsFor) {\n        this.doc = doc;\n        this.pos = pos;\n        this.end = end;\n        this.disallowBlockEffectsFor = disallowBlockEffectsFor;\n        this.content = [];\n        this.curLine = null;\n        this.breakAtStart = 0;\n        this.pendingBuffer = 0 /* Buf.No */;\n        this.bufferMarks = [];\n        // Set to false directly after a widget that covers the position after it\n        this.atCursorPos = true;\n        this.openStart = -1;\n        this.openEnd = -1;\n        this.text = \"\";\n        this.textOff = 0;\n        this.cursor = doc.iter();\n        this.skip = pos;\n    }\n    posCovered() {\n        if (this.content.length == 0)\n            return !this.breakAtStart && this.doc.lineAt(this.pos).from != this.pos;\n        let last = this.content[this.content.length - 1];\n        return !(last.breakAfter || last instanceof BlockWidgetView && last.deco.endSide < 0);\n    }\n    getLine() {\n        if (!this.curLine) {\n            this.content.push(this.curLine = new LineView);\n            this.atCursorPos = true;\n        }\n        return this.curLine;\n    }\n    flushBuffer(active = this.bufferMarks) {\n        if (this.pendingBuffer) {\n            this.curLine.append(wrapMarks(new WidgetBufferView(-1), active), active.length);\n            this.pendingBuffer = 0 /* Buf.No */;\n        }\n    }\n    addBlockWidget(view) {\n        this.flushBuffer();\n        this.curLine = null;\n        this.content.push(view);\n    }\n    finish(openEnd) {\n        if (this.pendingBuffer && openEnd <= this.bufferMarks.length)\n            this.flushBuffer();\n        else\n            this.pendingBuffer = 0 /* Buf.No */;\n        if (!this.posCovered() &&\n            !(openEnd && this.content.length && this.content[this.content.length - 1] instanceof BlockWidgetView))\n            this.getLine();\n    }\n    buildText(length, active, openStart) {\n        while (length > 0) {\n            if (this.textOff == this.text.length) {\n                let { value, lineBreak, done } = this.cursor.next(this.skip);\n                this.skip = 0;\n                if (done)\n                    throw new Error(\"Ran out of text content when drawing inline views\");\n                if (lineBreak) {\n                    if (!this.posCovered())\n                        this.getLine();\n                    if (this.content.length)\n                        this.content[this.content.length - 1].breakAfter = 1;\n                    else\n                        this.breakAtStart = 1;\n                    this.flushBuffer();\n                    this.curLine = null;\n                    this.atCursorPos = true;\n                    length--;\n                    continue;\n                }\n                else {\n                    this.text = value;\n                    this.textOff = 0;\n                }\n            }\n            let take = Math.min(this.text.length - this.textOff, length, 512 /* T.Chunk */);\n            this.flushBuffer(active.slice(active.length - openStart));\n            this.getLine().append(wrapMarks(new TextView(this.text.slice(this.textOff, this.textOff + take)), active), openStart);\n            this.atCursorPos = true;\n            this.textOff += take;\n            length -= take;\n            openStart = 0;\n        }\n    }\n    span(from, to, active, openStart) {\n        this.buildText(to - from, active, openStart);\n        this.pos = to;\n        if (this.openStart < 0)\n            this.openStart = openStart;\n    }\n    point(from, to, deco, active, openStart, index) {\n        if (this.disallowBlockEffectsFor[index] && deco instanceof PointDecoration) {\n            if (deco.block)\n                throw new RangeError(\"Block decorations may not be specified via plugins\");\n            if (to > this.doc.lineAt(this.pos).to)\n                throw new RangeError(\"Decorations that replace line breaks may not be specified via plugins\");\n        }\n        let len = to - from;\n        if (deco instanceof PointDecoration) {\n            if (deco.block) {\n                if (deco.startSide > 0 && !this.posCovered())\n                    this.getLine();\n                this.addBlockWidget(new BlockWidgetView(deco.widget || NullWidget.block, len, deco));\n            }\n            else {\n                let view = WidgetView.create(deco.widget || NullWidget.inline, len, len ? 0 : deco.startSide);\n                let cursorBefore = this.atCursorPos && !view.isEditable && openStart <= active.length &&\n                    (from < to || deco.startSide > 0);\n                let cursorAfter = !view.isEditable && (from < to || openStart > active.length || deco.startSide <= 0);\n                let line = this.getLine();\n                if (this.pendingBuffer == 2 /* Buf.IfCursor */ && !cursorBefore && !view.isEditable)\n                    this.pendingBuffer = 0 /* Buf.No */;\n                this.flushBuffer(active);\n                if (cursorBefore) {\n                    line.append(wrapMarks(new WidgetBufferView(1), active), openStart);\n                    openStart = active.length + Math.max(0, openStart - active.length);\n                }\n                line.append(wrapMarks(view, active), openStart);\n                this.atCursorPos = cursorAfter;\n                this.pendingBuffer = !cursorAfter ? 0 /* Buf.No */ : from < to || openStart > active.length ? 1 /* Buf.Yes */ : 2 /* Buf.IfCursor */;\n                if (this.pendingBuffer)\n                    this.bufferMarks = active.slice();\n            }\n        }\n        else if (this.doc.lineAt(this.pos).from == this.pos) { // Line decoration\n            this.getLine().addLineDeco(deco);\n        }\n        if (len) {\n            // Advance the iterator past the replaced content\n            if (this.textOff + len <= this.text.length) {\n                this.textOff += len;\n            }\n            else {\n                this.skip += len - (this.text.length - this.textOff);\n                this.text = \"\";\n                this.textOff = 0;\n            }\n            this.pos = to;\n        }\n        if (this.openStart < 0)\n            this.openStart = openStart;\n    }\n    static build(text, from, to, decorations, dynamicDecorationMap) {\n        let builder = new ContentBuilder(text, from, to, dynamicDecorationMap);\n        builder.openEnd = RangeSet.spans(decorations, from, to, builder);\n        if (builder.openStart < 0)\n            builder.openStart = builder.openEnd;\n        builder.finish(builder.openEnd);\n        return builder;\n    }\n}\nfunction wrapMarks(view, active) {\n    for (let mark of active)\n        view = new MarkView(mark, [view], view.length);\n    return view;\n}\nclass NullWidget extends WidgetType {\n    constructor(tag) {\n        super();\n        this.tag = tag;\n    }\n    eq(other) { return other.tag == this.tag; }\n    toDOM() { return document.createElement(this.tag); }\n    updateDOM(elt) { return elt.nodeName.toLowerCase() == this.tag; }\n    get isHidden() { return true; }\n}\nNullWidget.inline = /*@__PURE__*/new NullWidget(\"span\");\nNullWidget.block = /*@__PURE__*/new NullWidget(\"div\");\n\n/**\nUsed to indicate [text direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection).\n*/\nvar Direction = /*@__PURE__*/(function (Direction) {\n    // (These are chosen to match the base levels, in bidi algorithm\n    // terms, of spans in that direction.)\n    /**\n    Left-to-right.\n    */\n    Direction[Direction[\"LTR\"] = 0] = \"LTR\";\n    /**\n    Right-to-left.\n    */\n    Direction[Direction[\"RTL\"] = 1] = \"RTL\";\nreturn Direction})(Direction || (Direction = {}));\nconst LTR = Direction.LTR, RTL = Direction.RTL;\n// Decode a string with each type encoded as log2(type)\nfunction dec(str) {\n    let result = [];\n    for (let i = 0; i < str.length; i++)\n        result.push(1 << +str[i]);\n    return result;\n}\n// Character types for codepoints 0 to 0xf8\nconst LowTypes = /*@__PURE__*/dec(\"88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008\");\n// Character types for codepoints 0x600 to 0x6f9\nconst ArabicTypes = /*@__PURE__*/dec(\"4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333\");\nconst Brackets = /*@__PURE__*/Object.create(null), BracketStack = [];\n// There's a lot more in\n// https://www.unicode.org/Public/UCD/latest/ucd/BidiBrackets.txt,\n// which are left out to keep code size down.\nfor (let p of [\"()\", \"[]\", \"{}\"]) {\n    let l = /*@__PURE__*/p.charCodeAt(0), r = /*@__PURE__*/p.charCodeAt(1);\n    Brackets[l] = r;\n    Brackets[r] = -l;\n}\nfunction charType(ch) {\n    return ch <= 0xf7 ? LowTypes[ch] :\n        0x590 <= ch && ch <= 0x5f4 ? 2 /* T.R */ :\n            0x600 <= ch && ch <= 0x6f9 ? ArabicTypes[ch - 0x600] :\n                0x6ee <= ch && ch <= 0x8ac ? 4 /* T.AL */ :\n                    0x2000 <= ch && ch <= 0x200c ? 256 /* T.NI */ :\n                        0xfb50 <= ch && ch <= 0xfdff ? 4 /* T.AL */ : 1 /* T.L */;\n}\nconst BidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/;\n/**\nRepresents a contiguous range of text that has a single direction\n(as in left-to-right or right-to-left).\n*/\nclass BidiSpan {\n    /**\n    The direction of this span.\n    */\n    get dir() { return this.level % 2 ? RTL : LTR; }\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The start of the span (relative to the start of the line).\n    */\n    from, \n    /**\n    The end of the span.\n    */\n    to, \n    /**\n    The [\"bidi\n    level\"](https://unicode.org/reports/tr9/#Basic_Display_Algorithm)\n    of the span (in this context, 0 means\n    left-to-right, 1 means right-to-left, 2 means left-to-right\n    number inside right-to-left text).\n    */\n    level) {\n        this.from = from;\n        this.to = to;\n        this.level = level;\n    }\n    /**\n    @internal\n    */\n    side(end, dir) { return (this.dir == dir) == end ? this.to : this.from; }\n    /**\n    @internal\n    */\n    forward(forward, dir) { return forward == (this.dir == dir); }\n    /**\n    @internal\n    */\n    static find(order, index, level, assoc) {\n        let maybe = -1;\n        for (let i = 0; i < order.length; i++) {\n            let span = order[i];\n            if (span.from <= index && span.to >= index) {\n                if (span.level == level)\n                    return i;\n                // When multiple spans match, if assoc != 0, take the one that\n                // covers that side, otherwise take the one with the minimum\n                // level.\n                if (maybe < 0 || (assoc != 0 ? (assoc < 0 ? span.from < index : span.to > index) : order[maybe].level > span.level))\n                    maybe = i;\n            }\n        }\n        if (maybe < 0)\n            throw new RangeError(\"Index out of range\");\n        return maybe;\n    }\n}\nfunction isolatesEq(a, b) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++) {\n        let iA = a[i], iB = b[i];\n        if (iA.from != iB.from || iA.to != iB.to || iA.direction != iB.direction || !isolatesEq(iA.inner, iB.inner))\n            return false;\n    }\n    return true;\n}\n// Reused array of character types\nconst types = [];\n// Fill in the character types (in `types`) from `from` to `to` and\n// apply W normalization rules.\nfunction computeCharTypes(line, rFrom, rTo, isolates, outerType) {\n    for (let iI = 0; iI <= isolates.length; iI++) {\n        let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n        let prevType = iI ? 256 /* T.NI */ : outerType;\n        // W1. Examine each non-spacing mark (NSM) in the level run, and\n        // change the type of the NSM to the type of the previous\n        // character. If the NSM is at the start of the level run, it will\n        // get the type of sor.\n        // W2. Search backwards from each instance of a European number\n        // until the first strong type (R, L, AL, or sor) is found. If an\n        // AL is found, change the type of the European number to Arabic\n        // number.\n        // W3. Change all ALs to R.\n        // (Left after this: L, R, EN, AN, ET, CS, NI)\n        for (let i = from, prev = prevType, prevStrong = prevType; i < to; i++) {\n            let type = charType(line.charCodeAt(i));\n            if (type == 512 /* T.NSM */)\n                type = prev;\n            else if (type == 8 /* T.EN */ && prevStrong == 4 /* T.AL */)\n                type = 16 /* T.AN */;\n            types[i] = type == 4 /* T.AL */ ? 2 /* T.R */ : type;\n            if (type & 7 /* T.Strong */)\n                prevStrong = type;\n            prev = type;\n        }\n        // W5. A sequence of European terminators adjacent to European\n        // numbers changes to all European numbers.\n        // W6. Otherwise, separators and terminators change to Other\n        // Neutral.\n        // W7. Search backwards from each instance of a European number\n        // until the first strong type (R, L, or sor) is found. If an L is\n        // found, then change the type of the European number to L.\n        // (Left after this: L, R, EN+AN, NI)\n        for (let i = from, prev = prevType, prevStrong = prevType; i < to; i++) {\n            let type = types[i];\n            if (type == 128 /* T.CS */) {\n                if (i < to - 1 && prev == types[i + 1] && (prev & 24 /* T.Num */))\n                    type = types[i] = prev;\n                else\n                    types[i] = 256 /* T.NI */;\n            }\n            else if (type == 64 /* T.ET */) {\n                let end = i + 1;\n                while (end < to && types[end] == 64 /* T.ET */)\n                    end++;\n                let replace = (i && prev == 8 /* T.EN */) || (end < rTo && types[end] == 8 /* T.EN */) ? (prevStrong == 1 /* T.L */ ? 1 /* T.L */ : 8 /* T.EN */) : 256 /* T.NI */;\n                for (let j = i; j < end; j++)\n                    types[j] = replace;\n                i = end - 1;\n            }\n            else if (type == 8 /* T.EN */ && prevStrong == 1 /* T.L */) {\n                types[i] = 1 /* T.L */;\n            }\n            prev = type;\n            if (type & 7 /* T.Strong */)\n                prevStrong = type;\n        }\n    }\n}\n// Process brackets throughout a run sequence.\nfunction processBracketPairs(line, rFrom, rTo, isolates, outerType) {\n    let oppositeType = outerType == 1 /* T.L */ ? 2 /* T.R */ : 1 /* T.L */;\n    for (let iI = 0, sI = 0, context = 0; iI <= isolates.length; iI++) {\n        let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n        // N0. Process bracket pairs in an isolating run sequence\n        // sequentially in the logical order of the text positions of the\n        // opening paired brackets using the logic given below. Within this\n        // scope, bidirectional types EN and AN are treated as R.\n        for (let i = from, ch, br, type; i < to; i++) {\n            // Keeps [startIndex, type, strongSeen] triples for each open\n            // bracket on BracketStack.\n            if (br = Brackets[ch = line.charCodeAt(i)]) {\n                if (br < 0) { // Closing bracket\n                    for (let sJ = sI - 3; sJ >= 0; sJ -= 3) {\n                        if (BracketStack[sJ + 1] == -br) {\n                            let flags = BracketStack[sJ + 2];\n                            let type = (flags & 2 /* Bracketed.EmbedInside */) ? outerType :\n                                !(flags & 4 /* Bracketed.OppositeInside */) ? 0 :\n                                    (flags & 1 /* Bracketed.OppositeBefore */) ? oppositeType : outerType;\n                            if (type)\n                                types[i] = types[BracketStack[sJ]] = type;\n                            sI = sJ;\n                            break;\n                        }\n                    }\n                }\n                else if (BracketStack.length == 189 /* Bracketed.MaxDepth */) {\n                    break;\n                }\n                else {\n                    BracketStack[sI++] = i;\n                    BracketStack[sI++] = ch;\n                    BracketStack[sI++] = context;\n                }\n            }\n            else if ((type = types[i]) == 2 /* T.R */ || type == 1 /* T.L */) {\n                let embed = type == outerType;\n                context = embed ? 0 : 1 /* Bracketed.OppositeBefore */;\n                for (let sJ = sI - 3; sJ >= 0; sJ -= 3) {\n                    let cur = BracketStack[sJ + 2];\n                    if (cur & 2 /* Bracketed.EmbedInside */)\n                        break;\n                    if (embed) {\n                        BracketStack[sJ + 2] |= 2 /* Bracketed.EmbedInside */;\n                    }\n                    else {\n                        if (cur & 4 /* Bracketed.OppositeInside */)\n                            break;\n                        BracketStack[sJ + 2] |= 4 /* Bracketed.OppositeInside */;\n                    }\n                }\n            }\n        }\n    }\n}\nfunction processNeutrals(rFrom, rTo, isolates, outerType) {\n    for (let iI = 0, prev = outerType; iI <= isolates.length; iI++) {\n        let from = iI ? isolates[iI - 1].to : rFrom, to = iI < isolates.length ? isolates[iI].from : rTo;\n        // N1. A sequence of neutrals takes the direction of the\n        // surrounding strong text if the text on both sides has the same\n        // direction. European and Arabic numbers act as if they were R in\n        // terms of their influence on neutrals. Start-of-level-run (sor)\n        // and end-of-level-run (eor) are used at level run boundaries.\n        // N2. Any remaining neutrals take the embedding direction.\n        // (Left after this: L, R, EN+AN)\n        for (let i = from; i < to;) {\n            let type = types[i];\n            if (type == 256 /* T.NI */) {\n                let end = i + 1;\n                for (;;) {\n                    if (end == to) {\n                        if (iI == isolates.length)\n                            break;\n                        end = isolates[iI++].to;\n                        to = iI < isolates.length ? isolates[iI].from : rTo;\n                    }\n                    else if (types[end] == 256 /* T.NI */) {\n                        end++;\n                    }\n                    else {\n                        break;\n                    }\n                }\n                let beforeL = prev == 1 /* T.L */;\n                let afterL = (end < rTo ? types[end] : outerType) == 1 /* T.L */;\n                let replace = beforeL == afterL ? (beforeL ? 1 /* T.L */ : 2 /* T.R */) : outerType;\n                for (let j = end, jI = iI, fromJ = jI ? isolates[jI - 1].to : rFrom; j > i;) {\n                    if (j == fromJ) {\n                        j = isolates[--jI].from;\n                        fromJ = jI ? isolates[jI - 1].to : rFrom;\n                    }\n                    types[--j] = replace;\n                }\n                i = end;\n            }\n            else {\n                prev = type;\n                i++;\n            }\n        }\n    }\n}\n// Find the contiguous ranges of character types in a given range, and\n// emit spans for them. Flip the order of the spans as appropriate\n// based on the level, and call through to compute the spans for\n// isolates at the proper point.\nfunction emitSpans(line, from, to, level, baseLevel, isolates, order) {\n    let ourType = level % 2 ? 2 /* T.R */ : 1 /* T.L */;\n    if ((level % 2) == (baseLevel % 2)) { // Same dir as base direction, don't flip\n        for (let iCh = from, iI = 0; iCh < to;) {\n            // Scan a section of characters in direction ourType, unless\n            // there's another type of char right after iCh, in which case\n            // we scan a section of other characters (which, if ourType ==\n            // T.L, may contain both T.R and T.AN chars).\n            let sameDir = true, isNum = false;\n            if (iI == isolates.length || iCh < isolates[iI].from) {\n                let next = types[iCh];\n                if (next != ourType) {\n                    sameDir = false;\n                    isNum = next == 16 /* T.AN */;\n                }\n            }\n            // Holds an array of isolates to pass to a recursive call if we\n            // must recurse (to distinguish T.AN inside an RTL section in\n            // LTR text), null if we can emit directly\n            let recurse = !sameDir && ourType == 1 /* T.L */ ? [] : null;\n            let localLevel = sameDir ? level : level + 1;\n            let iScan = iCh;\n            run: for (;;) {\n                if (iI < isolates.length && iScan == isolates[iI].from) {\n                    if (isNum)\n                        break run;\n                    let iso = isolates[iI];\n                    // Scan ahead to verify that there is another char in this dir after the isolate(s)\n                    if (!sameDir)\n                        for (let upto = iso.to, jI = iI + 1;;) {\n                            if (upto == to)\n                                break run;\n                            if (jI < isolates.length && isolates[jI].from == upto)\n                                upto = isolates[jI++].to;\n                            else if (types[upto] == ourType)\n                                break run;\n                            else\n                                break;\n                        }\n                    iI++;\n                    if (recurse) {\n                        recurse.push(iso);\n                    }\n                    else {\n                        if (iso.from > iCh)\n                            order.push(new BidiSpan(iCh, iso.from, localLevel));\n                        let dirSwap = (iso.direction == LTR) != !(localLevel % 2);\n                        computeSectionOrder(line, dirSwap ? level + 1 : level, baseLevel, iso.inner, iso.from, iso.to, order);\n                        iCh = iso.to;\n                    }\n                    iScan = iso.to;\n                }\n                else if (iScan == to || (sameDir ? types[iScan] != ourType : types[iScan] == ourType)) {\n                    break;\n                }\n                else {\n                    iScan++;\n                }\n            }\n            if (recurse)\n                emitSpans(line, iCh, iScan, level + 1, baseLevel, recurse, order);\n            else if (iCh < iScan)\n                order.push(new BidiSpan(iCh, iScan, localLevel));\n            iCh = iScan;\n        }\n    }\n    else {\n        // Iterate in reverse to flip the span order. Same code again, but\n        // going from the back of the section to the front\n        for (let iCh = to, iI = isolates.length; iCh > from;) {\n            let sameDir = true, isNum = false;\n            if (!iI || iCh > isolates[iI - 1].to) {\n                let next = types[iCh - 1];\n                if (next != ourType) {\n                    sameDir = false;\n                    isNum = next == 16 /* T.AN */;\n                }\n            }\n            let recurse = !sameDir && ourType == 1 /* T.L */ ? [] : null;\n            let localLevel = sameDir ? level : level + 1;\n            let iScan = iCh;\n            run: for (;;) {\n                if (iI && iScan == isolates[iI - 1].to) {\n                    if (isNum)\n                        break run;\n                    let iso = isolates[--iI];\n                    // Scan ahead to verify that there is another char in this dir after the isolate(s)\n                    if (!sameDir)\n                        for (let upto = iso.from, jI = iI;;) {\n                            if (upto == from)\n                                break run;\n                            if (jI && isolates[jI - 1].to == upto)\n                                upto = isolates[--jI].from;\n                            else if (types[upto - 1] == ourType)\n                                break run;\n                            else\n                                break;\n                        }\n                    if (recurse) {\n                        recurse.push(iso);\n                    }\n                    else {\n                        if (iso.to < iCh)\n                            order.push(new BidiSpan(iso.to, iCh, localLevel));\n                        let dirSwap = (iso.direction == LTR) != !(localLevel % 2);\n                        computeSectionOrder(line, dirSwap ? level + 1 : level, baseLevel, iso.inner, iso.from, iso.to, order);\n                        iCh = iso.from;\n                    }\n                    iScan = iso.from;\n                }\n                else if (iScan == from || (sameDir ? types[iScan - 1] != ourType : types[iScan - 1] == ourType)) {\n                    break;\n                }\n                else {\n                    iScan--;\n                }\n            }\n            if (recurse)\n                emitSpans(line, iScan, iCh, level + 1, baseLevel, recurse, order);\n            else if (iScan < iCh)\n                order.push(new BidiSpan(iScan, iCh, localLevel));\n            iCh = iScan;\n        }\n    }\n}\nfunction computeSectionOrder(line, level, baseLevel, isolates, from, to, order) {\n    let outerType = (level % 2 ? 2 /* T.R */ : 1 /* T.L */);\n    computeCharTypes(line, from, to, isolates, outerType);\n    processBracketPairs(line, from, to, isolates, outerType);\n    processNeutrals(from, to, isolates, outerType);\n    emitSpans(line, from, to, level, baseLevel, isolates, order);\n}\nfunction computeOrder(line, direction, isolates) {\n    if (!line)\n        return [new BidiSpan(0, 0, direction == RTL ? 1 : 0)];\n    if (direction == LTR && !isolates.length && !BidiRE.test(line))\n        return trivialOrder(line.length);\n    if (isolates.length)\n        while (line.length > types.length)\n            types[types.length] = 256 /* T.NI */; // Make sure types array has no gaps\n    let order = [], level = direction == LTR ? 0 : 1;\n    computeSectionOrder(line, level, level, isolates, 0, line.length, order);\n    return order;\n}\nfunction trivialOrder(length) {\n    return [new BidiSpan(0, length, 0)];\n}\nlet movedOver = \"\";\n// This implementation moves strictly visually, without concern for a\n// traversal visiting every logical position in the string. It will\n// still do so for simple input, but situations like multiple isolates\n// with the same level next to each other, or text going against the\n// main dir at the end of the line, will make some positions\n// unreachable with this motion. Each visible cursor position will\n// correspond to the lower-level bidi span that touches it.\n//\n// The alternative would be to solve an order globally for a given\n// line, making sure that it includes every position, but that would\n// require associating non-canonical (higher bidi span level)\n// positions with a given visual position, which is likely to confuse\n// people. (And would generally be a lot more complicated.)\nfunction moveVisually(line, order, dir, start, forward) {\n    var _a;\n    let startIndex = start.head - line.from;\n    let spanI = BidiSpan.find(order, startIndex, (_a = start.bidiLevel) !== null && _a !== void 0 ? _a : -1, start.assoc);\n    let span = order[spanI], spanEnd = span.side(forward, dir);\n    // End of span\n    if (startIndex == spanEnd) {\n        let nextI = spanI += forward ? 1 : -1;\n        if (nextI < 0 || nextI >= order.length)\n            return null;\n        span = order[spanI = nextI];\n        startIndex = span.side(!forward, dir);\n        spanEnd = span.side(forward, dir);\n    }\n    let nextIndex = findClusterBreak(line.text, startIndex, span.forward(forward, dir));\n    if (nextIndex < span.from || nextIndex > span.to)\n        nextIndex = spanEnd;\n    movedOver = line.text.slice(Math.min(startIndex, nextIndex), Math.max(startIndex, nextIndex));\n    let nextSpan = spanI == (forward ? order.length - 1 : 0) ? null : order[spanI + (forward ? 1 : -1)];\n    if (nextSpan && nextIndex == spanEnd && nextSpan.level + (forward ? 0 : 1) < span.level)\n        return EditorSelection.cursor(nextSpan.side(!forward, dir) + line.from, nextSpan.forward(forward, dir) ? 1 : -1, nextSpan.level);\n    return EditorSelection.cursor(nextIndex + line.from, span.forward(forward, dir) ? -1 : 1, span.level);\n}\nfunction autoDirection(text, from, to) {\n    for (let i = from; i < to; i++) {\n        let type = charType(text.charCodeAt(i));\n        if (type == 1 /* T.L */)\n            return LTR;\n        if (type == 2 /* T.R */ || type == 4 /* T.AL */)\n            return RTL;\n    }\n    return LTR;\n}\n\nconst clickAddsSelectionRange = /*@__PURE__*/Facet.define();\nconst dragMovesSelection$1 = /*@__PURE__*/Facet.define();\nconst mouseSelectionStyle = /*@__PURE__*/Facet.define();\nconst exceptionSink = /*@__PURE__*/Facet.define();\nconst updateListener = /*@__PURE__*/Facet.define();\nconst inputHandler = /*@__PURE__*/Facet.define();\nconst focusChangeEffect = /*@__PURE__*/Facet.define();\nconst clipboardInputFilter = /*@__PURE__*/Facet.define();\nconst clipboardOutputFilter = /*@__PURE__*/Facet.define();\nconst perLineTextDirection = /*@__PURE__*/Facet.define({\n    combine: values => values.some(x => x)\n});\nconst nativeSelectionHidden = /*@__PURE__*/Facet.define({\n    combine: values => values.some(x => x)\n});\nconst scrollHandler = /*@__PURE__*/Facet.define();\nclass ScrollTarget {\n    constructor(range, y = \"nearest\", x = \"nearest\", yMargin = 5, xMargin = 5, \n    // This data structure is abused to also store precise scroll\n    // snapshots, instead of a `scrollIntoView` request. When this\n    // flag is `true`, `range` points at a position in the reference\n    // line, `yMargin` holds the difference between the top of that\n    // line and the top of the editor, and `xMargin` holds the\n    // editor's `scrollLeft`.\n    isSnapshot = false) {\n        this.range = range;\n        this.y = y;\n        this.x = x;\n        this.yMargin = yMargin;\n        this.xMargin = xMargin;\n        this.isSnapshot = isSnapshot;\n    }\n    map(changes) {\n        return changes.empty ? this :\n            new ScrollTarget(this.range.map(changes), this.y, this.x, this.yMargin, this.xMargin, this.isSnapshot);\n    }\n    clip(state) {\n        return this.range.to <= state.doc.length ? this :\n            new ScrollTarget(EditorSelection.cursor(state.doc.length), this.y, this.x, this.yMargin, this.xMargin, this.isSnapshot);\n    }\n}\nconst scrollIntoView = /*@__PURE__*/StateEffect.define({ map: (t, ch) => t.map(ch) });\nconst setEditContextFormatting = /*@__PURE__*/StateEffect.define();\n/**\nLog or report an unhandled exception in client code. Should\nprobably only be used by extension code that allows client code to\nprovide functions, and calls those functions in a context where an\nexception can't be propagated to calling code in a reasonable way\n(for example when in an event handler).\n\nEither calls a handler registered with\n[`EditorView.exceptionSink`](https://codemirror.net/6/docs/ref/#view.EditorView^exceptionSink),\n`window.onerror`, if defined, or `console.error` (in which case\nit'll pass `context`, when given, as first argument).\n*/\nfunction logException(state, exception, context) {\n    let handler = state.facet(exceptionSink);\n    if (handler.length)\n        handler[0](exception);\n    else if (window.onerror)\n        window.onerror(String(exception), context, undefined, undefined, exception);\n    else if (context)\n        console.error(context + \":\", exception);\n    else\n        console.error(exception);\n}\nconst editable = /*@__PURE__*/Facet.define({ combine: values => values.length ? values[0] : true });\nlet nextPluginID = 0;\nconst viewPlugin = /*@__PURE__*/Facet.define();\n/**\nView plugins associate stateful values with a view. They can\ninfluence the way the content is drawn, and are notified of things\nthat happen in the view.\n*/\nclass ViewPlugin {\n    constructor(\n    /**\n    @internal\n    */\n    id, \n    /**\n    @internal\n    */\n    create, \n    /**\n    @internal\n    */\n    domEventHandlers, \n    /**\n    @internal\n    */\n    domEventObservers, buildExtensions) {\n        this.id = id;\n        this.create = create;\n        this.domEventHandlers = domEventHandlers;\n        this.domEventObservers = domEventObservers;\n        this.extension = buildExtensions(this);\n    }\n    /**\n    Define a plugin from a constructor function that creates the\n    plugin's value, given an editor view.\n    */\n    static define(create, spec) {\n        const { eventHandlers, eventObservers, provide, decorations: deco } = spec || {};\n        return new ViewPlugin(nextPluginID++, create, eventHandlers, eventObservers, plugin => {\n            let ext = [viewPlugin.of(plugin)];\n            if (deco)\n                ext.push(decorations.of(view => {\n                    let pluginInst = view.plugin(plugin);\n                    return pluginInst ? deco(pluginInst) : Decoration.none;\n                }));\n            if (provide)\n                ext.push(provide(plugin));\n            return ext;\n        });\n    }\n    /**\n    Create a plugin for a class whose constructor takes a single\n    editor view as argument.\n    */\n    static fromClass(cls, spec) {\n        return ViewPlugin.define(view => new cls(view), spec);\n    }\n}\nclass PluginInstance {\n    constructor(spec) {\n        this.spec = spec;\n        // When starting an update, all plugins have this field set to the\n        // update object, indicating they need to be updated. When finished\n        // updating, it is set to `false`. Retrieving a plugin that needs to\n        // be updated with `view.plugin` forces an eager update.\n        this.mustUpdate = null;\n        // This is null when the plugin is initially created, but\n        // initialized on the first update.\n        this.value = null;\n    }\n    update(view) {\n        if (!this.value) {\n            if (this.spec) {\n                try {\n                    this.value = this.spec.create(view);\n                }\n                catch (e) {\n                    logException(view.state, e, \"CodeMirror plugin crashed\");\n                    this.deactivate();\n                }\n            }\n        }\n        else if (this.mustUpdate) {\n            let update = this.mustUpdate;\n            this.mustUpdate = null;\n            if (this.value.update) {\n                try {\n                    this.value.update(update);\n                }\n                catch (e) {\n                    logException(update.state, e, \"CodeMirror plugin crashed\");\n                    if (this.value.destroy)\n                        try {\n                            this.value.destroy();\n                        }\n                        catch (_) { }\n                    this.deactivate();\n                }\n            }\n        }\n        return this;\n    }\n    destroy(view) {\n        var _a;\n        if ((_a = this.value) === null || _a === void 0 ? void 0 : _a.destroy) {\n            try {\n                this.value.destroy();\n            }\n            catch (e) {\n                logException(view.state, e, \"CodeMirror plugin crashed\");\n            }\n        }\n    }\n    deactivate() {\n        this.spec = this.value = null;\n    }\n}\nconst editorAttributes = /*@__PURE__*/Facet.define();\nconst contentAttributes = /*@__PURE__*/Facet.define();\n// Provide decorations\nconst decorations = /*@__PURE__*/Facet.define();\nconst outerDecorations = /*@__PURE__*/Facet.define();\nconst atomicRanges = /*@__PURE__*/Facet.define();\nconst bidiIsolatedRanges = /*@__PURE__*/Facet.define();\nfunction getIsolatedRanges(view, line) {\n    let isolates = view.state.facet(bidiIsolatedRanges);\n    if (!isolates.length)\n        return isolates;\n    let sets = isolates.map(i => i instanceof Function ? i(view) : i);\n    let result = [];\n    RangeSet.spans(sets, line.from, line.to, {\n        point() { },\n        span(fromDoc, toDoc, active, open) {\n            let from = fromDoc - line.from, to = toDoc - line.from;\n            let level = result;\n            for (let i = active.length - 1; i >= 0; i--, open--) {\n                let direction = active[i].spec.bidiIsolate, update;\n                if (direction == null)\n                    direction = autoDirection(line.text, from, to);\n                if (open > 0 && level.length &&\n                    (update = level[level.length - 1]).to == from && update.direction == direction) {\n                    update.to = to;\n                    level = update.inner;\n                }\n                else {\n                    let add = { from, to, direction, inner: [] };\n                    level.push(add);\n                    level = add.inner;\n                }\n            }\n        }\n    });\n    return result;\n}\nconst scrollMargins = /*@__PURE__*/Facet.define();\nfunction getScrollMargins(view) {\n    let left = 0, right = 0, top = 0, bottom = 0;\n    for (let source of view.state.facet(scrollMargins)) {\n        let m = source(view);\n        if (m) {\n            if (m.left != null)\n                left = Math.max(left, m.left);\n            if (m.right != null)\n                right = Math.max(right, m.right);\n            if (m.top != null)\n                top = Math.max(top, m.top);\n            if (m.bottom != null)\n                bottom = Math.max(bottom, m.bottom);\n        }\n    }\n    return { left, right, top, bottom };\n}\nconst styleModule = /*@__PURE__*/Facet.define();\nclass ChangedRange {\n    constructor(fromA, toA, fromB, toB) {\n        this.fromA = fromA;\n        this.toA = toA;\n        this.fromB = fromB;\n        this.toB = toB;\n    }\n    join(other) {\n        return new ChangedRange(Math.min(this.fromA, other.fromA), Math.max(this.toA, other.toA), Math.min(this.fromB, other.fromB), Math.max(this.toB, other.toB));\n    }\n    addToSet(set) {\n        let i = set.length, me = this;\n        for (; i > 0; i--) {\n            let range = set[i - 1];\n            if (range.fromA > me.toA)\n                continue;\n            if (range.toA < me.fromA)\n                break;\n            me = me.join(range);\n            set.splice(i - 1, 1);\n        }\n        set.splice(i, 0, me);\n        return set;\n    }\n    static extendWithRanges(diff, ranges) {\n        if (ranges.length == 0)\n            return diff;\n        let result = [];\n        for (let dI = 0, rI = 0, posA = 0, posB = 0;; dI++) {\n            let next = dI == diff.length ? null : diff[dI], off = posA - posB;\n            let end = next ? next.fromB : 1e9;\n            while (rI < ranges.length && ranges[rI] < end) {\n                let from = ranges[rI], to = ranges[rI + 1];\n                let fromB = Math.max(posB, from), toB = Math.min(end, to);\n                if (fromB <= toB)\n                    new ChangedRange(fromB + off, toB + off, fromB, toB).addToSet(result);\n                if (to > end)\n                    break;\n                else\n                    rI += 2;\n            }\n            if (!next)\n                return result;\n            new ChangedRange(next.fromA, next.toA, next.fromB, next.toB).addToSet(result);\n            posA = next.toA;\n            posB = next.toB;\n        }\n    }\n}\n/**\nView [plugins](https://codemirror.net/6/docs/ref/#view.ViewPlugin) are given instances of this\nclass, which describe what happened, whenever the view is updated.\n*/\nclass ViewUpdate {\n    constructor(\n    /**\n    The editor view that the update is associated with.\n    */\n    view, \n    /**\n    The new editor state.\n    */\n    state, \n    /**\n    The transactions involved in the update. May be empty.\n    */\n    transactions) {\n        this.view = view;\n        this.state = state;\n        this.transactions = transactions;\n        /**\n        @internal\n        */\n        this.flags = 0;\n        this.startState = view.state;\n        this.changes = ChangeSet.empty(this.startState.doc.length);\n        for (let tr of transactions)\n            this.changes = this.changes.compose(tr.changes);\n        let changedRanges = [];\n        this.changes.iterChangedRanges((fromA, toA, fromB, toB) => changedRanges.push(new ChangedRange(fromA, toA, fromB, toB)));\n        this.changedRanges = changedRanges;\n    }\n    /**\n    @internal\n    */\n    static create(view, state, transactions) {\n        return new ViewUpdate(view, state, transactions);\n    }\n    /**\n    Tells you whether the [viewport](https://codemirror.net/6/docs/ref/#view.EditorView.viewport) or\n    [visible ranges](https://codemirror.net/6/docs/ref/#view.EditorView.visibleRanges) changed in this\n    update.\n    */\n    get viewportChanged() {\n        return (this.flags & 4 /* UpdateFlag.Viewport */) > 0;\n    }\n    /**\n    Indicates whether the height of a block element in the editor\n    changed in this update.\n    */\n    get heightChanged() {\n        return (this.flags & 2 /* UpdateFlag.Height */) > 0;\n    }\n    /**\n    Returns true when the document was modified or the size of the\n    editor, or elements within the editor, changed.\n    */\n    get geometryChanged() {\n        return this.docChanged || (this.flags & (8 /* UpdateFlag.Geometry */ | 2 /* UpdateFlag.Height */)) > 0;\n    }\n    /**\n    True when this update indicates a focus change.\n    */\n    get focusChanged() {\n        return (this.flags & 1 /* UpdateFlag.Focus */) > 0;\n    }\n    /**\n    Whether the document changed in this update.\n    */\n    get docChanged() {\n        return !this.changes.empty;\n    }\n    /**\n    Whether the selection was explicitly set in this update.\n    */\n    get selectionSet() {\n        return this.transactions.some(tr => tr.selection);\n    }\n    /**\n    @internal\n    */\n    get empty() { return this.flags == 0 && this.transactions.length == 0; }\n}\n\nclass DocView extends ContentView {\n    get length() { return this.view.state.doc.length; }\n    constructor(view) {\n        super();\n        this.view = view;\n        this.decorations = [];\n        this.dynamicDecorationMap = [false];\n        this.domChanged = null;\n        this.hasComposition = null;\n        this.markedForComposition = new Set;\n        this.editContextFormatting = Decoration.none;\n        this.lastCompositionAfterCursor = false;\n        // Track a minimum width for the editor. When measuring sizes in\n        // measureVisibleLineHeights, this is updated to point at the width\n        // of a given element and its extent in the document. When a change\n        // happens in that range, these are reset. That way, once we've seen\n        // a line/element of a given length, we keep the editor wide enough\n        // to fit at least that element, until it is changed, at which point\n        // we forget it again.\n        this.minWidth = 0;\n        this.minWidthFrom = 0;\n        this.minWidthTo = 0;\n        // Track whether the DOM selection was set in a lossy way, so that\n        // we don't mess it up when reading it back it\n        this.impreciseAnchor = null;\n        this.impreciseHead = null;\n        this.forceSelection = false;\n        // Used by the resize observer to ignore resizes that we caused\n        // ourselves\n        this.lastUpdate = Date.now();\n        this.setDOM(view.contentDOM);\n        this.children = [new LineView];\n        this.children[0].setParent(this);\n        this.updateDeco();\n        this.updateInner([new ChangedRange(0, 0, 0, view.state.doc.length)], 0, null);\n    }\n    // Update the document view to a given state.\n    update(update) {\n        var _a;\n        let changedRanges = update.changedRanges;\n        if (this.minWidth > 0 && changedRanges.length) {\n            if (!changedRanges.every(({ fromA, toA }) => toA < this.minWidthFrom || fromA > this.minWidthTo)) {\n                this.minWidth = this.minWidthFrom = this.minWidthTo = 0;\n            }\n            else {\n                this.minWidthFrom = update.changes.mapPos(this.minWidthFrom, 1);\n                this.minWidthTo = update.changes.mapPos(this.minWidthTo, 1);\n            }\n        }\n        this.updateEditContextFormatting(update);\n        let readCompositionAt = -1;\n        if (this.view.inputState.composing >= 0 && !this.view.observer.editContext) {\n            if ((_a = this.domChanged) === null || _a === void 0 ? void 0 : _a.newSel)\n                readCompositionAt = this.domChanged.newSel.head;\n            else if (!touchesComposition(update.changes, this.hasComposition) && !update.selectionSet)\n                readCompositionAt = update.state.selection.main.head;\n        }\n        let composition = readCompositionAt > -1 ? findCompositionRange(this.view, update.changes, readCompositionAt) : null;\n        this.domChanged = null;\n        if (this.hasComposition) {\n            this.markedForComposition.clear();\n            let { from, to } = this.hasComposition;\n            changedRanges = new ChangedRange(from, to, update.changes.mapPos(from, -1), update.changes.mapPos(to, 1))\n                .addToSet(changedRanges.slice());\n        }\n        this.hasComposition = composition ? { from: composition.range.fromB, to: composition.range.toB } : null;\n        // When the DOM nodes around the selection are moved to another\n        // parent, Chrome sometimes reports a different selection through\n        // getSelection than the one that it actually shows to the user.\n        // This forces a selection update when lines are joined to work\n        // around that. Issue #54\n        if ((browser.ie || browser.chrome) && !composition && update &&\n            update.state.doc.lines != update.startState.doc.lines)\n            this.forceSelection = true;\n        let prevDeco = this.decorations, deco = this.updateDeco();\n        let decoDiff = findChangedDeco(prevDeco, deco, update.changes);\n        changedRanges = ChangedRange.extendWithRanges(changedRanges, decoDiff);\n        if (!(this.flags & 7 /* ViewFlag.Dirty */) && changedRanges.length == 0) {\n            return false;\n        }\n        else {\n            this.updateInner(changedRanges, update.startState.doc.length, composition);\n            if (update.transactions.length)\n                this.lastUpdate = Date.now();\n            return true;\n        }\n    }\n    // Used by update and the constructor do perform the actual DOM\n    // update\n    updateInner(changes, oldLength, composition) {\n        this.view.viewState.mustMeasureContent = true;\n        this.updateChildren(changes, oldLength, composition);\n        let { observer } = this.view;\n        observer.ignore(() => {\n            // Lock the height during redrawing, since Chrome sometimes\n            // messes with the scroll position during DOM mutation (though\n            // no relayout is triggered and I cannot imagine how it can\n            // recompute the scroll position without a layout)\n            this.dom.style.height = this.view.viewState.contentHeight / this.view.scaleY + \"px\";\n            this.dom.style.flexBasis = this.minWidth ? this.minWidth + \"px\" : \"\";\n            // Chrome will sometimes, when DOM mutations occur directly\n            // around the selection, get confused and report a different\n            // selection from the one it displays (issue #218). This tries\n            // to detect that situation.\n            let track = browser.chrome || browser.ios ? { node: observer.selectionRange.focusNode, written: false } : undefined;\n            this.sync(this.view, track);\n            this.flags &= ~7 /* ViewFlag.Dirty */;\n            if (track && (track.written || observer.selectionRange.focusNode != track.node))\n                this.forceSelection = true;\n            this.dom.style.height = \"\";\n        });\n        this.markedForComposition.forEach(cView => cView.flags &= ~8 /* ViewFlag.Composition */);\n        let gaps = [];\n        if (this.view.viewport.from || this.view.viewport.to < this.view.state.doc.length)\n            for (let child of this.children)\n                if (child instanceof BlockWidgetView && child.widget instanceof BlockGapWidget)\n                    gaps.push(child.dom);\n        observer.updateGaps(gaps);\n    }\n    updateChildren(changes, oldLength, composition) {\n        let ranges = composition ? composition.range.addToSet(changes.slice()) : changes;\n        let cursor = this.childCursor(oldLength);\n        for (let i = ranges.length - 1;; i--) {\n            let next = i >= 0 ? ranges[i] : null;\n            if (!next)\n                break;\n            let { fromA, toA, fromB, toB } = next, content, breakAtStart, openStart, openEnd;\n            if (composition && composition.range.fromB < toB && composition.range.toB > fromB) {\n                let before = ContentBuilder.build(this.view.state.doc, fromB, composition.range.fromB, this.decorations, this.dynamicDecorationMap);\n                let after = ContentBuilder.build(this.view.state.doc, composition.range.toB, toB, this.decorations, this.dynamicDecorationMap);\n                breakAtStart = before.breakAtStart;\n                openStart = before.openStart;\n                openEnd = after.openEnd;\n                let compLine = this.compositionView(composition);\n                if (after.breakAtStart) {\n                    compLine.breakAfter = 1;\n                }\n                else if (after.content.length &&\n                    compLine.merge(compLine.length, compLine.length, after.content[0], false, after.openStart, 0)) {\n                    compLine.breakAfter = after.content[0].breakAfter;\n                    after.content.shift();\n                }\n                if (before.content.length &&\n                    compLine.merge(0, 0, before.content[before.content.length - 1], true, 0, before.openEnd)) {\n                    before.content.pop();\n                }\n                content = before.content.concat(compLine).concat(after.content);\n            }\n            else {\n                ({ content, breakAtStart, openStart, openEnd } =\n                    ContentBuilder.build(this.view.state.doc, fromB, toB, this.decorations, this.dynamicDecorationMap));\n            }\n            let { i: toI, off: toOff } = cursor.findPos(toA, 1);\n            let { i: fromI, off: fromOff } = cursor.findPos(fromA, -1);\n            replaceRange(this, fromI, fromOff, toI, toOff, content, breakAtStart, openStart, openEnd);\n        }\n        if (composition)\n            this.fixCompositionDOM(composition);\n    }\n    updateEditContextFormatting(update) {\n        this.editContextFormatting = this.editContextFormatting.map(update.changes);\n        for (let tr of update.transactions)\n            for (let effect of tr.effects)\n                if (effect.is(setEditContextFormatting)) {\n                    this.editContextFormatting = effect.value;\n                }\n    }\n    compositionView(composition) {\n        let cur = new TextView(composition.text.nodeValue);\n        cur.flags |= 8 /* ViewFlag.Composition */;\n        for (let { deco } of composition.marks)\n            cur = new MarkView(deco, [cur], cur.length);\n        let line = new LineView;\n        line.append(cur, 0);\n        return line;\n    }\n    fixCompositionDOM(composition) {\n        let fix = (dom, cView) => {\n            cView.flags |= 8 /* ViewFlag.Composition */ | (cView.children.some(c => c.flags & 7 /* ViewFlag.Dirty */) ? 1 /* ViewFlag.ChildDirty */ : 0);\n            this.markedForComposition.add(cView);\n            let prev = ContentView.get(dom);\n            if (prev && prev != cView)\n                prev.dom = null;\n            cView.setDOM(dom);\n        };\n        let pos = this.childPos(composition.range.fromB, 1);\n        let cView = this.children[pos.i];\n        fix(composition.line, cView);\n        for (let i = composition.marks.length - 1; i >= -1; i--) {\n            pos = cView.childPos(pos.off, 1);\n            cView = cView.children[pos.i];\n            fix(i >= 0 ? composition.marks[i].node : composition.text, cView);\n        }\n    }\n    // Sync the DOM selection to this.state.selection\n    updateSelection(mustRead = false, fromPointer = false) {\n        if (mustRead || !this.view.observer.selectionRange.focusNode)\n            this.view.observer.readSelectionRange();\n        let activeElt = this.view.root.activeElement, focused = activeElt == this.dom;\n        let selectionNotFocus = !focused &&\n            hasSelection(this.dom, this.view.observer.selectionRange) && !(activeElt && this.dom.contains(activeElt));\n        if (!(focused || fromPointer || selectionNotFocus))\n            return;\n        let force = this.forceSelection;\n        this.forceSelection = false;\n        let main = this.view.state.selection.main;\n        let anchor = this.moveToLine(this.domAtPos(main.anchor));\n        let head = main.empty ? anchor : this.moveToLine(this.domAtPos(main.head));\n        // Always reset on Firefox when next to an uneditable node to\n        // avoid invisible cursor bugs (#111)\n        if (browser.gecko && main.empty && !this.hasComposition && betweenUneditable(anchor)) {\n            let dummy = document.createTextNode(\"\");\n            this.view.observer.ignore(() => anchor.node.insertBefore(dummy, anchor.node.childNodes[anchor.offset] || null));\n            anchor = head = new DOMPos(dummy, 0);\n            force = true;\n        }\n        let domSel = this.view.observer.selectionRange;\n        // If the selection is already here, or in an equivalent position, don't touch it\n        if (force || !domSel.focusNode || (!isEquivalentPosition(anchor.node, anchor.offset, domSel.anchorNode, domSel.anchorOffset) ||\n            !isEquivalentPosition(head.node, head.offset, domSel.focusNode, domSel.focusOffset)) && !this.suppressWidgetCursorChange(domSel, main)) {\n            this.view.observer.ignore(() => {\n                // Chrome Android will hide the virtual keyboard when tapping\n                // inside an uneditable node, and not bring it back when we\n                // move the cursor to its proper position. This tries to\n                // restore the keyboard by cycling focus.\n                if (browser.android && browser.chrome && this.dom.contains(domSel.focusNode) &&\n                    inUneditable(domSel.focusNode, this.dom)) {\n                    this.dom.blur();\n                    this.dom.focus({ preventScroll: true });\n                }\n                let rawSel = getSelection(this.view.root);\n                if (!rawSel) ;\n                else if (main.empty) {\n                    // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=1612076\n                    if (browser.gecko) {\n                        let nextTo = nextToUneditable(anchor.node, anchor.offset);\n                        if (nextTo && nextTo != (1 /* NextTo.Before */ | 2 /* NextTo.After */)) {\n                            let text = (nextTo == 1 /* NextTo.Before */ ? textNodeBefore : textNodeAfter)(anchor.node, anchor.offset);\n                            if (text)\n                                anchor = new DOMPos(text.node, text.offset);\n                        }\n                    }\n                    rawSel.collapse(anchor.node, anchor.offset);\n                    if (main.bidiLevel != null && rawSel.caretBidiLevel !== undefined)\n                        rawSel.caretBidiLevel = main.bidiLevel;\n                }\n                else if (rawSel.extend) {\n                    // Selection.extend can be used to create an 'inverted' selection\n                    // (one where the focus is before the anchor), but not all\n                    // browsers support it yet.\n                    rawSel.collapse(anchor.node, anchor.offset);\n                    // Safari will ignore the call above when the editor is\n                    // hidden, and then raise an error on the call to extend\n                    // (#940).\n                    try {\n                        rawSel.extend(head.node, head.offset);\n                    }\n                    catch (_) { }\n                }\n                else {\n                    // Primitive (IE) way\n                    let range = document.createRange();\n                    if (main.anchor > main.head)\n                        [anchor, head] = [head, anchor];\n                    range.setEnd(head.node, head.offset);\n                    range.setStart(anchor.node, anchor.offset);\n                    rawSel.removeAllRanges();\n                    rawSel.addRange(range);\n                }\n                if (selectionNotFocus && this.view.root.activeElement == this.dom) {\n                    this.dom.blur();\n                    if (activeElt)\n                        activeElt.focus();\n                }\n            });\n            this.view.observer.setSelectionRange(anchor, head);\n        }\n        this.impreciseAnchor = anchor.precise ? null : new DOMPos(domSel.anchorNode, domSel.anchorOffset);\n        this.impreciseHead = head.precise ? null : new DOMPos(domSel.focusNode, domSel.focusOffset);\n    }\n    // If a zero-length widget is inserted next to the cursor during\n    // composition, avoid moving it across it and disrupting the\n    // composition.\n    suppressWidgetCursorChange(sel, cursor) {\n        return this.hasComposition && cursor.empty &&\n            isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset) &&\n            this.posFromDOM(sel.focusNode, sel.focusOffset) == cursor.head;\n    }\n    enforceCursorAssoc() {\n        if (this.hasComposition)\n            return;\n        let { view } = this, cursor = view.state.selection.main;\n        let sel = getSelection(view.root);\n        let { anchorNode, anchorOffset } = view.observer.selectionRange;\n        if (!sel || !cursor.empty || !cursor.assoc || !sel.modify)\n            return;\n        let line = LineView.find(this, cursor.head);\n        if (!line)\n            return;\n        let lineStart = line.posAtStart;\n        if (cursor.head == lineStart || cursor.head == lineStart + line.length)\n            return;\n        let before = this.coordsAt(cursor.head, -1), after = this.coordsAt(cursor.head, 1);\n        if (!before || !after || before.bottom > after.top)\n            return;\n        let dom = this.domAtPos(cursor.head + cursor.assoc);\n        sel.collapse(dom.node, dom.offset);\n        sel.modify(\"move\", cursor.assoc < 0 ? \"forward\" : \"backward\", \"lineboundary\");\n        // This can go wrong in corner cases like single-character lines,\n        // so check and reset if necessary.\n        view.observer.readSelectionRange();\n        let newRange = view.observer.selectionRange;\n        if (view.docView.posFromDOM(newRange.anchorNode, newRange.anchorOffset) != cursor.from)\n            sel.collapse(anchorNode, anchorOffset);\n    }\n    // If a position is in/near a block widget, move it to a nearby text\n    // line, since we don't want the cursor inside a block widget.\n    moveToLine(pos) {\n        // Block widgets will return positions before/after them, which\n        // are thus directly in the document DOM element.\n        let dom = this.dom, newPos;\n        if (pos.node != dom)\n            return pos;\n        for (let i = pos.offset; !newPos && i < dom.childNodes.length; i++) {\n            let view = ContentView.get(dom.childNodes[i]);\n            if (view instanceof LineView)\n                newPos = view.domAtPos(0);\n        }\n        for (let i = pos.offset - 1; !newPos && i >= 0; i--) {\n            let view = ContentView.get(dom.childNodes[i]);\n            if (view instanceof LineView)\n                newPos = view.domAtPos(view.length);\n        }\n        return newPos ? new DOMPos(newPos.node, newPos.offset, true) : pos;\n    }\n    nearest(dom) {\n        for (let cur = dom; cur;) {\n            let domView = ContentView.get(cur);\n            if (domView && domView.rootView == this)\n                return domView;\n            cur = cur.parentNode;\n        }\n        return null;\n    }\n    posFromDOM(node, offset) {\n        let view = this.nearest(node);\n        if (!view)\n            throw new RangeError(\"Trying to find position for a DOM position outside of the document\");\n        return view.localPosFromDOM(node, offset) + view.posAtStart;\n    }\n    domAtPos(pos) {\n        let { i, off } = this.childCursor().findPos(pos, -1);\n        for (; i < this.children.length - 1;) {\n            let child = this.children[i];\n            if (off < child.length || child instanceof LineView)\n                break;\n            i++;\n            off = 0;\n        }\n        return this.children[i].domAtPos(off);\n    }\n    coordsAt(pos, side) {\n        let best = null, bestPos = 0;\n        for (let off = this.length, i = this.children.length - 1; i >= 0; i--) {\n            let child = this.children[i], end = off - child.breakAfter, start = end - child.length;\n            if (end < pos)\n                break;\n            if (start <= pos && (start < pos || child.covers(-1)) && (end > pos || child.covers(1)) &&\n                (!best || child instanceof LineView && !(best instanceof LineView && side >= 0))) {\n                best = child;\n                bestPos = start;\n            }\n            else if (best && start == pos && end == pos && child instanceof BlockWidgetView && Math.abs(side) < 2) {\n                if (child.deco.startSide < 0)\n                    break;\n                else if (i)\n                    best = null;\n            }\n            off = start;\n        }\n        return best ? best.coordsAt(pos - bestPos, side) : null;\n    }\n    coordsForChar(pos) {\n        let { i, off } = this.childPos(pos, 1), child = this.children[i];\n        if (!(child instanceof LineView))\n            return null;\n        while (child.children.length) {\n            let { i, off: childOff } = child.childPos(off, 1);\n            for (;; i++) {\n                if (i == child.children.length)\n                    return null;\n                if ((child = child.children[i]).length)\n                    break;\n            }\n            off = childOff;\n        }\n        if (!(child instanceof TextView))\n            return null;\n        let end = findClusterBreak(child.text, off);\n        if (end == off)\n            return null;\n        let rects = textRange(child.dom, off, end).getClientRects();\n        for (let i = 0; i < rects.length; i++) {\n            let rect = rects[i];\n            if (i == rects.length - 1 || rect.top < rect.bottom && rect.left < rect.right)\n                return rect;\n        }\n        return null;\n    }\n    measureVisibleLineHeights(viewport) {\n        let result = [], { from, to } = viewport;\n        let contentWidth = this.view.contentDOM.clientWidth;\n        let isWider = contentWidth > Math.max(this.view.scrollDOM.clientWidth, this.minWidth) + 1;\n        let widest = -1, ltr = this.view.textDirection == Direction.LTR;\n        for (let pos = 0, i = 0; i < this.children.length; i++) {\n            let child = this.children[i], end = pos + child.length;\n            if (end > to)\n                break;\n            if (pos >= from) {\n                let childRect = child.dom.getBoundingClientRect();\n                result.push(childRect.height);\n                if (isWider) {\n                    let last = child.dom.lastChild;\n                    let rects = last ? clientRectsFor(last) : [];\n                    if (rects.length) {\n                        let rect = rects[rects.length - 1];\n                        let width = ltr ? rect.right - childRect.left : childRect.right - rect.left;\n                        if (width > widest) {\n                            widest = width;\n                            this.minWidth = contentWidth;\n                            this.minWidthFrom = pos;\n                            this.minWidthTo = end;\n                        }\n                    }\n                }\n            }\n            pos = end + child.breakAfter;\n        }\n        return result;\n    }\n    textDirectionAt(pos) {\n        let { i } = this.childPos(pos, 1);\n        return getComputedStyle(this.children[i].dom).direction == \"rtl\" ? Direction.RTL : Direction.LTR;\n    }\n    measureTextSize() {\n        for (let child of this.children) {\n            if (child instanceof LineView) {\n                let measure = child.measureTextSize();\n                if (measure)\n                    return measure;\n            }\n        }\n        // If no workable line exists, force a layout of a measurable element\n        let dummy = document.createElement(\"div\"), lineHeight, charWidth, textHeight;\n        dummy.className = \"cm-line\";\n        dummy.style.width = \"99999px\";\n        dummy.style.position = \"absolute\";\n        dummy.textContent = \"abc def ghi jkl mno pqr stu\";\n        this.view.observer.ignore(() => {\n            this.dom.appendChild(dummy);\n            let rect = clientRectsFor(dummy.firstChild)[0];\n            lineHeight = dummy.getBoundingClientRect().height;\n            charWidth = rect ? rect.width / 27 : 7;\n            textHeight = rect ? rect.height : lineHeight;\n            dummy.remove();\n        });\n        return { lineHeight, charWidth, textHeight };\n    }\n    childCursor(pos = this.length) {\n        // Move back to start of last element when possible, so that\n        // `ChildCursor.findPos` doesn't have to deal with the edge case\n        // of being after the last element.\n        let i = this.children.length;\n        if (i)\n            pos -= this.children[--i].length;\n        return new ChildCursor(this.children, pos, i);\n    }\n    computeBlockGapDeco() {\n        let deco = [], vs = this.view.viewState;\n        for (let pos = 0, i = 0;; i++) {\n            let next = i == vs.viewports.length ? null : vs.viewports[i];\n            let end = next ? next.from - 1 : this.length;\n            if (end > pos) {\n                let height = (vs.lineBlockAt(end).bottom - vs.lineBlockAt(pos).top) / this.view.scaleY;\n                deco.push(Decoration.replace({\n                    widget: new BlockGapWidget(height),\n                    block: true,\n                    inclusive: true,\n                    isBlockGap: true,\n                }).range(pos, end));\n            }\n            if (!next)\n                break;\n            pos = next.to + 1;\n        }\n        return Decoration.set(deco);\n    }\n    updateDeco() {\n        let i = 1;\n        let allDeco = this.view.state.facet(decorations).map(d => {\n            let dynamic = this.dynamicDecorationMap[i++] = typeof d == \"function\";\n            return dynamic ? d(this.view) : d;\n        });\n        let dynamicOuter = false, outerDeco = this.view.state.facet(outerDecorations).map((d, i) => {\n            let dynamic = typeof d == \"function\";\n            if (dynamic)\n                dynamicOuter = true;\n            return dynamic ? d(this.view) : d;\n        });\n        if (outerDeco.length) {\n            this.dynamicDecorationMap[i++] = dynamicOuter;\n            allDeco.push(RangeSet.join(outerDeco));\n        }\n        this.decorations = [\n            this.editContextFormatting,\n            ...allDeco,\n            this.computeBlockGapDeco(),\n            this.view.viewState.lineGapDeco\n        ];\n        while (i < this.decorations.length)\n            this.dynamicDecorationMap[i++] = false;\n        return this.decorations;\n    }\n    scrollIntoView(target) {\n        if (target.isSnapshot) {\n            let ref = this.view.viewState.lineBlockAt(target.range.head);\n            this.view.scrollDOM.scrollTop = ref.top - target.yMargin;\n            this.view.scrollDOM.scrollLeft = target.xMargin;\n            return;\n        }\n        for (let handler of this.view.state.facet(scrollHandler)) {\n            try {\n                if (handler(this.view, target.range, target))\n                    return true;\n            }\n            catch (e) {\n                logException(this.view.state, e, \"scroll handler\");\n            }\n        }\n        let { range } = target;\n        let rect = this.coordsAt(range.head, range.empty ? range.assoc : range.head > range.anchor ? -1 : 1), other;\n        if (!rect)\n            return;\n        if (!range.empty && (other = this.coordsAt(range.anchor, range.anchor > range.head ? -1 : 1)))\n            rect = { left: Math.min(rect.left, other.left), top: Math.min(rect.top, other.top),\n                right: Math.max(rect.right, other.right), bottom: Math.max(rect.bottom, other.bottom) };\n        let margins = getScrollMargins(this.view);\n        let targetRect = {\n            left: rect.left - margins.left, top: rect.top - margins.top,\n            right: rect.right + margins.right, bottom: rect.bottom + margins.bottom\n        };\n        let { offsetWidth, offsetHeight } = this.view.scrollDOM;\n        scrollRectIntoView(this.view.scrollDOM, targetRect, range.head < range.anchor ? -1 : 1, target.x, target.y, Math.max(Math.min(target.xMargin, offsetWidth), -offsetWidth), Math.max(Math.min(target.yMargin, offsetHeight), -offsetHeight), this.view.textDirection == Direction.LTR);\n    }\n}\nfunction betweenUneditable(pos) {\n    return pos.node.nodeType == 1 && pos.node.firstChild &&\n        (pos.offset == 0 || pos.node.childNodes[pos.offset - 1].contentEditable == \"false\") &&\n        (pos.offset == pos.node.childNodes.length || pos.node.childNodes[pos.offset].contentEditable == \"false\");\n}\nfunction findCompositionNode(view, headPos) {\n    let sel = view.observer.selectionRange;\n    if (!sel.focusNode)\n        return null;\n    let textBefore = textNodeBefore(sel.focusNode, sel.focusOffset);\n    let textAfter = textNodeAfter(sel.focusNode, sel.focusOffset);\n    let textNode = textBefore || textAfter;\n    if (textAfter && textBefore && textAfter.node != textBefore.node) {\n        let descAfter = ContentView.get(textAfter.node);\n        if (!descAfter || descAfter instanceof TextView && descAfter.text != textAfter.node.nodeValue) {\n            textNode = textAfter;\n        }\n        else if (view.docView.lastCompositionAfterCursor) {\n            let descBefore = ContentView.get(textBefore.node);\n            if (!(!descBefore || descBefore instanceof TextView && descBefore.text != textBefore.node.nodeValue))\n                textNode = textAfter;\n        }\n    }\n    view.docView.lastCompositionAfterCursor = textNode != textBefore;\n    if (!textNode)\n        return null;\n    let from = headPos - textNode.offset;\n    return { from, to: from + textNode.node.nodeValue.length, node: textNode.node };\n}\nfunction findCompositionRange(view, changes, headPos) {\n    let found = findCompositionNode(view, headPos);\n    if (!found)\n        return null;\n    let { node: textNode, from, to } = found, text = textNode.nodeValue;\n    // Don't try to preserve multi-line compositions\n    if (/[\\n\\r]/.test(text))\n        return null;\n    if (view.state.doc.sliceString(found.from, found.to) != text)\n        return null;\n    let inv = changes.invertedDesc;\n    let range = new ChangedRange(inv.mapPos(from), inv.mapPos(to), from, to);\n    let marks = [];\n    for (let parent = textNode.parentNode;; parent = parent.parentNode) {\n        let parentView = ContentView.get(parent);\n        if (parentView instanceof MarkView)\n            marks.push({ node: parent, deco: parentView.mark });\n        else if (parentView instanceof LineView || parent.nodeName == \"DIV\" && parent.parentNode == view.contentDOM)\n            return { range, text: textNode, marks, line: parent };\n        else if (parent != view.contentDOM)\n            marks.push({ node: parent, deco: new MarkDecoration({\n                    inclusive: true,\n                    attributes: getAttrs(parent),\n                    tagName: parent.tagName.toLowerCase()\n                }) });\n        else\n            return null;\n    }\n}\nfunction nextToUneditable(node, offset) {\n    if (node.nodeType != 1)\n        return 0;\n    return (offset && node.childNodes[offset - 1].contentEditable == \"false\" ? 1 /* NextTo.Before */ : 0) |\n        (offset < node.childNodes.length && node.childNodes[offset].contentEditable == \"false\" ? 2 /* NextTo.After */ : 0);\n}\nlet DecorationComparator$1 = class DecorationComparator {\n    constructor() {\n        this.changes = [];\n    }\n    compareRange(from, to) { addRange(from, to, this.changes); }\n    comparePoint(from, to) { addRange(from, to, this.changes); }\n};\nfunction findChangedDeco(a, b, diff) {\n    let comp = new DecorationComparator$1;\n    RangeSet.compare(a, b, diff, comp);\n    return comp.changes;\n}\nfunction inUneditable(node, inside) {\n    for (let cur = node; cur && cur != inside; cur = cur.assignedSlot || cur.parentNode) {\n        if (cur.nodeType == 1 && cur.contentEditable == 'false') {\n            return true;\n        }\n    }\n    return false;\n}\nfunction touchesComposition(changes, composition) {\n    let touched = false;\n    if (composition)\n        changes.iterChangedRanges((from, to) => {\n            if (from < composition.to && to > composition.from)\n                touched = true;\n        });\n    return touched;\n}\n\nfunction groupAt(state, pos, bias = 1) {\n    let categorize = state.charCategorizer(pos);\n    let line = state.doc.lineAt(pos), linePos = pos - line.from;\n    if (line.length == 0)\n        return EditorSelection.cursor(pos);\n    if (linePos == 0)\n        bias = 1;\n    else if (linePos == line.length)\n        bias = -1;\n    let from = linePos, to = linePos;\n    if (bias < 0)\n        from = findClusterBreak(line.text, linePos, false);\n    else\n        to = findClusterBreak(line.text, linePos);\n    let cat = categorize(line.text.slice(from, to));\n    while (from > 0) {\n        let prev = findClusterBreak(line.text, from, false);\n        if (categorize(line.text.slice(prev, from)) != cat)\n            break;\n        from = prev;\n    }\n    while (to < line.length) {\n        let next = findClusterBreak(line.text, to);\n        if (categorize(line.text.slice(to, next)) != cat)\n            break;\n        to = next;\n    }\n    return EditorSelection.range(from + line.from, to + line.from);\n}\n// Search the DOM for the {node, offset} position closest to the given\n// coordinates. Very inefficient and crude, but can usually be avoided\n// by calling caret(Position|Range)FromPoint instead.\nfunction getdx(x, rect) {\n    return rect.left > x ? rect.left - x : Math.max(0, x - rect.right);\n}\nfunction getdy(y, rect) {\n    return rect.top > y ? rect.top - y : Math.max(0, y - rect.bottom);\n}\nfunction yOverlap(a, b) {\n    return a.top < b.bottom - 1 && a.bottom > b.top + 1;\n}\nfunction upTop(rect, top) {\n    return top < rect.top ? { top, left: rect.left, right: rect.right, bottom: rect.bottom } : rect;\n}\nfunction upBot(rect, bottom) {\n    return bottom > rect.bottom ? { top: rect.top, left: rect.left, right: rect.right, bottom } : rect;\n}\nfunction domPosAtCoords(parent, x, y) {\n    let closest, closestRect, closestX, closestY, closestOverlap = false;\n    let above, below, aboveRect, belowRect;\n    for (let child = parent.firstChild; child; child = child.nextSibling) {\n        let rects = clientRectsFor(child);\n        for (let i = 0; i < rects.length; i++) {\n            let rect = rects[i];\n            if (closestRect && yOverlap(closestRect, rect))\n                rect = upTop(upBot(rect, closestRect.bottom), closestRect.top);\n            let dx = getdx(x, rect), dy = getdy(y, rect);\n            if (dx == 0 && dy == 0)\n                return child.nodeType == 3 ? domPosInText(child, x, y) : domPosAtCoords(child, x, y);\n            if (!closest || closestY > dy || closestY == dy && closestX > dx) {\n                closest = child;\n                closestRect = rect;\n                closestX = dx;\n                closestY = dy;\n                let side = dy ? (y < rect.top ? -1 : 1) : dx ? (x < rect.left ? -1 : 1) : 0;\n                closestOverlap = !side || (side > 0 ? i < rects.length - 1 : i > 0);\n            }\n            if (dx == 0) {\n                if (y > rect.bottom && (!aboveRect || aboveRect.bottom < rect.bottom)) {\n                    above = child;\n                    aboveRect = rect;\n                }\n                else if (y < rect.top && (!belowRect || belowRect.top > rect.top)) {\n                    below = child;\n                    belowRect = rect;\n                }\n            }\n            else if (aboveRect && yOverlap(aboveRect, rect)) {\n                aboveRect = upBot(aboveRect, rect.bottom);\n            }\n            else if (belowRect && yOverlap(belowRect, rect)) {\n                belowRect = upTop(belowRect, rect.top);\n            }\n        }\n    }\n    if (aboveRect && aboveRect.bottom >= y) {\n        closest = above;\n        closestRect = aboveRect;\n    }\n    else if (belowRect && belowRect.top <= y) {\n        closest = below;\n        closestRect = belowRect;\n    }\n    if (!closest)\n        return { node: parent, offset: 0 };\n    let clipX = Math.max(closestRect.left, Math.min(closestRect.right, x));\n    if (closest.nodeType == 3)\n        return domPosInText(closest, clipX, y);\n    if (closestOverlap && closest.contentEditable != \"false\")\n        return domPosAtCoords(closest, clipX, y);\n    let offset = Array.prototype.indexOf.call(parent.childNodes, closest) +\n        (x >= (closestRect.left + closestRect.right) / 2 ? 1 : 0);\n    return { node: parent, offset };\n}\nfunction domPosInText(node, x, y) {\n    let len = node.nodeValue.length;\n    let closestOffset = -1, closestDY = 1e9, generalSide = 0;\n    for (let i = 0; i < len; i++) {\n        let rects = textRange(node, i, i + 1).getClientRects();\n        for (let j = 0; j < rects.length; j++) {\n            let rect = rects[j];\n            if (rect.top == rect.bottom)\n                continue;\n            if (!generalSide)\n                generalSide = x - rect.left;\n            let dy = (rect.top > y ? rect.top - y : y - rect.bottom) - 1;\n            if (rect.left - 1 <= x && rect.right + 1 >= x && dy < closestDY) {\n                let right = x >= (rect.left + rect.right) / 2, after = right;\n                if (browser.chrome || browser.gecko) {\n                    // Check for RTL on browsers that support getting client\n                    // rects for empty ranges.\n                    let rectBefore = textRange(node, i).getBoundingClientRect();\n                    if (rectBefore.left == rect.right)\n                        after = !right;\n                }\n                if (dy <= 0)\n                    return { node, offset: i + (after ? 1 : 0) };\n                closestOffset = i + (after ? 1 : 0);\n                closestDY = dy;\n            }\n        }\n    }\n    return { node, offset: closestOffset > -1 ? closestOffset : generalSide > 0 ? node.nodeValue.length : 0 };\n}\nfunction posAtCoords(view, coords, precise, bias = -1) {\n    var _a, _b;\n    let content = view.contentDOM.getBoundingClientRect(), docTop = content.top + view.viewState.paddingTop;\n    let block, { docHeight } = view.viewState;\n    let { x, y } = coords, yOffset = y - docTop;\n    if (yOffset < 0)\n        return 0;\n    if (yOffset > docHeight)\n        return view.state.doc.length;\n    // Scan for a text block near the queried y position\n    for (let halfLine = view.viewState.heightOracle.textHeight / 2, bounced = false;;) {\n        block = view.elementAtHeight(yOffset);\n        if (block.type == BlockType.Text)\n            break;\n        for (;;) {\n            // Move the y position out of this block\n            yOffset = bias > 0 ? block.bottom + halfLine : block.top - halfLine;\n            if (yOffset >= 0 && yOffset <= docHeight)\n                break;\n            // If the document consists entirely of replaced widgets, we\n            // won't find a text block, so return 0\n            if (bounced)\n                return precise ? null : 0;\n            bounced = true;\n            bias = -bias;\n        }\n    }\n    y = docTop + yOffset;\n    let lineStart = block.from;\n    // If this is outside of the rendered viewport, we can't determine a position\n    if (lineStart < view.viewport.from)\n        return view.viewport.from == 0 ? 0 : precise ? null : posAtCoordsImprecise(view, content, block, x, y);\n    if (lineStart > view.viewport.to)\n        return view.viewport.to == view.state.doc.length ? view.state.doc.length :\n            precise ? null : posAtCoordsImprecise(view, content, block, x, y);\n    // Prefer ShadowRootOrDocument.elementFromPoint if present, fall back to document if not\n    let doc = view.dom.ownerDocument;\n    let root = view.root.elementFromPoint ? view.root : doc;\n    let element = root.elementFromPoint(x, y);\n    if (element && !view.contentDOM.contains(element))\n        element = null;\n    // If the element is unexpected, clip x at the sides of the content area and try again\n    if (!element) {\n        x = Math.max(content.left + 1, Math.min(content.right - 1, x));\n        element = root.elementFromPoint(x, y);\n        if (element && !view.contentDOM.contains(element))\n            element = null;\n    }\n    // There's visible editor content under the point, so we can try\n    // using caret(Position|Range)FromPoint as a shortcut\n    let node, offset = -1;\n    if (element && ((_a = view.docView.nearest(element)) === null || _a === void 0 ? void 0 : _a.isEditable) != false) {\n        if (doc.caretPositionFromPoint) {\n            let pos = doc.caretPositionFromPoint(x, y);\n            if (pos)\n                ({ offsetNode: node, offset } = pos);\n        }\n        else if (doc.caretRangeFromPoint) {\n            let range = doc.caretRangeFromPoint(x, y);\n            if (range) {\n                ({ startContainer: node, startOffset: offset } = range);\n                if (!view.contentDOM.contains(node) ||\n                    browser.safari && isSuspiciousSafariCaretResult(node, offset, x) ||\n                    browser.chrome && isSuspiciousChromeCaretResult(node, offset, x))\n                    node = undefined;\n            }\n        }\n    }\n    // No luck, do our own (potentially expensive) search\n    if (!node || !view.docView.dom.contains(node)) {\n        let line = LineView.find(view.docView, lineStart);\n        if (!line)\n            return yOffset > block.top + block.height / 2 ? block.to : block.from;\n        ({ node, offset } = domPosAtCoords(line.dom, x, y));\n    }\n    let nearest = view.docView.nearest(node);\n    if (!nearest)\n        return null;\n    if (nearest.isWidget && ((_b = nearest.dom) === null || _b === void 0 ? void 0 : _b.nodeType) == 1) {\n        let rect = nearest.dom.getBoundingClientRect();\n        return coords.y < rect.top || coords.y <= rect.bottom && coords.x <= (rect.left + rect.right) / 2\n            ? nearest.posAtStart : nearest.posAtEnd;\n    }\n    else {\n        return nearest.localPosFromDOM(node, offset) + nearest.posAtStart;\n    }\n}\nfunction posAtCoordsImprecise(view, contentRect, block, x, y) {\n    let into = Math.round((x - contentRect.left) * view.defaultCharacterWidth);\n    if (view.lineWrapping && block.height > view.defaultLineHeight * 1.5) {\n        let textHeight = view.viewState.heightOracle.textHeight;\n        let line = Math.floor((y - block.top - (view.defaultLineHeight - textHeight) * 0.5) / textHeight);\n        into += line * view.viewState.heightOracle.lineLength;\n    }\n    let content = view.state.sliceDoc(block.from, block.to);\n    return block.from + findColumn(content, into, view.state.tabSize);\n}\n// In case of a high line height, Safari's caretRangeFromPoint treats\n// the space between lines as belonging to the last character of the\n// line before. This is used to detect such a result so that it can be\n// ignored (issue #401).\nfunction isSuspiciousSafariCaretResult(node, offset, x) {\n    let len;\n    if (node.nodeType != 3 || offset != (len = node.nodeValue.length))\n        return false;\n    for (let next = node.nextSibling; next; next = next.nextSibling)\n        if (next.nodeType != 1 || next.nodeName != \"BR\")\n            return false;\n    return textRange(node, len - 1, len).getBoundingClientRect().left > x;\n}\n// Chrome will move positions between lines to the start of the next line\nfunction isSuspiciousChromeCaretResult(node, offset, x) {\n    if (offset != 0)\n        return false;\n    for (let cur = node;;) {\n        let parent = cur.parentNode;\n        if (!parent || parent.nodeType != 1 || parent.firstChild != cur)\n            return false;\n        if (parent.classList.contains(\"cm-line\"))\n            break;\n        cur = parent;\n    }\n    let rect = node.nodeType == 1 ? node.getBoundingClientRect()\n        : textRange(node, 0, Math.max(node.nodeValue.length, 1)).getBoundingClientRect();\n    return x - rect.left > 5;\n}\nfunction blockAt(view, pos) {\n    let line = view.lineBlockAt(pos);\n    if (Array.isArray(line.type))\n        for (let l of line.type) {\n            if (l.to > pos || l.to == pos && (l.to == line.to || l.type == BlockType.Text))\n                return l;\n        }\n    return line;\n}\nfunction moveToLineBoundary(view, start, forward, includeWrap) {\n    let line = blockAt(view, start.head);\n    let coords = !includeWrap || line.type != BlockType.Text || !(view.lineWrapping || line.widgetLineBreaks) ? null\n        : view.coordsAtPos(start.assoc < 0 && start.head > line.from ? start.head - 1 : start.head);\n    if (coords) {\n        let editorRect = view.dom.getBoundingClientRect();\n        let direction = view.textDirectionAt(line.from);\n        let pos = view.posAtCoords({ x: forward == (direction == Direction.LTR) ? editorRect.right - 1 : editorRect.left + 1,\n            y: (coords.top + coords.bottom) / 2 });\n        if (pos != null)\n            return EditorSelection.cursor(pos, forward ? -1 : 1);\n    }\n    return EditorSelection.cursor(forward ? line.to : line.from, forward ? -1 : 1);\n}\nfunction moveByChar(view, start, forward, by) {\n    let line = view.state.doc.lineAt(start.head), spans = view.bidiSpans(line);\n    let direction = view.textDirectionAt(line.from);\n    for (let cur = start, check = null;;) {\n        let next = moveVisually(line, spans, direction, cur, forward), char = movedOver;\n        if (!next) {\n            if (line.number == (forward ? view.state.doc.lines : 1))\n                return cur;\n            char = \"\\n\";\n            line = view.state.doc.line(line.number + (forward ? 1 : -1));\n            spans = view.bidiSpans(line);\n            next = view.visualLineSide(line, !forward);\n        }\n        if (!check) {\n            if (!by)\n                return next;\n            check = by(char);\n        }\n        else if (!check(char)) {\n            return cur;\n        }\n        cur = next;\n    }\n}\nfunction byGroup(view, pos, start) {\n    let categorize = view.state.charCategorizer(pos);\n    let cat = categorize(start);\n    return (next) => {\n        let nextCat = categorize(next);\n        if (cat == CharCategory.Space)\n            cat = nextCat;\n        return cat == nextCat;\n    };\n}\nfunction moveVertically(view, start, forward, distance) {\n    let startPos = start.head, dir = forward ? 1 : -1;\n    if (startPos == (forward ? view.state.doc.length : 0))\n        return EditorSelection.cursor(startPos, start.assoc);\n    let goal = start.goalColumn, startY;\n    let rect = view.contentDOM.getBoundingClientRect();\n    let startCoords = view.coordsAtPos(startPos, start.assoc || -1), docTop = view.documentTop;\n    if (startCoords) {\n        if (goal == null)\n            goal = startCoords.left - rect.left;\n        startY = dir < 0 ? startCoords.top : startCoords.bottom;\n    }\n    else {\n        let line = view.viewState.lineBlockAt(startPos);\n        if (goal == null)\n            goal = Math.min(rect.right - rect.left, view.defaultCharacterWidth * (startPos - line.from));\n        startY = (dir < 0 ? line.top : line.bottom) + docTop;\n    }\n    let resolvedGoal = rect.left + goal;\n    let dist = distance !== null && distance !== void 0 ? distance : (view.viewState.heightOracle.textHeight >> 1);\n    for (let extra = 0;; extra += 10) {\n        let curY = startY + (dist + extra) * dir;\n        let pos = posAtCoords(view, { x: resolvedGoal, y: curY }, false, dir);\n        if (curY < rect.top || curY > rect.bottom || (dir < 0 ? pos < startPos : pos > startPos)) {\n            let charRect = view.docView.coordsForChar(pos);\n            let assoc = !charRect || curY < charRect.top ? -1 : 1;\n            return EditorSelection.cursor(pos, assoc, undefined, goal);\n        }\n    }\n}\nfunction skipAtomicRanges(atoms, pos, bias) {\n    for (;;) {\n        let moved = 0;\n        for (let set of atoms) {\n            set.between(pos - 1, pos + 1, (from, to, value) => {\n                if (pos > from && pos < to) {\n                    let side = moved || bias || (pos - from < to - pos ? -1 : 1);\n                    pos = side < 0 ? from : to;\n                    moved = side;\n                }\n            });\n        }\n        if (!moved)\n            return pos;\n    }\n}\nfunction skipAtoms(view, oldPos, pos) {\n    let newPos = skipAtomicRanges(view.state.facet(atomicRanges).map(f => f(view)), pos.from, oldPos.head > pos.from ? -1 : 1);\n    return newPos == pos.from ? pos : EditorSelection.cursor(newPos, newPos < pos.from ? 1 : -1);\n}\n\nconst LineBreakPlaceholder = \"\\uffff\";\nclass DOMReader {\n    constructor(points, state) {\n        this.points = points;\n        this.text = \"\";\n        this.lineSeparator = state.facet(EditorState.lineSeparator);\n    }\n    append(text) {\n        this.text += text;\n    }\n    lineBreak() {\n        this.text += LineBreakPlaceholder;\n    }\n    readRange(start, end) {\n        if (!start)\n            return this;\n        let parent = start.parentNode;\n        for (let cur = start;;) {\n            this.findPointBefore(parent, cur);\n            let oldLen = this.text.length;\n            this.readNode(cur);\n            let next = cur.nextSibling;\n            if (next == end)\n                break;\n            let view = ContentView.get(cur), nextView = ContentView.get(next);\n            if (view && nextView ? view.breakAfter :\n                (view ? view.breakAfter : isBlockElement(cur)) ||\n                    (isBlockElement(next) && (cur.nodeName != \"BR\" || cur.cmIgnore) && this.text.length > oldLen))\n                this.lineBreak();\n            cur = next;\n        }\n        this.findPointBefore(parent, end);\n        return this;\n    }\n    readTextNode(node) {\n        let text = node.nodeValue;\n        for (let point of this.points)\n            if (point.node == node)\n                point.pos = this.text.length + Math.min(point.offset, text.length);\n        for (let off = 0, re = this.lineSeparator ? null : /\\r\\n?|\\n/g;;) {\n            let nextBreak = -1, breakSize = 1, m;\n            if (this.lineSeparator) {\n                nextBreak = text.indexOf(this.lineSeparator, off);\n                breakSize = this.lineSeparator.length;\n            }\n            else if (m = re.exec(text)) {\n                nextBreak = m.index;\n                breakSize = m[0].length;\n            }\n            this.append(text.slice(off, nextBreak < 0 ? text.length : nextBreak));\n            if (nextBreak < 0)\n                break;\n            this.lineBreak();\n            if (breakSize > 1)\n                for (let point of this.points)\n                    if (point.node == node && point.pos > this.text.length)\n                        point.pos -= breakSize - 1;\n            off = nextBreak + breakSize;\n        }\n    }\n    readNode(node) {\n        if (node.cmIgnore)\n            return;\n        let view = ContentView.get(node);\n        let fromView = view && view.overrideDOMText;\n        if (fromView != null) {\n            this.findPointInside(node, fromView.length);\n            for (let i = fromView.iter(); !i.next().done;) {\n                if (i.lineBreak)\n                    this.lineBreak();\n                else\n                    this.append(i.value);\n            }\n        }\n        else if (node.nodeType == 3) {\n            this.readTextNode(node);\n        }\n        else if (node.nodeName == \"BR\") {\n            if (node.nextSibling)\n                this.lineBreak();\n        }\n        else if (node.nodeType == 1) {\n            this.readRange(node.firstChild, null);\n        }\n    }\n    findPointBefore(node, next) {\n        for (let point of this.points)\n            if (point.node == node && node.childNodes[point.offset] == next)\n                point.pos = this.text.length;\n    }\n    findPointInside(node, length) {\n        for (let point of this.points)\n            if (node.nodeType == 3 ? point.node == node : node.contains(point.node))\n                point.pos = this.text.length + (isAtEnd(node, point.node, point.offset) ? length : 0);\n    }\n}\nfunction isAtEnd(parent, node, offset) {\n    for (;;) {\n        if (!node || offset < maxOffset(node))\n            return false;\n        if (node == parent)\n            return true;\n        offset = domIndex(node) + 1;\n        node = node.parentNode;\n    }\n}\nclass DOMPoint {\n    constructor(node, offset) {\n        this.node = node;\n        this.offset = offset;\n        this.pos = -1;\n    }\n}\n\nclass DOMChange {\n    constructor(view, start, end, typeOver) {\n        this.typeOver = typeOver;\n        this.bounds = null;\n        this.text = \"\";\n        this.domChanged = start > -1;\n        let { impreciseHead: iHead, impreciseAnchor: iAnchor } = view.docView;\n        if (view.state.readOnly && start > -1) {\n            // Ignore changes when the editor is read-only\n            this.newSel = null;\n        }\n        else if (start > -1 && (this.bounds = view.docView.domBoundsAround(start, end, 0))) {\n            let selPoints = iHead || iAnchor ? [] : selectionPoints(view);\n            let reader = new DOMReader(selPoints, view.state);\n            reader.readRange(this.bounds.startDOM, this.bounds.endDOM);\n            this.text = reader.text;\n            this.newSel = selectionFromPoints(selPoints, this.bounds.from);\n        }\n        else {\n            let domSel = view.observer.selectionRange;\n            let head = iHead && iHead.node == domSel.focusNode && iHead.offset == domSel.focusOffset ||\n                !contains(view.contentDOM, domSel.focusNode)\n                ? view.state.selection.main.head\n                : view.docView.posFromDOM(domSel.focusNode, domSel.focusOffset);\n            let anchor = iAnchor && iAnchor.node == domSel.anchorNode && iAnchor.offset == domSel.anchorOffset ||\n                !contains(view.contentDOM, domSel.anchorNode)\n                ? view.state.selection.main.anchor\n                : view.docView.posFromDOM(domSel.anchorNode, domSel.anchorOffset);\n            // iOS will refuse to select the block gaps when doing\n            // select-all.\n            // Chrome will put the selection *inside* them, confusing\n            // posFromDOM\n            let vp = view.viewport;\n            if ((browser.ios || browser.chrome) && view.state.selection.main.empty && head != anchor &&\n                (vp.from > 0 || vp.to < view.state.doc.length)) {\n                let from = Math.min(head, anchor), to = Math.max(head, anchor);\n                let offFrom = vp.from - from, offTo = vp.to - to;\n                if ((offFrom == 0 || offFrom == 1 || from == 0) && (offTo == 0 || offTo == -1 || to == view.state.doc.length)) {\n                    head = 0;\n                    anchor = view.state.doc.length;\n                }\n            }\n            this.newSel = EditorSelection.single(anchor, head);\n        }\n    }\n}\nfunction applyDOMChange(view, domChange) {\n    let change;\n    let { newSel } = domChange, sel = view.state.selection.main;\n    let lastKey = view.inputState.lastKeyTime > Date.now() - 100 ? view.inputState.lastKeyCode : -1;\n    if (domChange.bounds) {\n        let { from, to } = domChange.bounds;\n        let preferredPos = sel.from, preferredSide = null;\n        // Prefer anchoring to end when Backspace is pressed (or, on\n        // Android, when something was deleted)\n        if (lastKey === 8 || browser.android && domChange.text.length < to - from) {\n            preferredPos = sel.to;\n            preferredSide = \"end\";\n        }\n        let diff = findDiff(view.state.doc.sliceString(from, to, LineBreakPlaceholder), domChange.text, preferredPos - from, preferredSide);\n        if (diff) {\n            // Chrome inserts two newlines when pressing shift-enter at the\n            // end of a line. DomChange drops one of those.\n            if (browser.chrome && lastKey == 13 &&\n                diff.toB == diff.from + 2 && domChange.text.slice(diff.from, diff.toB) == LineBreakPlaceholder + LineBreakPlaceholder)\n                diff.toB--;\n            change = { from: from + diff.from, to: from + diff.toA,\n                insert: Text.of(domChange.text.slice(diff.from, diff.toB).split(LineBreakPlaceholder)) };\n        }\n    }\n    else if (newSel && (!view.hasFocus && view.state.facet(editable) || newSel.main.eq(sel))) {\n        newSel = null;\n    }\n    if (!change && !newSel)\n        return false;\n    if (!change && domChange.typeOver && !sel.empty && newSel && newSel.main.empty) {\n        // Heuristic to notice typing over a selected character\n        change = { from: sel.from, to: sel.to, insert: view.state.doc.slice(sel.from, sel.to) };\n    }\n    else if (change && change.from >= sel.from && change.to <= sel.to &&\n        (change.from != sel.from || change.to != sel.to) &&\n        (sel.to - sel.from) - (change.to - change.from) <= 4) {\n        // If the change is inside the selection and covers most of it,\n        // assume it is a selection replace (with identical characters at\n        // the start/end not included in the diff)\n        change = {\n            from: sel.from, to: sel.to,\n            insert: view.state.doc.slice(sel.from, change.from).append(change.insert).append(view.state.doc.slice(change.to, sel.to))\n        };\n    }\n    else if ((browser.mac || browser.android) && change && change.from == change.to && change.from == sel.head - 1 &&\n        /^\\. ?$/.test(change.insert.toString()) && view.contentDOM.getAttribute(\"autocorrect\") == \"off\") {\n        // Detect insert-period-on-double-space Mac and Android behavior,\n        // and transform it into a regular space insert.\n        if (newSel && change.insert.length == 2)\n            newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1);\n        change = { from: sel.from, to: sel.to, insert: Text.of([\" \"]) };\n    }\n    else if (browser.chrome && change && change.from == change.to && change.from == sel.head &&\n        change.insert.toString() == \"\\n \" && view.lineWrapping) {\n        // In Chrome, if you insert a space at the start of a wrapped\n        // line, it will actually insert a newline and a space, causing a\n        // bogus new line to be created in CodeMirror (#968)\n        if (newSel)\n            newSel = EditorSelection.single(newSel.main.anchor - 1, newSel.main.head - 1);\n        change = { from: sel.from, to: sel.to, insert: Text.of([\" \"]) };\n    }\n    if (change) {\n        return applyDOMChangeInner(view, change, newSel, lastKey);\n    }\n    else if (newSel && !newSel.main.eq(sel)) {\n        let scrollIntoView = false, userEvent = \"select\";\n        if (view.inputState.lastSelectionTime > Date.now() - 50) {\n            if (view.inputState.lastSelectionOrigin == \"select\")\n                scrollIntoView = true;\n            userEvent = view.inputState.lastSelectionOrigin;\n        }\n        view.dispatch({ selection: newSel, scrollIntoView, userEvent });\n        return true;\n    }\n    else {\n        return false;\n    }\n}\nfunction applyDOMChangeInner(view, change, newSel, lastKey = -1) {\n    if (browser.ios && view.inputState.flushIOSKey(change))\n        return true;\n    let sel = view.state.selection.main;\n    // Android browsers don't fire reasonable key events for enter,\n    // backspace, or delete. So this detects changes that look like\n    // they're caused by those keys, and reinterprets them as key\n    // events. (Some of these keys are also handled by beforeinput\n    // events and the pendingAndroidKey mechanism, but that's not\n    // reliable in all situations.)\n    if (browser.android &&\n        ((change.to == sel.to &&\n            // GBoard will sometimes remove a space it just inserted\n            // after a completion when you press enter\n            (change.from == sel.from || change.from == sel.from - 1 && view.state.sliceDoc(change.from, sel.from) == \" \") &&\n            change.insert.length == 1 && change.insert.lines == 2 &&\n            dispatchKey(view.contentDOM, \"Enter\", 13)) ||\n            ((change.from == sel.from - 1 && change.to == sel.to && change.insert.length == 0 ||\n                lastKey == 8 && change.insert.length < change.to - change.from && change.to > sel.head) &&\n                dispatchKey(view.contentDOM, \"Backspace\", 8)) ||\n            (change.from == sel.from && change.to == sel.to + 1 && change.insert.length == 0 &&\n                dispatchKey(view.contentDOM, \"Delete\", 46))))\n        return true;\n    let text = change.insert.toString();\n    if (view.inputState.composing >= 0)\n        view.inputState.composing++;\n    let defaultTr;\n    let defaultInsert = () => defaultTr || (defaultTr = applyDefaultInsert(view, change, newSel));\n    if (!view.state.facet(inputHandler).some(h => h(view, change.from, change.to, text, defaultInsert)))\n        view.dispatch(defaultInsert());\n    return true;\n}\nfunction applyDefaultInsert(view, change, newSel) {\n    let tr, startState = view.state, sel = startState.selection.main;\n    if (change.from >= sel.from && change.to <= sel.to && change.to - change.from >= (sel.to - sel.from) / 3 &&\n        (!newSel || newSel.main.empty && newSel.main.from == change.from + change.insert.length) &&\n        view.inputState.composing < 0) {\n        let before = sel.from < change.from ? startState.sliceDoc(sel.from, change.from) : \"\";\n        let after = sel.to > change.to ? startState.sliceDoc(change.to, sel.to) : \"\";\n        tr = startState.replaceSelection(view.state.toText(before + change.insert.sliceString(0, undefined, view.state.lineBreak) + after));\n    }\n    else {\n        let changes = startState.changes(change);\n        let mainSel = newSel && newSel.main.to <= changes.newLength ? newSel.main : undefined;\n        // Try to apply a composition change to all cursors\n        if (startState.selection.ranges.length > 1 && view.inputState.composing >= 0 &&\n            change.to <= sel.to && change.to >= sel.to - 10) {\n            let replaced = view.state.sliceDoc(change.from, change.to);\n            let compositionRange, composition = newSel && findCompositionNode(view, newSel.main.head);\n            if (composition) {\n                let dLen = change.insert.length - (change.to - change.from);\n                compositionRange = { from: composition.from, to: composition.to - dLen };\n            }\n            else {\n                compositionRange = view.state.doc.lineAt(sel.head);\n            }\n            let offset = sel.to - change.to, size = sel.to - sel.from;\n            tr = startState.changeByRange(range => {\n                if (range.from == sel.from && range.to == sel.to)\n                    return { changes, range: mainSel || range.map(changes) };\n                let to = range.to - offset, from = to - replaced.length;\n                if (range.to - range.from != size || view.state.sliceDoc(from, to) != replaced ||\n                    // Unfortunately, there's no way to make multiple\n                    // changes in the same node work without aborting\n                    // composition, so cursors in the composition range are\n                    // ignored.\n                    range.to >= compositionRange.from && range.from <= compositionRange.to)\n                    return { range };\n                let rangeChanges = startState.changes({ from, to, insert: change.insert }), selOff = range.to - sel.to;\n                return {\n                    changes: rangeChanges,\n                    range: !mainSel ? range.map(rangeChanges) :\n                        EditorSelection.range(Math.max(0, mainSel.anchor + selOff), Math.max(0, mainSel.head + selOff))\n                };\n            });\n        }\n        else {\n            tr = {\n                changes,\n                selection: mainSel && startState.selection.replaceRange(mainSel)\n            };\n        }\n    }\n    let userEvent = \"input.type\";\n    if (view.composing ||\n        view.inputState.compositionPendingChange && view.inputState.compositionEndedAt > Date.now() - 50) {\n        view.inputState.compositionPendingChange = false;\n        userEvent += \".compose\";\n        if (view.inputState.compositionFirstChange) {\n            userEvent += \".start\";\n            view.inputState.compositionFirstChange = false;\n        }\n    }\n    return startState.update(tr, { userEvent, scrollIntoView: true });\n}\nfunction findDiff(a, b, preferredPos, preferredSide) {\n    let minLen = Math.min(a.length, b.length);\n    let from = 0;\n    while (from < minLen && a.charCodeAt(from) == b.charCodeAt(from))\n        from++;\n    if (from == minLen && a.length == b.length)\n        return null;\n    let toA = a.length, toB = b.length;\n    while (toA > 0 && toB > 0 && a.charCodeAt(toA - 1) == b.charCodeAt(toB - 1)) {\n        toA--;\n        toB--;\n    }\n    if (preferredSide == \"end\") {\n        let adjust = Math.max(0, from - Math.min(toA, toB));\n        preferredPos -= toA + adjust - from;\n    }\n    if (toA < from && a.length < b.length) {\n        let move = preferredPos <= from && preferredPos >= toA ? from - preferredPos : 0;\n        from -= move;\n        toB = from + (toB - toA);\n        toA = from;\n    }\n    else if (toB < from) {\n        let move = preferredPos <= from && preferredPos >= toB ? from - preferredPos : 0;\n        from -= move;\n        toA = from + (toA - toB);\n        toB = from;\n    }\n    return { from, toA, toB };\n}\nfunction selectionPoints(view) {\n    let result = [];\n    if (view.root.activeElement != view.contentDOM)\n        return result;\n    let { anchorNode, anchorOffset, focusNode, focusOffset } = view.observer.selectionRange;\n    if (anchorNode) {\n        result.push(new DOMPoint(anchorNode, anchorOffset));\n        if (focusNode != anchorNode || focusOffset != anchorOffset)\n            result.push(new DOMPoint(focusNode, focusOffset));\n    }\n    return result;\n}\nfunction selectionFromPoints(points, base) {\n    if (points.length == 0)\n        return null;\n    let anchor = points[0].pos, head = points.length == 2 ? points[1].pos : anchor;\n    return anchor > -1 && head > -1 ? EditorSelection.single(anchor + base, head + base) : null;\n}\n\n// This will also be where dragging info and such goes\nclass InputState {\n    setSelectionOrigin(origin) {\n        this.lastSelectionOrigin = origin;\n        this.lastSelectionTime = Date.now();\n    }\n    constructor(view) {\n        this.view = view;\n        this.lastKeyCode = 0;\n        this.lastKeyTime = 0;\n        this.lastTouchTime = 0;\n        this.lastFocusTime = 0;\n        this.lastScrollTop = 0;\n        this.lastScrollLeft = 0;\n        // On iOS, some keys need to have their default behavior happen\n        // (after which we retroactively handle them and reset the DOM) to\n        // avoid messing up the virtual keyboard state.\n        this.pendingIOSKey = undefined;\n        /**\n        When enabled (>-1), tab presses are not given to key handlers,\n        leaving the browser's default behavior. If >0, the mode expires\n        at that timestamp, and any other keypress clears it.\n        Esc enables temporary tab focus mode for two seconds when not\n        otherwise handled.\n        */\n        this.tabFocusMode = -1;\n        this.lastSelectionOrigin = null;\n        this.lastSelectionTime = 0;\n        this.lastContextMenu = 0;\n        this.scrollHandlers = [];\n        this.handlers = Object.create(null);\n        // -1 means not in a composition. Otherwise, this counts the number\n        // of changes made during the composition. The count is used to\n        // avoid treating the start state of the composition, before any\n        // changes have been made, as part of the composition.\n        this.composing = -1;\n        // Tracks whether the next change should be marked as starting the\n        // composition (null means no composition, true means next is the\n        // first, false means first has already been marked for this\n        // composition)\n        this.compositionFirstChange = null;\n        // End time of the previous composition\n        this.compositionEndedAt = 0;\n        // Used in a kludge to detect when an Enter keypress should be\n        // considered part of the composition on Safari, which fires events\n        // in the wrong order\n        this.compositionPendingKey = false;\n        // Used to categorize changes as part of a composition, even when\n        // the mutation events fire shortly after the compositionend event\n        this.compositionPendingChange = false;\n        this.mouseSelection = null;\n        // When a drag from the editor is active, this points at the range\n        // being dragged.\n        this.draggedContent = null;\n        this.handleEvent = this.handleEvent.bind(this);\n        this.notifiedFocused = view.hasFocus;\n        // On Safari adding an input event handler somehow prevents an\n        // issue where the composition vanishes when you press enter.\n        if (browser.safari)\n            view.contentDOM.addEventListener(\"input\", () => null);\n        if (browser.gecko)\n            firefoxCopyCutHack(view.contentDOM.ownerDocument);\n    }\n    handleEvent(event) {\n        if (!eventBelongsToEditor(this.view, event) || this.ignoreDuringComposition(event))\n            return;\n        if (event.type == \"keydown\" && this.keydown(event))\n            return;\n        this.runHandlers(event.type, event);\n    }\n    runHandlers(type, event) {\n        let handlers = this.handlers[type];\n        if (handlers) {\n            for (let observer of handlers.observers)\n                observer(this.view, event);\n            for (let handler of handlers.handlers) {\n                if (event.defaultPrevented)\n                    break;\n                if (handler(this.view, event)) {\n                    event.preventDefault();\n                    break;\n                }\n            }\n        }\n    }\n    ensureHandlers(plugins) {\n        let handlers = computeHandlers(plugins), prev = this.handlers, dom = this.view.contentDOM;\n        for (let type in handlers)\n            if (type != \"scroll\") {\n                let passive = !handlers[type].handlers.length;\n                let exists = prev[type];\n                if (exists && passive != !exists.handlers.length) {\n                    dom.removeEventListener(type, this.handleEvent);\n                    exists = null;\n                }\n                if (!exists)\n                    dom.addEventListener(type, this.handleEvent, { passive });\n            }\n        for (let type in prev)\n            if (type != \"scroll\" && !handlers[type])\n                dom.removeEventListener(type, this.handleEvent);\n        this.handlers = handlers;\n    }\n    keydown(event) {\n        // Must always run, even if a custom handler handled the event\n        this.lastKeyCode = event.keyCode;\n        this.lastKeyTime = Date.now();\n        if (event.keyCode == 9 && this.tabFocusMode > -1 && (!this.tabFocusMode || Date.now() <= this.tabFocusMode))\n            return true;\n        if (this.tabFocusMode > 0 && event.keyCode != 27 && modifierCodes.indexOf(event.keyCode) < 0)\n            this.tabFocusMode = -1;\n        // Chrome for Android usually doesn't fire proper key events, but\n        // occasionally does, usually surrounded by a bunch of complicated\n        // composition changes. When an enter or backspace key event is\n        // seen, hold off on handling DOM events for a bit, and then\n        // dispatch it.\n        if (browser.android && browser.chrome && !event.synthetic &&\n            (event.keyCode == 13 || event.keyCode == 8)) {\n            this.view.observer.delayAndroidKey(event.key, event.keyCode);\n            return true;\n        }\n        // Preventing the default behavior of Enter on iOS makes the\n        // virtual keyboard get stuck in the wrong (lowercase)\n        // state. So we let it go through, and then, in\n        // applyDOMChange, notify key handlers of it and reset to\n        // the state they produce.\n        let pending;\n        if (browser.ios && !event.synthetic && !event.altKey && !event.metaKey &&\n            ((pending = PendingKeys.find(key => key.keyCode == event.keyCode)) && !event.ctrlKey ||\n                EmacsyPendingKeys.indexOf(event.key) > -1 && event.ctrlKey && !event.shiftKey)) {\n            this.pendingIOSKey = pending || event;\n            setTimeout(() => this.flushIOSKey(), 250);\n            return true;\n        }\n        if (event.keyCode != 229)\n            this.view.observer.forceFlush();\n        return false;\n    }\n    flushIOSKey(change) {\n        let key = this.pendingIOSKey;\n        if (!key)\n            return false;\n        // This looks like an autocorrection before Enter\n        if (key.key == \"Enter\" && change && change.from < change.to && /^\\S+$/.test(change.insert.toString()))\n            return false;\n        this.pendingIOSKey = undefined;\n        return dispatchKey(this.view.contentDOM, key.key, key.keyCode, key instanceof KeyboardEvent ? key : undefined);\n    }\n    ignoreDuringComposition(event) {\n        if (!/^key/.test(event.type))\n            return false;\n        if (this.composing > 0)\n            return true;\n        // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/.\n        // On some input method editors (IMEs), the Enter key is used to\n        // confirm character selection. On Safari, when Enter is pressed,\n        // compositionend and keydown events are sometimes emitted in the\n        // wrong order. The key event should still be ignored, even when\n        // it happens after the compositionend event.\n        if (browser.safari && !browser.ios && this.compositionPendingKey && Date.now() - this.compositionEndedAt < 100) {\n            this.compositionPendingKey = false;\n            return true;\n        }\n        return false;\n    }\n    startMouseSelection(mouseSelection) {\n        if (this.mouseSelection)\n            this.mouseSelection.destroy();\n        this.mouseSelection = mouseSelection;\n    }\n    update(update) {\n        this.view.observer.update(update);\n        if (this.mouseSelection)\n            this.mouseSelection.update(update);\n        if (this.draggedContent && update.docChanged)\n            this.draggedContent = this.draggedContent.map(update.changes);\n        if (update.transactions.length)\n            this.lastKeyCode = this.lastSelectionTime = 0;\n    }\n    destroy() {\n        if (this.mouseSelection)\n            this.mouseSelection.destroy();\n    }\n}\nfunction bindHandler(plugin, handler) {\n    return (view, event) => {\n        try {\n            return handler.call(plugin, event, view);\n        }\n        catch (e) {\n            logException(view.state, e);\n        }\n    };\n}\nfunction computeHandlers(plugins) {\n    let result = Object.create(null);\n    function record(type) {\n        return result[type] || (result[type] = { observers: [], handlers: [] });\n    }\n    for (let plugin of plugins) {\n        let spec = plugin.spec;\n        if (spec && spec.domEventHandlers)\n            for (let type in spec.domEventHandlers) {\n                let f = spec.domEventHandlers[type];\n                if (f)\n                    record(type).handlers.push(bindHandler(plugin.value, f));\n            }\n        if (spec && spec.domEventObservers)\n            for (let type in spec.domEventObservers) {\n                let f = spec.domEventObservers[type];\n                if (f)\n                    record(type).observers.push(bindHandler(plugin.value, f));\n            }\n    }\n    for (let type in handlers)\n        record(type).handlers.push(handlers[type]);\n    for (let type in observers)\n        record(type).observers.push(observers[type]);\n    return result;\n}\nconst PendingKeys = [\n    { key: \"Backspace\", keyCode: 8, inputType: \"deleteContentBackward\" },\n    { key: \"Enter\", keyCode: 13, inputType: \"insertParagraph\" },\n    { key: \"Enter\", keyCode: 13, inputType: \"insertLineBreak\" },\n    { key: \"Delete\", keyCode: 46, inputType: \"deleteContentForward\" }\n];\nconst EmacsyPendingKeys = \"dthko\";\n// Key codes for modifier keys\nconst modifierCodes = [16, 17, 18, 20, 91, 92, 224, 225];\nconst dragScrollMargin = 6;\nfunction dragScrollSpeed(dist) {\n    return Math.max(0, dist) * 0.7 + 8;\n}\nfunction dist(a, b) {\n    return Math.max(Math.abs(a.clientX - b.clientX), Math.abs(a.clientY - b.clientY));\n}\nclass MouseSelection {\n    constructor(view, startEvent, style, mustSelect) {\n        this.view = view;\n        this.startEvent = startEvent;\n        this.style = style;\n        this.mustSelect = mustSelect;\n        this.scrollSpeed = { x: 0, y: 0 };\n        this.scrolling = -1;\n        this.lastEvent = startEvent;\n        this.scrollParents = scrollableParents(view.contentDOM);\n        this.atoms = view.state.facet(atomicRanges).map(f => f(view));\n        let doc = view.contentDOM.ownerDocument;\n        doc.addEventListener(\"mousemove\", this.move = this.move.bind(this));\n        doc.addEventListener(\"mouseup\", this.up = this.up.bind(this));\n        this.extend = startEvent.shiftKey;\n        this.multiple = view.state.facet(EditorState.allowMultipleSelections) && addsSelectionRange(view, startEvent);\n        this.dragging = isInPrimarySelection(view, startEvent) && getClickType(startEvent) == 1 ? null : false;\n    }\n    start(event) {\n        // When clicking outside of the selection, immediately apply the\n        // effect of starting the selection\n        if (this.dragging === false)\n            this.select(event);\n    }\n    move(event) {\n        if (event.buttons == 0)\n            return this.destroy();\n        if (this.dragging || this.dragging == null && dist(this.startEvent, event) < 10)\n            return;\n        this.select(this.lastEvent = event);\n        let sx = 0, sy = 0;\n        let left = 0, top = 0, right = this.view.win.innerWidth, bottom = this.view.win.innerHeight;\n        if (this.scrollParents.x)\n            ({ left, right } = this.scrollParents.x.getBoundingClientRect());\n        if (this.scrollParents.y)\n            ({ top, bottom } = this.scrollParents.y.getBoundingClientRect());\n        let margins = getScrollMargins(this.view);\n        if (event.clientX - margins.left <= left + dragScrollMargin)\n            sx = -dragScrollSpeed(left - event.clientX);\n        else if (event.clientX + margins.right >= right - dragScrollMargin)\n            sx = dragScrollSpeed(event.clientX - right);\n        if (event.clientY - margins.top <= top + dragScrollMargin)\n            sy = -dragScrollSpeed(top - event.clientY);\n        else if (event.clientY + margins.bottom >= bottom - dragScrollMargin)\n            sy = dragScrollSpeed(event.clientY - bottom);\n        this.setScrollSpeed(sx, sy);\n    }\n    up(event) {\n        if (this.dragging == null)\n            this.select(this.lastEvent);\n        if (!this.dragging)\n            event.preventDefault();\n        this.destroy();\n    }\n    destroy() {\n        this.setScrollSpeed(0, 0);\n        let doc = this.view.contentDOM.ownerDocument;\n        doc.removeEventListener(\"mousemove\", this.move);\n        doc.removeEventListener(\"mouseup\", this.up);\n        this.view.inputState.mouseSelection = this.view.inputState.draggedContent = null;\n    }\n    setScrollSpeed(sx, sy) {\n        this.scrollSpeed = { x: sx, y: sy };\n        if (sx || sy) {\n            if (this.scrolling < 0)\n                this.scrolling = setInterval(() => this.scroll(), 50);\n        }\n        else if (this.scrolling > -1) {\n            clearInterval(this.scrolling);\n            this.scrolling = -1;\n        }\n    }\n    scroll() {\n        let { x, y } = this.scrollSpeed;\n        if (x && this.scrollParents.x) {\n            this.scrollParents.x.scrollLeft += x;\n            x = 0;\n        }\n        if (y && this.scrollParents.y) {\n            this.scrollParents.y.scrollTop += y;\n            y = 0;\n        }\n        if (x || y)\n            this.view.win.scrollBy(x, y);\n        if (this.dragging === false)\n            this.select(this.lastEvent);\n    }\n    skipAtoms(sel) {\n        let ranges = null;\n        for (let i = 0; i < sel.ranges.length; i++) {\n            let range = sel.ranges[i], updated = null;\n            if (range.empty) {\n                let pos = skipAtomicRanges(this.atoms, range.from, 0);\n                if (pos != range.from)\n                    updated = EditorSelection.cursor(pos, -1);\n            }\n            else {\n                let from = skipAtomicRanges(this.atoms, range.from, -1);\n                let to = skipAtomicRanges(this.atoms, range.to, 1);\n                if (from != range.from || to != range.to)\n                    updated = EditorSelection.range(range.from == range.anchor ? from : to, range.from == range.head ? from : to);\n            }\n            if (updated) {\n                if (!ranges)\n                    ranges = sel.ranges.slice();\n                ranges[i] = updated;\n            }\n        }\n        return ranges ? EditorSelection.create(ranges, sel.mainIndex) : sel;\n    }\n    select(event) {\n        let { view } = this, selection = this.skipAtoms(this.style.get(event, this.extend, this.multiple));\n        if (this.mustSelect || !selection.eq(view.state.selection, this.dragging === false))\n            this.view.dispatch({\n                selection,\n                userEvent: \"select.pointer\"\n            });\n        this.mustSelect = false;\n    }\n    update(update) {\n        if (update.transactions.some(tr => tr.isUserEvent(\"input.type\")))\n            this.destroy();\n        else if (this.style.update(update))\n            setTimeout(() => this.select(this.lastEvent), 20);\n    }\n}\nfunction addsSelectionRange(view, event) {\n    let facet = view.state.facet(clickAddsSelectionRange);\n    return facet.length ? facet[0](event) : browser.mac ? event.metaKey : event.ctrlKey;\n}\nfunction dragMovesSelection(view, event) {\n    let facet = view.state.facet(dragMovesSelection$1);\n    return facet.length ? facet[0](event) : browser.mac ? !event.altKey : !event.ctrlKey;\n}\nfunction isInPrimarySelection(view, event) {\n    let { main } = view.state.selection;\n    if (main.empty)\n        return false;\n    // On boundary clicks, check whether the coordinates are inside the\n    // selection's client rectangles\n    let sel = getSelection(view.root);\n    if (!sel || sel.rangeCount == 0)\n        return true;\n    let rects = sel.getRangeAt(0).getClientRects();\n    for (let i = 0; i < rects.length; i++) {\n        let rect = rects[i];\n        if (rect.left <= event.clientX && rect.right >= event.clientX &&\n            rect.top <= event.clientY && rect.bottom >= event.clientY)\n            return true;\n    }\n    return false;\n}\nfunction eventBelongsToEditor(view, event) {\n    if (!event.bubbles)\n        return true;\n    if (event.defaultPrevented)\n        return false;\n    for (let node = event.target, cView; node != view.contentDOM; node = node.parentNode)\n        if (!node || node.nodeType == 11 || ((cView = ContentView.get(node)) && cView.ignoreEvent(event)))\n            return false;\n    return true;\n}\nconst handlers = /*@__PURE__*/Object.create(null);\nconst observers = /*@__PURE__*/Object.create(null);\n// This is very crude, but unfortunately both these browsers _pretend_\n// that they have a clipboard API—all the objects and methods are\n// there, they just don't work, and they are hard to test.\nconst brokenClipboardAPI = (browser.ie && browser.ie_version < 15) ||\n    (browser.ios && browser.webkit_version < 604);\nfunction capturePaste(view) {\n    let parent = view.dom.parentNode;\n    if (!parent)\n        return;\n    let target = parent.appendChild(document.createElement(\"textarea\"));\n    target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n    target.focus();\n    setTimeout(() => {\n        view.focus();\n        target.remove();\n        doPaste(view, target.value);\n    }, 50);\n}\nfunction textFilter(state, facet, text) {\n    for (let filter of state.facet(facet))\n        text = filter(text, state);\n    return text;\n}\nfunction doPaste(view, input) {\n    input = textFilter(view.state, clipboardInputFilter, input);\n    let { state } = view, changes, i = 1, text = state.toText(input);\n    let byLine = text.lines == state.selection.ranges.length;\n    let linewise = lastLinewiseCopy != null && state.selection.ranges.every(r => r.empty) && lastLinewiseCopy == text.toString();\n    if (linewise) {\n        let lastLine = -1;\n        changes = state.changeByRange(range => {\n            let line = state.doc.lineAt(range.from);\n            if (line.from == lastLine)\n                return { range };\n            lastLine = line.from;\n            let insert = state.toText((byLine ? text.line(i++).text : input) + state.lineBreak);\n            return { changes: { from: line.from, insert },\n                range: EditorSelection.cursor(range.from + insert.length) };\n        });\n    }\n    else if (byLine) {\n        changes = state.changeByRange(range => {\n            let line = text.line(i++);\n            return { changes: { from: range.from, to: range.to, insert: line.text },\n                range: EditorSelection.cursor(range.from + line.length) };\n        });\n    }\n    else {\n        changes = state.replaceSelection(text);\n    }\n    view.dispatch(changes, {\n        userEvent: \"input.paste\",\n        scrollIntoView: true\n    });\n}\nobservers.scroll = view => {\n    view.inputState.lastScrollTop = view.scrollDOM.scrollTop;\n    view.inputState.lastScrollLeft = view.scrollDOM.scrollLeft;\n};\nhandlers.keydown = (view, event) => {\n    view.inputState.setSelectionOrigin(\"select\");\n    if (event.keyCode == 27 && view.inputState.tabFocusMode != 0)\n        view.inputState.tabFocusMode = Date.now() + 2000;\n    return false;\n};\nobservers.touchstart = (view, e) => {\n    view.inputState.lastTouchTime = Date.now();\n    view.inputState.setSelectionOrigin(\"select.pointer\");\n};\nobservers.touchmove = view => {\n    view.inputState.setSelectionOrigin(\"select.pointer\");\n};\nhandlers.mousedown = (view, event) => {\n    view.observer.flush();\n    if (view.inputState.lastTouchTime > Date.now() - 2000)\n        return false; // Ignore touch interaction\n    let style = null;\n    for (let makeStyle of view.state.facet(mouseSelectionStyle)) {\n        style = makeStyle(view, event);\n        if (style)\n            break;\n    }\n    if (!style && event.button == 0)\n        style = basicMouseSelection(view, event);\n    if (style) {\n        let mustFocus = !view.hasFocus;\n        view.inputState.startMouseSelection(new MouseSelection(view, event, style, mustFocus));\n        if (mustFocus)\n            view.observer.ignore(() => {\n                focusPreventScroll(view.contentDOM);\n                let active = view.root.activeElement;\n                if (active && !active.contains(view.contentDOM))\n                    active.blur();\n            });\n        let mouseSel = view.inputState.mouseSelection;\n        if (mouseSel) {\n            mouseSel.start(event);\n            return mouseSel.dragging === false;\n        }\n    }\n    return false;\n};\nfunction rangeForClick(view, pos, bias, type) {\n    if (type == 1) { // Single click\n        return EditorSelection.cursor(pos, bias);\n    }\n    else if (type == 2) { // Double click\n        return groupAt(view.state, pos, bias);\n    }\n    else { // Triple click\n        let visual = LineView.find(view.docView, pos), line = view.state.doc.lineAt(visual ? visual.posAtEnd : pos);\n        let from = visual ? visual.posAtStart : line.from, to = visual ? visual.posAtEnd : line.to;\n        if (to < view.state.doc.length && to == line.to)\n            to++;\n        return EditorSelection.range(from, to);\n    }\n}\nlet inside = (x, y, rect) => y >= rect.top && y <= rect.bottom && x >= rect.left && x <= rect.right;\n// Try to determine, for the given coordinates, associated with the\n// given position, whether they are related to the element before or\n// the element after the position.\nfunction findPositionSide(view, pos, x, y) {\n    let line = LineView.find(view.docView, pos);\n    if (!line)\n        return 1;\n    let off = pos - line.posAtStart;\n    // Line boundaries point into the line\n    if (off == 0)\n        return 1;\n    if (off == line.length)\n        return -1;\n    // Positions on top of an element point at that element\n    let before = line.coordsAt(off, -1);\n    if (before && inside(x, y, before))\n        return -1;\n    let after = line.coordsAt(off, 1);\n    if (after && inside(x, y, after))\n        return 1;\n    // This is probably a line wrap point. Pick before if the point is\n    // above its bottom.\n    return before && before.bottom >= y ? -1 : 1;\n}\nfunction queryPos(view, event) {\n    let pos = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);\n    return { pos, bias: findPositionSide(view, pos, event.clientX, event.clientY) };\n}\nconst BadMouseDetail = browser.ie && browser.ie_version <= 11;\nlet lastMouseDown = null, lastMouseDownCount = 0, lastMouseDownTime = 0;\nfunction getClickType(event) {\n    if (!BadMouseDetail)\n        return event.detail;\n    let last = lastMouseDown, lastTime = lastMouseDownTime;\n    lastMouseDown = event;\n    lastMouseDownTime = Date.now();\n    return lastMouseDownCount = !last || (lastTime > Date.now() - 400 && Math.abs(last.clientX - event.clientX) < 2 &&\n        Math.abs(last.clientY - event.clientY) < 2) ? (lastMouseDownCount + 1) % 3 : 1;\n}\nfunction basicMouseSelection(view, event) {\n    let start = queryPos(view, event), type = getClickType(event);\n    let startSel = view.state.selection;\n    return {\n        update(update) {\n            if (update.docChanged) {\n                start.pos = update.changes.mapPos(start.pos);\n                startSel = startSel.map(update.changes);\n            }\n        },\n        get(event, extend, multiple) {\n            let cur = queryPos(view, event), removed;\n            let range = rangeForClick(view, cur.pos, cur.bias, type);\n            if (start.pos != cur.pos && !extend) {\n                let startRange = rangeForClick(view, start.pos, start.bias, type);\n                let from = Math.min(startRange.from, range.from), to = Math.max(startRange.to, range.to);\n                range = from < range.from ? EditorSelection.range(from, to) : EditorSelection.range(to, from);\n            }\n            if (extend)\n                return startSel.replaceRange(startSel.main.extend(range.from, range.to));\n            else if (multiple && type == 1 && startSel.ranges.length > 1 && (removed = removeRangeAround(startSel, cur.pos)))\n                return removed;\n            else if (multiple)\n                return startSel.addRange(range);\n            else\n                return EditorSelection.create([range]);\n        }\n    };\n}\nfunction removeRangeAround(sel, pos) {\n    for (let i = 0; i < sel.ranges.length; i++) {\n        let { from, to } = sel.ranges[i];\n        if (from <= pos && to >= pos)\n            return EditorSelection.create(sel.ranges.slice(0, i).concat(sel.ranges.slice(i + 1)), sel.mainIndex == i ? 0 : sel.mainIndex - (sel.mainIndex > i ? 1 : 0));\n    }\n    return null;\n}\nhandlers.dragstart = (view, event) => {\n    let { selection: { main: range } } = view.state;\n    if (event.target.draggable) {\n        let cView = view.docView.nearest(event.target);\n        if (cView && cView.isWidget) {\n            let from = cView.posAtStart, to = from + cView.length;\n            if (from >= range.to || to <= range.from)\n                range = EditorSelection.range(from, to);\n        }\n    }\n    let { inputState } = view;\n    if (inputState.mouseSelection)\n        inputState.mouseSelection.dragging = true;\n    inputState.draggedContent = range;\n    if (event.dataTransfer) {\n        event.dataTransfer.setData(\"Text\", textFilter(view.state, clipboardOutputFilter, view.state.sliceDoc(range.from, range.to)));\n        event.dataTransfer.effectAllowed = \"copyMove\";\n    }\n    return false;\n};\nhandlers.dragend = view => {\n    view.inputState.draggedContent = null;\n    return false;\n};\nfunction dropText(view, event, text, direct) {\n    text = textFilter(view.state, clipboardInputFilter, text);\n    if (!text)\n        return;\n    let dropPos = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);\n    let { draggedContent } = view.inputState;\n    let del = direct && draggedContent && dragMovesSelection(view, event)\n        ? { from: draggedContent.from, to: draggedContent.to } : null;\n    let ins = { from: dropPos, insert: text };\n    let changes = view.state.changes(del ? [del, ins] : ins);\n    view.focus();\n    view.dispatch({\n        changes,\n        selection: { anchor: changes.mapPos(dropPos, -1), head: changes.mapPos(dropPos, 1) },\n        userEvent: del ? \"move.drop\" : \"input.drop\"\n    });\n    view.inputState.draggedContent = null;\n}\nhandlers.drop = (view, event) => {\n    if (!event.dataTransfer)\n        return false;\n    if (view.state.readOnly)\n        return true;\n    let files = event.dataTransfer.files;\n    if (files && files.length) { // For a file drop, read the file's text.\n        let text = Array(files.length), read = 0;\n        let finishFile = () => {\n            if (++read == files.length)\n                dropText(view, event, text.filter(s => s != null).join(view.state.lineBreak), false);\n        };\n        for (let i = 0; i < files.length; i++) {\n            let reader = new FileReader;\n            reader.onerror = finishFile;\n            reader.onload = () => {\n                if (!/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(reader.result))\n                    text[i] = reader.result;\n                finishFile();\n            };\n            reader.readAsText(files[i]);\n        }\n        return true;\n    }\n    else {\n        let text = event.dataTransfer.getData(\"Text\");\n        if (text) {\n            dropText(view, event, text, true);\n            return true;\n        }\n    }\n    return false;\n};\nhandlers.paste = (view, event) => {\n    if (view.state.readOnly)\n        return true;\n    view.observer.flush();\n    let data = brokenClipboardAPI ? null : event.clipboardData;\n    if (data) {\n        doPaste(view, data.getData(\"text/plain\") || data.getData(\"text/uri-list\"));\n        return true;\n    }\n    else {\n        capturePaste(view);\n        return false;\n    }\n};\nfunction captureCopy(view, text) {\n    // The extra wrapper is somehow necessary on IE/Edge to prevent the\n    // content from being mangled when it is put onto the clipboard\n    let parent = view.dom.parentNode;\n    if (!parent)\n        return;\n    let target = parent.appendChild(document.createElement(\"textarea\"));\n    target.style.cssText = \"position: fixed; left: -10000px; top: 10px\";\n    target.value = text;\n    target.focus();\n    target.selectionEnd = text.length;\n    target.selectionStart = 0;\n    setTimeout(() => {\n        target.remove();\n        view.focus();\n    }, 50);\n}\nfunction copiedRange(state) {\n    let content = [], ranges = [], linewise = false;\n    for (let range of state.selection.ranges)\n        if (!range.empty) {\n            content.push(state.sliceDoc(range.from, range.to));\n            ranges.push(range);\n        }\n    if (!content.length) {\n        // Nothing selected, do a line-wise copy\n        let upto = -1;\n        for (let { from } of state.selection.ranges) {\n            let line = state.doc.lineAt(from);\n            if (line.number > upto) {\n                content.push(line.text);\n                ranges.push({ from: line.from, to: Math.min(state.doc.length, line.to + 1) });\n            }\n            upto = line.number;\n        }\n        linewise = true;\n    }\n    return { text: textFilter(state, clipboardOutputFilter, content.join(state.lineBreak)), ranges, linewise };\n}\nlet lastLinewiseCopy = null;\nhandlers.copy = handlers.cut = (view, event) => {\n    let { text, ranges, linewise } = copiedRange(view.state);\n    if (!text && !linewise)\n        return false;\n    lastLinewiseCopy = linewise ? text : null;\n    if (event.type == \"cut\" && !view.state.readOnly)\n        view.dispatch({\n            changes: ranges,\n            scrollIntoView: true,\n            userEvent: \"delete.cut\"\n        });\n    let data = brokenClipboardAPI ? null : event.clipboardData;\n    if (data) {\n        data.clearData();\n        data.setData(\"text/plain\", text);\n        return true;\n    }\n    else {\n        captureCopy(view, text);\n        return false;\n    }\n};\nconst isFocusChange = /*@__PURE__*/Annotation.define();\nfunction focusChangeTransaction(state, focus) {\n    let effects = [];\n    for (let getEffect of state.facet(focusChangeEffect)) {\n        let effect = getEffect(state, focus);\n        if (effect)\n            effects.push(effect);\n    }\n    return effects ? state.update({ effects, annotations: isFocusChange.of(true) }) : null;\n}\nfunction updateForFocusChange(view) {\n    setTimeout(() => {\n        let focus = view.hasFocus;\n        if (focus != view.inputState.notifiedFocused) {\n            let tr = focusChangeTransaction(view.state, focus);\n            if (tr)\n                view.dispatch(tr);\n            else\n                view.update([]);\n        }\n    }, 10);\n}\nobservers.focus = view => {\n    view.inputState.lastFocusTime = Date.now();\n    // When focusing reset the scroll position, move it back to where it was\n    if (!view.scrollDOM.scrollTop && (view.inputState.lastScrollTop || view.inputState.lastScrollLeft)) {\n        view.scrollDOM.scrollTop = view.inputState.lastScrollTop;\n        view.scrollDOM.scrollLeft = view.inputState.lastScrollLeft;\n    }\n    updateForFocusChange(view);\n};\nobservers.blur = view => {\n    view.observer.clearSelectionRange();\n    updateForFocusChange(view);\n};\nobservers.compositionstart = observers.compositionupdate = view => {\n    if (view.observer.editContext)\n        return; // Composition handled by edit context\n    if (view.inputState.compositionFirstChange == null)\n        view.inputState.compositionFirstChange = true;\n    if (view.inputState.composing < 0) {\n        // FIXME possibly set a timeout to clear it again on Android\n        view.inputState.composing = 0;\n    }\n};\nobservers.compositionend = view => {\n    if (view.observer.editContext)\n        return; // Composition handled by edit context\n    view.inputState.composing = -1;\n    view.inputState.compositionEndedAt = Date.now();\n    view.inputState.compositionPendingKey = true;\n    view.inputState.compositionPendingChange = view.observer.pendingRecords().length > 0;\n    view.inputState.compositionFirstChange = null;\n    if (browser.chrome && browser.android) {\n        // Delay flushing for a bit on Android because it'll often fire a\n        // bunch of contradictory changes in a row at end of compositon\n        view.observer.flushSoon();\n    }\n    else if (view.inputState.compositionPendingChange) {\n        // If we found pending records, schedule a flush.\n        Promise.resolve().then(() => view.observer.flush());\n    }\n    else {\n        // Otherwise, make sure that, if no changes come in soon, the\n        // composition view is cleared.\n        setTimeout(() => {\n            if (view.inputState.composing < 0 && view.docView.hasComposition)\n                view.update([]);\n        }, 50);\n    }\n};\nobservers.contextmenu = view => {\n    view.inputState.lastContextMenu = Date.now();\n};\nhandlers.beforeinput = (view, event) => {\n    var _a, _b;\n    // In EditContext mode, we must handle insertReplacementText events\n    // directly, to make spell checking corrections work\n    if (event.inputType == \"insertReplacementText\" && view.observer.editContext) {\n        let text = (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.getData(\"text/plain\"), ranges = event.getTargetRanges();\n        if (text && ranges.length) {\n            let r = ranges[0];\n            let from = view.posAtDOM(r.startContainer, r.startOffset), to = view.posAtDOM(r.endContainer, r.endOffset);\n            applyDOMChangeInner(view, { from, to, insert: view.state.toText(text) }, null);\n            return true;\n        }\n    }\n    // Because Chrome Android doesn't fire useful key events, use\n    // beforeinput to detect backspace (and possibly enter and delete,\n    // but those usually don't even seem to fire beforeinput events at\n    // the moment) and fake a key event for it.\n    //\n    // (preventDefault on beforeinput, though supported in the spec,\n    // seems to do nothing at all on Chrome).\n    let pending;\n    if (browser.chrome && browser.android && (pending = PendingKeys.find(key => key.inputType == event.inputType))) {\n        view.observer.delayAndroidKey(pending.key, pending.keyCode);\n        if (pending.key == \"Backspace\" || pending.key == \"Delete\") {\n            let startViewHeight = ((_b = window.visualViewport) === null || _b === void 0 ? void 0 : _b.height) || 0;\n            setTimeout(() => {\n                var _a;\n                // Backspacing near uneditable nodes on Chrome Android sometimes\n                // closes the virtual keyboard. This tries to crudely detect\n                // that and refocus to get it back.\n                if ((((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) || 0) > startViewHeight + 10 && view.hasFocus) {\n                    view.contentDOM.blur();\n                    view.focus();\n                }\n            }, 100);\n        }\n    }\n    if (browser.ios && event.inputType == \"deleteContentForward\") {\n        // For some reason, DOM changes (and beforeinput) happen _before_\n        // the key event for ctrl-d on iOS when using an external\n        // keyboard.\n        view.observer.flushSoon();\n    }\n    // Safari will occasionally forget to fire compositionend at the end of a dead-key composition\n    if (browser.safari && event.inputType == \"insertText\" && view.inputState.composing >= 0) {\n        setTimeout(() => observers.compositionend(view, event), 20);\n    }\n    return false;\n};\nconst appliedFirefoxHack = /*@__PURE__*/new Set;\n// In Firefox, when cut/copy handlers are added to the document, that\n// somehow avoids a bug where those events aren't fired when the\n// selection is empty. See https://github.com/codemirror/dev/issues/1082\n// and https://bugzilla.mozilla.org/show_bug.cgi?id=995961\nfunction firefoxCopyCutHack(doc) {\n    if (!appliedFirefoxHack.has(doc)) {\n        appliedFirefoxHack.add(doc);\n        doc.addEventListener(\"copy\", () => { });\n        doc.addEventListener(\"cut\", () => { });\n    }\n}\n\nconst wrappingWhiteSpace = [\"pre-wrap\", \"normal\", \"pre-line\", \"break-spaces\"];\n// Used to track, during updateHeight, if any actual heights changed\nlet heightChangeFlag = false;\nfunction clearHeightChangeFlag() { heightChangeFlag = false; }\nclass HeightOracle {\n    constructor(lineWrapping) {\n        this.lineWrapping = lineWrapping;\n        this.doc = Text.empty;\n        this.heightSamples = {};\n        this.lineHeight = 14; // The height of an entire line (line-height)\n        this.charWidth = 7;\n        this.textHeight = 14; // The height of the actual font (font-size)\n        this.lineLength = 30;\n    }\n    heightForGap(from, to) {\n        let lines = this.doc.lineAt(to).number - this.doc.lineAt(from).number + 1;\n        if (this.lineWrapping)\n            lines += Math.max(0, Math.ceil(((to - from) - (lines * this.lineLength * 0.5)) / this.lineLength));\n        return this.lineHeight * lines;\n    }\n    heightForLine(length) {\n        if (!this.lineWrapping)\n            return this.lineHeight;\n        let lines = 1 + Math.max(0, Math.ceil((length - this.lineLength) / (this.lineLength - 5)));\n        return lines * this.lineHeight;\n    }\n    setDoc(doc) { this.doc = doc; return this; }\n    mustRefreshForWrapping(whiteSpace) {\n        return (wrappingWhiteSpace.indexOf(whiteSpace) > -1) != this.lineWrapping;\n    }\n    mustRefreshForHeights(lineHeights) {\n        let newHeight = false;\n        for (let i = 0; i < lineHeights.length; i++) {\n            let h = lineHeights[i];\n            if (h < 0) {\n                i++;\n            }\n            else if (!this.heightSamples[Math.floor(h * 10)]) { // Round to .1 pixels\n                newHeight = true;\n                this.heightSamples[Math.floor(h * 10)] = true;\n            }\n        }\n        return newHeight;\n    }\n    refresh(whiteSpace, lineHeight, charWidth, textHeight, lineLength, knownHeights) {\n        let lineWrapping = wrappingWhiteSpace.indexOf(whiteSpace) > -1;\n        let changed = Math.round(lineHeight) != Math.round(this.lineHeight) || this.lineWrapping != lineWrapping;\n        this.lineWrapping = lineWrapping;\n        this.lineHeight = lineHeight;\n        this.charWidth = charWidth;\n        this.textHeight = textHeight;\n        this.lineLength = lineLength;\n        if (changed) {\n            this.heightSamples = {};\n            for (let i = 0; i < knownHeights.length; i++) {\n                let h = knownHeights[i];\n                if (h < 0)\n                    i++;\n                else\n                    this.heightSamples[Math.floor(h * 10)] = true;\n            }\n        }\n        return changed;\n    }\n}\n// This object is used by `updateHeight` to make DOM measurements\n// arrive at the right nides. The `heights` array is a sequence of\n// block heights, starting from position `from`.\nclass MeasuredHeights {\n    constructor(from, heights) {\n        this.from = from;\n        this.heights = heights;\n        this.index = 0;\n    }\n    get more() { return this.index < this.heights.length; }\n}\n/**\nRecord used to represent information about a block-level element\nin the editor view.\n*/\nclass BlockInfo {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The start of the element in the document.\n    */\n    from, \n    /**\n    The length of the element.\n    */\n    length, \n    /**\n    The top position of the element (relative to the top of the\n    document).\n    */\n    top, \n    /**\n    Its height.\n    */\n    height, \n    /**\n    @internal Weird packed field that holds an array of children\n    for composite blocks, a decoration for block widgets, and a\n    number indicating the amount of widget-create line breaks for\n    text blocks.\n    */\n    _content) {\n        this.from = from;\n        this.length = length;\n        this.top = top;\n        this.height = height;\n        this._content = _content;\n    }\n    /**\n    The type of element this is. When querying lines, this may be\n    an array of all the blocks that make up the line.\n    */\n    get type() {\n        return typeof this._content == \"number\" ? BlockType.Text :\n            Array.isArray(this._content) ? this._content : this._content.type;\n    }\n    /**\n    The end of the element as a document position.\n    */\n    get to() { return this.from + this.length; }\n    /**\n    The bottom position of the element.\n    */\n    get bottom() { return this.top + this.height; }\n    /**\n    If this is a widget block, this will return the widget\n    associated with it.\n    */\n    get widget() {\n        return this._content instanceof PointDecoration ? this._content.widget : null;\n    }\n    /**\n    If this is a textblock, this holds the number of line breaks\n    that appear in widgets inside the block.\n    */\n    get widgetLineBreaks() {\n        return typeof this._content == \"number\" ? this._content : 0;\n    }\n    /**\n    @internal\n    */\n    join(other) {\n        let content = (Array.isArray(this._content) ? this._content : [this])\n            .concat(Array.isArray(other._content) ? other._content : [other]);\n        return new BlockInfo(this.from, this.length + other.length, this.top, this.height + other.height, content);\n    }\n}\nvar QueryType = /*@__PURE__*/(function (QueryType) {\n    QueryType[QueryType[\"ByPos\"] = 0] = \"ByPos\";\n    QueryType[QueryType[\"ByHeight\"] = 1] = \"ByHeight\";\n    QueryType[QueryType[\"ByPosNoHeight\"] = 2] = \"ByPosNoHeight\";\nreturn QueryType})(QueryType || (QueryType = {}));\nconst Epsilon = 1e-3;\nclass HeightMap {\n    constructor(length, // The number of characters covered\n    height, // Height of this part of the document\n    flags = 2 /* Flag.Outdated */) {\n        this.length = length;\n        this.height = height;\n        this.flags = flags;\n    }\n    get outdated() { return (this.flags & 2 /* Flag.Outdated */) > 0; }\n    set outdated(value) { this.flags = (value ? 2 /* Flag.Outdated */ : 0) | (this.flags & ~2 /* Flag.Outdated */); }\n    setHeight(height) {\n        if (this.height != height) {\n            if (Math.abs(this.height - height) > Epsilon)\n                heightChangeFlag = true;\n            this.height = height;\n        }\n    }\n    // Base case is to replace a leaf node, which simply builds a tree\n    // from the new nodes and returns that (HeightMapBranch and\n    // HeightMapGap override this to actually use from/to)\n    replace(_from, _to, nodes) {\n        return HeightMap.of(nodes);\n    }\n    // Again, these are base cases, and are overridden for branch and gap nodes.\n    decomposeLeft(_to, result) { result.push(this); }\n    decomposeRight(_from, result) { result.push(this); }\n    applyChanges(decorations, oldDoc, oracle, changes) {\n        let me = this, doc = oracle.doc;\n        for (let i = changes.length - 1; i >= 0; i--) {\n            let { fromA, toA, fromB, toB } = changes[i];\n            let start = me.lineAt(fromA, QueryType.ByPosNoHeight, oracle.setDoc(oldDoc), 0, 0);\n            let end = start.to >= toA ? start : me.lineAt(toA, QueryType.ByPosNoHeight, oracle, 0, 0);\n            toB += end.to - toA;\n            toA = end.to;\n            while (i > 0 && start.from <= changes[i - 1].toA) {\n                fromA = changes[i - 1].fromA;\n                fromB = changes[i - 1].fromB;\n                i--;\n                if (fromA < start.from)\n                    start = me.lineAt(fromA, QueryType.ByPosNoHeight, oracle, 0, 0);\n            }\n            fromB += start.from - fromA;\n            fromA = start.from;\n            let nodes = NodeBuilder.build(oracle.setDoc(doc), decorations, fromB, toB);\n            me = replace(me, me.replace(fromA, toA, nodes));\n        }\n        return me.updateHeight(oracle, 0);\n    }\n    static empty() { return new HeightMapText(0, 0); }\n    // nodes uses null values to indicate the position of line breaks.\n    // There are never line breaks at the start or end of the array, or\n    // two line breaks next to each other, and the array isn't allowed\n    // to be empty (same restrictions as return value from the builder).\n    static of(nodes) {\n        if (nodes.length == 1)\n            return nodes[0];\n        let i = 0, j = nodes.length, before = 0, after = 0;\n        for (;;) {\n            if (i == j) {\n                if (before > after * 2) {\n                    let split = nodes[i - 1];\n                    if (split.break)\n                        nodes.splice(--i, 1, split.left, null, split.right);\n                    else\n                        nodes.splice(--i, 1, split.left, split.right);\n                    j += 1 + split.break;\n                    before -= split.size;\n                }\n                else if (after > before * 2) {\n                    let split = nodes[j];\n                    if (split.break)\n                        nodes.splice(j, 1, split.left, null, split.right);\n                    else\n                        nodes.splice(j, 1, split.left, split.right);\n                    j += 2 + split.break;\n                    after -= split.size;\n                }\n                else {\n                    break;\n                }\n            }\n            else if (before < after) {\n                let next = nodes[i++];\n                if (next)\n                    before += next.size;\n            }\n            else {\n                let next = nodes[--j];\n                if (next)\n                    after += next.size;\n            }\n        }\n        let brk = 0;\n        if (nodes[i - 1] == null) {\n            brk = 1;\n            i--;\n        }\n        else if (nodes[i] == null) {\n            brk = 1;\n            j++;\n        }\n        return new HeightMapBranch(HeightMap.of(nodes.slice(0, i)), brk, HeightMap.of(nodes.slice(j)));\n    }\n}\nfunction replace(old, val) {\n    if (old == val)\n        return old;\n    if (old.constructor != val.constructor)\n        heightChangeFlag = true;\n    return val;\n}\nHeightMap.prototype.size = 1;\nclass HeightMapBlock extends HeightMap {\n    constructor(length, height, deco) {\n        super(length, height);\n        this.deco = deco;\n    }\n    blockAt(_height, _oracle, top, offset) {\n        return new BlockInfo(offset, this.length, top, this.height, this.deco || 0);\n    }\n    lineAt(_value, _type, oracle, top, offset) {\n        return this.blockAt(0, oracle, top, offset);\n    }\n    forEachLine(from, to, oracle, top, offset, f) {\n        if (from <= offset + this.length && to >= offset)\n            f(this.blockAt(0, oracle, top, offset));\n    }\n    updateHeight(oracle, offset = 0, _force = false, measured) {\n        if (measured && measured.from <= offset && measured.more)\n            this.setHeight(measured.heights[measured.index++]);\n        this.outdated = false;\n        return this;\n    }\n    toString() { return `block(${this.length})`; }\n}\nclass HeightMapText extends HeightMapBlock {\n    constructor(length, height) {\n        super(length, height, null);\n        this.collapsed = 0; // Amount of collapsed content in the line\n        this.widgetHeight = 0; // Maximum inline widget height\n        this.breaks = 0; // Number of widget-introduced line breaks on the line\n    }\n    blockAt(_height, _oracle, top, offset) {\n        return new BlockInfo(offset, this.length, top, this.height, this.breaks);\n    }\n    replace(_from, _to, nodes) {\n        let node = nodes[0];\n        if (nodes.length == 1 && (node instanceof HeightMapText || node instanceof HeightMapGap && (node.flags & 4 /* Flag.SingleLine */)) &&\n            Math.abs(this.length - node.length) < 10) {\n            if (node instanceof HeightMapGap)\n                node = new HeightMapText(node.length, this.height);\n            else\n                node.height = this.height;\n            if (!this.outdated)\n                node.outdated = false;\n            return node;\n        }\n        else {\n            return HeightMap.of(nodes);\n        }\n    }\n    updateHeight(oracle, offset = 0, force = false, measured) {\n        if (measured && measured.from <= offset && measured.more)\n            this.setHeight(measured.heights[measured.index++]);\n        else if (force || this.outdated)\n            this.setHeight(Math.max(this.widgetHeight, oracle.heightForLine(this.length - this.collapsed)) +\n                this.breaks * oracle.lineHeight);\n        this.outdated = false;\n        return this;\n    }\n    toString() {\n        return `line(${this.length}${this.collapsed ? -this.collapsed : \"\"}${this.widgetHeight ? \":\" + this.widgetHeight : \"\"})`;\n    }\n}\nclass HeightMapGap extends HeightMap {\n    constructor(length) { super(length, 0); }\n    heightMetrics(oracle, offset) {\n        let firstLine = oracle.doc.lineAt(offset).number, lastLine = oracle.doc.lineAt(offset + this.length).number;\n        let lines = lastLine - firstLine + 1;\n        let perLine, perChar = 0;\n        if (oracle.lineWrapping) {\n            let totalPerLine = Math.min(this.height, oracle.lineHeight * lines);\n            perLine = totalPerLine / lines;\n            if (this.length > lines + 1)\n                perChar = (this.height - totalPerLine) / (this.length - lines - 1);\n        }\n        else {\n            perLine = this.height / lines;\n        }\n        return { firstLine, lastLine, perLine, perChar };\n    }\n    blockAt(height, oracle, top, offset) {\n        let { firstLine, lastLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n        if (oracle.lineWrapping) {\n            let guess = offset + (height < oracle.lineHeight ? 0\n                : Math.round(Math.max(0, Math.min(1, (height - top) / this.height)) * this.length));\n            let line = oracle.doc.lineAt(guess), lineHeight = perLine + line.length * perChar;\n            let lineTop = Math.max(top, height - lineHeight / 2);\n            return new BlockInfo(line.from, line.length, lineTop, lineHeight, 0);\n        }\n        else {\n            let line = Math.max(0, Math.min(lastLine - firstLine, Math.floor((height - top) / perLine)));\n            let { from, length } = oracle.doc.line(firstLine + line);\n            return new BlockInfo(from, length, top + perLine * line, perLine, 0);\n        }\n    }\n    lineAt(value, type, oracle, top, offset) {\n        if (type == QueryType.ByHeight)\n            return this.blockAt(value, oracle, top, offset);\n        if (type == QueryType.ByPosNoHeight) {\n            let { from, to } = oracle.doc.lineAt(value);\n            return new BlockInfo(from, to - from, 0, 0, 0);\n        }\n        let { firstLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n        let line = oracle.doc.lineAt(value), lineHeight = perLine + line.length * perChar;\n        let linesAbove = line.number - firstLine;\n        let lineTop = top + perLine * linesAbove + perChar * (line.from - offset - linesAbove);\n        return new BlockInfo(line.from, line.length, Math.max(top, Math.min(lineTop, top + this.height - lineHeight)), lineHeight, 0);\n    }\n    forEachLine(from, to, oracle, top, offset, f) {\n        from = Math.max(from, offset);\n        to = Math.min(to, offset + this.length);\n        let { firstLine, perLine, perChar } = this.heightMetrics(oracle, offset);\n        for (let pos = from, lineTop = top; pos <= to;) {\n            let line = oracle.doc.lineAt(pos);\n            if (pos == from) {\n                let linesAbove = line.number - firstLine;\n                lineTop += perLine * linesAbove + perChar * (from - offset - linesAbove);\n            }\n            let lineHeight = perLine + perChar * line.length;\n            f(new BlockInfo(line.from, line.length, lineTop, lineHeight, 0));\n            lineTop += lineHeight;\n            pos = line.to + 1;\n        }\n    }\n    replace(from, to, nodes) {\n        let after = this.length - to;\n        if (after > 0) {\n            let last = nodes[nodes.length - 1];\n            if (last instanceof HeightMapGap)\n                nodes[nodes.length - 1] = new HeightMapGap(last.length + after);\n            else\n                nodes.push(null, new HeightMapGap(after - 1));\n        }\n        if (from > 0) {\n            let first = nodes[0];\n            if (first instanceof HeightMapGap)\n                nodes[0] = new HeightMapGap(from + first.length);\n            else\n                nodes.unshift(new HeightMapGap(from - 1), null);\n        }\n        return HeightMap.of(nodes);\n    }\n    decomposeLeft(to, result) {\n        result.push(new HeightMapGap(to - 1), null);\n    }\n    decomposeRight(from, result) {\n        result.push(null, new HeightMapGap(this.length - from - 1));\n    }\n    updateHeight(oracle, offset = 0, force = false, measured) {\n        let end = offset + this.length;\n        if (measured && measured.from <= offset + this.length && measured.more) {\n            // Fill in part of this gap with measured lines. We know there\n            // can't be widgets or collapsed ranges in those lines, because\n            // they would already have been added to the heightmap (gaps\n            // only contain plain text).\n            let nodes = [], pos = Math.max(offset, measured.from), singleHeight = -1;\n            if (measured.from > offset)\n                nodes.push(new HeightMapGap(measured.from - offset - 1).updateHeight(oracle, offset));\n            while (pos <= end && measured.more) {\n                let len = oracle.doc.lineAt(pos).length;\n                if (nodes.length)\n                    nodes.push(null);\n                let height = measured.heights[measured.index++];\n                if (singleHeight == -1)\n                    singleHeight = height;\n                else if (Math.abs(height - singleHeight) >= Epsilon)\n                    singleHeight = -2;\n                let line = new HeightMapText(len, height);\n                line.outdated = false;\n                nodes.push(line);\n                pos += len + 1;\n            }\n            if (pos <= end)\n                nodes.push(null, new HeightMapGap(end - pos).updateHeight(oracle, pos));\n            let result = HeightMap.of(nodes);\n            if (singleHeight < 0 || Math.abs(result.height - this.height) >= Epsilon ||\n                Math.abs(singleHeight - this.heightMetrics(oracle, offset).perLine) >= Epsilon)\n                heightChangeFlag = true;\n            return replace(this, result);\n        }\n        else if (force || this.outdated) {\n            this.setHeight(oracle.heightForGap(offset, offset + this.length));\n            this.outdated = false;\n        }\n        return this;\n    }\n    toString() { return `gap(${this.length})`; }\n}\nclass HeightMapBranch extends HeightMap {\n    constructor(left, brk, right) {\n        super(left.length + brk + right.length, left.height + right.height, brk | (left.outdated || right.outdated ? 2 /* Flag.Outdated */ : 0));\n        this.left = left;\n        this.right = right;\n        this.size = left.size + right.size;\n    }\n    get break() { return this.flags & 1 /* Flag.Break */; }\n    blockAt(height, oracle, top, offset) {\n        let mid = top + this.left.height;\n        return height < mid ? this.left.blockAt(height, oracle, top, offset)\n            : this.right.blockAt(height, oracle, mid, offset + this.left.length + this.break);\n    }\n    lineAt(value, type, oracle, top, offset) {\n        let rightTop = top + this.left.height, rightOffset = offset + this.left.length + this.break;\n        let left = type == QueryType.ByHeight ? value < rightTop : value < rightOffset;\n        let base = left ? this.left.lineAt(value, type, oracle, top, offset)\n            : this.right.lineAt(value, type, oracle, rightTop, rightOffset);\n        if (this.break || (left ? base.to < rightOffset : base.from > rightOffset))\n            return base;\n        let subQuery = type == QueryType.ByPosNoHeight ? QueryType.ByPosNoHeight : QueryType.ByPos;\n        if (left)\n            return base.join(this.right.lineAt(rightOffset, subQuery, oracle, rightTop, rightOffset));\n        else\n            return this.left.lineAt(rightOffset, subQuery, oracle, top, offset).join(base);\n    }\n    forEachLine(from, to, oracle, top, offset, f) {\n        let rightTop = top + this.left.height, rightOffset = offset + this.left.length + this.break;\n        if (this.break) {\n            if (from < rightOffset)\n                this.left.forEachLine(from, to, oracle, top, offset, f);\n            if (to >= rightOffset)\n                this.right.forEachLine(from, to, oracle, rightTop, rightOffset, f);\n        }\n        else {\n            let mid = this.lineAt(rightOffset, QueryType.ByPos, oracle, top, offset);\n            if (from < mid.from)\n                this.left.forEachLine(from, mid.from - 1, oracle, top, offset, f);\n            if (mid.to >= from && mid.from <= to)\n                f(mid);\n            if (to > mid.to)\n                this.right.forEachLine(mid.to + 1, to, oracle, rightTop, rightOffset, f);\n        }\n    }\n    replace(from, to, nodes) {\n        let rightStart = this.left.length + this.break;\n        if (to < rightStart)\n            return this.balanced(this.left.replace(from, to, nodes), this.right);\n        if (from > this.left.length)\n            return this.balanced(this.left, this.right.replace(from - rightStart, to - rightStart, nodes));\n        let result = [];\n        if (from > 0)\n            this.decomposeLeft(from, result);\n        let left = result.length;\n        for (let node of nodes)\n            result.push(node);\n        if (from > 0)\n            mergeGaps(result, left - 1);\n        if (to < this.length) {\n            let right = result.length;\n            this.decomposeRight(to, result);\n            mergeGaps(result, right);\n        }\n        return HeightMap.of(result);\n    }\n    decomposeLeft(to, result) {\n        let left = this.left.length;\n        if (to <= left)\n            return this.left.decomposeLeft(to, result);\n        result.push(this.left);\n        if (this.break) {\n            left++;\n            if (to >= left)\n                result.push(null);\n        }\n        if (to > left)\n            this.right.decomposeLeft(to - left, result);\n    }\n    decomposeRight(from, result) {\n        let left = this.left.length, right = left + this.break;\n        if (from >= right)\n            return this.right.decomposeRight(from - right, result);\n        if (from < left)\n            this.left.decomposeRight(from, result);\n        if (this.break && from < right)\n            result.push(null);\n        result.push(this.right);\n    }\n    balanced(left, right) {\n        if (left.size > 2 * right.size || right.size > 2 * left.size)\n            return HeightMap.of(this.break ? [left, null, right] : [left, right]);\n        this.left = replace(this.left, left);\n        this.right = replace(this.right, right);\n        this.setHeight(left.height + right.height);\n        this.outdated = left.outdated || right.outdated;\n        this.size = left.size + right.size;\n        this.length = left.length + this.break + right.length;\n        return this;\n    }\n    updateHeight(oracle, offset = 0, force = false, measured) {\n        let { left, right } = this, rightStart = offset + left.length + this.break, rebalance = null;\n        if (measured && measured.from <= offset + left.length && measured.more)\n            rebalance = left = left.updateHeight(oracle, offset, force, measured);\n        else\n            left.updateHeight(oracle, offset, force);\n        if (measured && measured.from <= rightStart + right.length && measured.more)\n            rebalance = right = right.updateHeight(oracle, rightStart, force, measured);\n        else\n            right.updateHeight(oracle, rightStart, force);\n        if (rebalance)\n            return this.balanced(left, right);\n        this.height = this.left.height + this.right.height;\n        this.outdated = false;\n        return this;\n    }\n    toString() { return this.left + (this.break ? \" \" : \"-\") + this.right; }\n}\nfunction mergeGaps(nodes, around) {\n    let before, after;\n    if (nodes[around] == null &&\n        (before = nodes[around - 1]) instanceof HeightMapGap &&\n        (after = nodes[around + 1]) instanceof HeightMapGap)\n        nodes.splice(around - 1, 3, new HeightMapGap(before.length + 1 + after.length));\n}\nconst relevantWidgetHeight = 5;\nclass NodeBuilder {\n    constructor(pos, oracle) {\n        this.pos = pos;\n        this.oracle = oracle;\n        this.nodes = [];\n        this.lineStart = -1;\n        this.lineEnd = -1;\n        this.covering = null;\n        this.writtenTo = pos;\n    }\n    get isCovered() {\n        return this.covering && this.nodes[this.nodes.length - 1] == this.covering;\n    }\n    span(_from, to) {\n        if (this.lineStart > -1) {\n            let end = Math.min(to, this.lineEnd), last = this.nodes[this.nodes.length - 1];\n            if (last instanceof HeightMapText)\n                last.length += end - this.pos;\n            else if (end > this.pos || !this.isCovered)\n                this.nodes.push(new HeightMapText(end - this.pos, -1));\n            this.writtenTo = end;\n            if (to > end) {\n                this.nodes.push(null);\n                this.writtenTo++;\n                this.lineStart = -1;\n            }\n        }\n        this.pos = to;\n    }\n    point(from, to, deco) {\n        if (from < to || deco.heightRelevant) {\n            let height = deco.widget ? deco.widget.estimatedHeight : 0;\n            let breaks = deco.widget ? deco.widget.lineBreaks : 0;\n            if (height < 0)\n                height = this.oracle.lineHeight;\n            let len = to - from;\n            if (deco.block) {\n                this.addBlock(new HeightMapBlock(len, height, deco));\n            }\n            else if (len || breaks || height >= relevantWidgetHeight) {\n                this.addLineDeco(height, breaks, len);\n            }\n        }\n        else if (to > from) {\n            this.span(from, to);\n        }\n        if (this.lineEnd > -1 && this.lineEnd < this.pos)\n            this.lineEnd = this.oracle.doc.lineAt(this.pos).to;\n    }\n    enterLine() {\n        if (this.lineStart > -1)\n            return;\n        let { from, to } = this.oracle.doc.lineAt(this.pos);\n        this.lineStart = from;\n        this.lineEnd = to;\n        if (this.writtenTo < from) {\n            if (this.writtenTo < from - 1 || this.nodes[this.nodes.length - 1] == null)\n                this.nodes.push(this.blankContent(this.writtenTo, from - 1));\n            this.nodes.push(null);\n        }\n        if (this.pos > from)\n            this.nodes.push(new HeightMapText(this.pos - from, -1));\n        this.writtenTo = this.pos;\n    }\n    blankContent(from, to) {\n        let gap = new HeightMapGap(to - from);\n        if (this.oracle.doc.lineAt(from).to == to)\n            gap.flags |= 4 /* Flag.SingleLine */;\n        return gap;\n    }\n    ensureLine() {\n        this.enterLine();\n        let last = this.nodes.length ? this.nodes[this.nodes.length - 1] : null;\n        if (last instanceof HeightMapText)\n            return last;\n        let line = new HeightMapText(0, -1);\n        this.nodes.push(line);\n        return line;\n    }\n    addBlock(block) {\n        this.enterLine();\n        let deco = block.deco;\n        if (deco && deco.startSide > 0 && !this.isCovered)\n            this.ensureLine();\n        this.nodes.push(block);\n        this.writtenTo = this.pos = this.pos + block.length;\n        if (deco && deco.endSide > 0)\n            this.covering = block;\n    }\n    addLineDeco(height, breaks, length) {\n        let line = this.ensureLine();\n        line.length += length;\n        line.collapsed += length;\n        line.widgetHeight = Math.max(line.widgetHeight, height);\n        line.breaks += breaks;\n        this.writtenTo = this.pos = this.pos + length;\n    }\n    finish(from) {\n        let last = this.nodes.length == 0 ? null : this.nodes[this.nodes.length - 1];\n        if (this.lineStart > -1 && !(last instanceof HeightMapText) && !this.isCovered)\n            this.nodes.push(new HeightMapText(0, -1));\n        else if (this.writtenTo < this.pos || last == null)\n            this.nodes.push(this.blankContent(this.writtenTo, this.pos));\n        let pos = from;\n        for (let node of this.nodes) {\n            if (node instanceof HeightMapText)\n                node.updateHeight(this.oracle, pos);\n            pos += node ? node.length : 1;\n        }\n        return this.nodes;\n    }\n    // Always called with a region that on both sides either stretches\n    // to a line break or the end of the document.\n    // The returned array uses null to indicate line breaks, but never\n    // starts or ends in a line break, or has multiple line breaks next\n    // to each other.\n    static build(oracle, decorations, from, to) {\n        let builder = new NodeBuilder(from, oracle);\n        RangeSet.spans(decorations, from, to, builder, 0);\n        return builder.finish(from);\n    }\n}\nfunction heightRelevantDecoChanges(a, b, diff) {\n    let comp = new DecorationComparator;\n    RangeSet.compare(a, b, diff, comp, 0);\n    return comp.changes;\n}\nclass DecorationComparator {\n    constructor() {\n        this.changes = [];\n    }\n    compareRange() { }\n    comparePoint(from, to, a, b) {\n        if (from < to || a && a.heightRelevant || b && b.heightRelevant)\n            addRange(from, to, this.changes, 5);\n    }\n}\n\nfunction visiblePixelRange(dom, paddingTop) {\n    let rect = dom.getBoundingClientRect();\n    let doc = dom.ownerDocument, win = doc.defaultView || window;\n    let left = Math.max(0, rect.left), right = Math.min(win.innerWidth, rect.right);\n    let top = Math.max(0, rect.top), bottom = Math.min(win.innerHeight, rect.bottom);\n    for (let parent = dom.parentNode; parent && parent != doc.body;) {\n        if (parent.nodeType == 1) {\n            let elt = parent;\n            let style = window.getComputedStyle(elt);\n            if ((elt.scrollHeight > elt.clientHeight || elt.scrollWidth > elt.clientWidth) &&\n                style.overflow != \"visible\") {\n                let parentRect = elt.getBoundingClientRect();\n                left = Math.max(left, parentRect.left);\n                right = Math.min(right, parentRect.right);\n                top = Math.max(top, parentRect.top);\n                bottom = Math.min(parent == dom.parentNode ? win.innerHeight : bottom, parentRect.bottom);\n            }\n            parent = style.position == \"absolute\" || style.position == \"fixed\" ? elt.offsetParent : elt.parentNode;\n        }\n        else if (parent.nodeType == 11) { // Shadow root\n            parent = parent.host;\n        }\n        else {\n            break;\n        }\n    }\n    return { left: left - rect.left, right: Math.max(left, right) - rect.left,\n        top: top - (rect.top + paddingTop), bottom: Math.max(top, bottom) - (rect.top + paddingTop) };\n}\nfunction fullPixelRange(dom, paddingTop) {\n    let rect = dom.getBoundingClientRect();\n    return { left: 0, right: rect.right - rect.left,\n        top: paddingTop, bottom: rect.bottom - (rect.top + paddingTop) };\n}\n// Line gaps are placeholder widgets used to hide pieces of overlong\n// lines within the viewport, as a kludge to keep the editor\n// responsive when a ridiculously long line is loaded into it.\nclass LineGap {\n    constructor(from, to, size) {\n        this.from = from;\n        this.to = to;\n        this.size = size;\n    }\n    static same(a, b) {\n        if (a.length != b.length)\n            return false;\n        for (let i = 0; i < a.length; i++) {\n            let gA = a[i], gB = b[i];\n            if (gA.from != gB.from || gA.to != gB.to || gA.size != gB.size)\n                return false;\n        }\n        return true;\n    }\n    draw(viewState, wrapping) {\n        return Decoration.replace({\n            widget: new LineGapWidget(this.size * (wrapping ? viewState.scaleY : viewState.scaleX), wrapping)\n        }).range(this.from, this.to);\n    }\n}\nclass LineGapWidget extends WidgetType {\n    constructor(size, vertical) {\n        super();\n        this.size = size;\n        this.vertical = vertical;\n    }\n    eq(other) { return other.size == this.size && other.vertical == this.vertical; }\n    toDOM() {\n        let elt = document.createElement(\"div\");\n        if (this.vertical) {\n            elt.style.height = this.size + \"px\";\n        }\n        else {\n            elt.style.width = this.size + \"px\";\n            elt.style.height = \"2px\";\n            elt.style.display = \"inline-block\";\n        }\n        return elt;\n    }\n    get estimatedHeight() { return this.vertical ? this.size : -1; }\n}\nclass ViewState {\n    constructor(state) {\n        this.state = state;\n        // These are contentDOM-local coordinates\n        this.pixelViewport = { left: 0, right: window.innerWidth, top: 0, bottom: 0 };\n        this.inView = true;\n        this.paddingTop = 0; // Padding above the document, scaled\n        this.paddingBottom = 0; // Padding below the document, scaled\n        this.contentDOMWidth = 0; // contentDOM.getBoundingClientRect().width\n        this.contentDOMHeight = 0; // contentDOM.getBoundingClientRect().height\n        this.editorHeight = 0; // scrollDOM.clientHeight, unscaled\n        this.editorWidth = 0; // scrollDOM.clientWidth, unscaled\n        this.scrollTop = 0; // Last seen scrollDOM.scrollTop, scaled\n        this.scrolledToBottom = false;\n        // The CSS-transformation scale of the editor (transformed size /\n        // concrete size)\n        this.scaleX = 1;\n        this.scaleY = 1;\n        // The vertical position (document-relative) to which to anchor the\n        // scroll position. -1 means anchor to the end of the document.\n        this.scrollAnchorPos = 0;\n        // The height at the anchor position. Set by the DOM update phase.\n        // -1 means no height available.\n        this.scrollAnchorHeight = -1;\n        // See VP.MaxDOMHeight\n        this.scaler = IdScaler;\n        this.scrollTarget = null;\n        // Briefly set to true when printing, to disable viewport limiting\n        this.printing = false;\n        // Flag set when editor content was redrawn, so that the next\n        // measure stage knows it must read DOM layout\n        this.mustMeasureContent = true;\n        this.defaultTextDirection = Direction.LTR;\n        this.visibleRanges = [];\n        // Cursor 'assoc' is only significant when the cursor is on a line\n        // wrap point, where it must stick to the character that it is\n        // associated with. Since browsers don't provide a reasonable\n        // interface to set or query this, when a selection is set that\n        // might cause this to be significant, this flag is set. The next\n        // measure phase will check whether the cursor is on a line-wrapping\n        // boundary and, if so, reset it to make sure it is positioned in\n        // the right place.\n        this.mustEnforceCursorAssoc = false;\n        let guessWrapping = state.facet(contentAttributes).some(v => typeof v != \"function\" && v.class == \"cm-lineWrapping\");\n        this.heightOracle = new HeightOracle(guessWrapping);\n        this.stateDeco = state.facet(decorations).filter(d => typeof d != \"function\");\n        this.heightMap = HeightMap.empty().applyChanges(this.stateDeco, Text.empty, this.heightOracle.setDoc(state.doc), [new ChangedRange(0, 0, 0, state.doc.length)]);\n        for (let i = 0; i < 2; i++) {\n            this.viewport = this.getViewport(0, null);\n            if (!this.updateForViewport())\n                break;\n        }\n        this.updateViewportLines();\n        this.lineGaps = this.ensureLineGaps([]);\n        this.lineGapDeco = Decoration.set(this.lineGaps.map(gap => gap.draw(this, false)));\n        this.computeVisibleRanges();\n    }\n    updateForViewport() {\n        let viewports = [this.viewport], { main } = this.state.selection;\n        for (let i = 0; i <= 1; i++) {\n            let pos = i ? main.head : main.anchor;\n            if (!viewports.some(({ from, to }) => pos >= from && pos <= to)) {\n                let { from, to } = this.lineBlockAt(pos);\n                viewports.push(new Viewport(from, to));\n            }\n        }\n        this.viewports = viewports.sort((a, b) => a.from - b.from);\n        return this.updateScaler();\n    }\n    updateScaler() {\n        let scaler = this.scaler;\n        this.scaler = this.heightMap.height <= 7000000 /* VP.MaxDOMHeight */ ? IdScaler :\n            new BigScaler(this.heightOracle, this.heightMap, this.viewports);\n        return scaler.eq(this.scaler) ? 0 : 2 /* UpdateFlag.Height */;\n    }\n    updateViewportLines() {\n        this.viewportLines = [];\n        this.heightMap.forEachLine(this.viewport.from, this.viewport.to, this.heightOracle.setDoc(this.state.doc), 0, 0, block => {\n            this.viewportLines.push(scaleBlock(block, this.scaler));\n        });\n    }\n    update(update, scrollTarget = null) {\n        this.state = update.state;\n        let prevDeco = this.stateDeco;\n        this.stateDeco = this.state.facet(decorations).filter(d => typeof d != \"function\");\n        let contentChanges = update.changedRanges;\n        let heightChanges = ChangedRange.extendWithRanges(contentChanges, heightRelevantDecoChanges(prevDeco, this.stateDeco, update ? update.changes : ChangeSet.empty(this.state.doc.length)));\n        let prevHeight = this.heightMap.height;\n        let scrollAnchor = this.scrolledToBottom ? null : this.scrollAnchorAt(this.scrollTop);\n        clearHeightChangeFlag();\n        this.heightMap = this.heightMap.applyChanges(this.stateDeco, update.startState.doc, this.heightOracle.setDoc(this.state.doc), heightChanges);\n        if (this.heightMap.height != prevHeight || heightChangeFlag)\n            update.flags |= 2 /* UpdateFlag.Height */;\n        if (scrollAnchor) {\n            this.scrollAnchorPos = update.changes.mapPos(scrollAnchor.from, -1);\n            this.scrollAnchorHeight = scrollAnchor.top;\n        }\n        else {\n            this.scrollAnchorPos = -1;\n            this.scrollAnchorHeight = this.heightMap.height;\n        }\n        let viewport = heightChanges.length ? this.mapViewport(this.viewport, update.changes) : this.viewport;\n        if (scrollTarget && (scrollTarget.range.head < viewport.from || scrollTarget.range.head > viewport.to) ||\n            !this.viewportIsAppropriate(viewport))\n            viewport = this.getViewport(0, scrollTarget);\n        let viewportChange = viewport.from != this.viewport.from || viewport.to != this.viewport.to;\n        this.viewport = viewport;\n        update.flags |= this.updateForViewport();\n        if (viewportChange || !update.changes.empty || (update.flags & 2 /* UpdateFlag.Height */))\n            this.updateViewportLines();\n        if (this.lineGaps.length || this.viewport.to - this.viewport.from > (2000 /* LG.Margin */ << 1))\n            this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps, update.changes)));\n        update.flags |= this.computeVisibleRanges();\n        if (scrollTarget)\n            this.scrollTarget = scrollTarget;\n        if (!this.mustEnforceCursorAssoc && update.selectionSet && update.view.lineWrapping &&\n            update.state.selection.main.empty && update.state.selection.main.assoc &&\n            !update.state.facet(nativeSelectionHidden))\n            this.mustEnforceCursorAssoc = true;\n    }\n    measure(view) {\n        let dom = view.contentDOM, style = window.getComputedStyle(dom);\n        let oracle = this.heightOracle;\n        let whiteSpace = style.whiteSpace;\n        this.defaultTextDirection = style.direction == \"rtl\" ? Direction.RTL : Direction.LTR;\n        let refresh = this.heightOracle.mustRefreshForWrapping(whiteSpace);\n        let domRect = dom.getBoundingClientRect();\n        let measureContent = refresh || this.mustMeasureContent || this.contentDOMHeight != domRect.height;\n        this.contentDOMHeight = domRect.height;\n        this.mustMeasureContent = false;\n        let result = 0, bias = 0;\n        if (domRect.width && domRect.height) {\n            let { scaleX, scaleY } = getScale(dom, domRect);\n            if (scaleX > .005 && Math.abs(this.scaleX - scaleX) > .005 ||\n                scaleY > .005 && Math.abs(this.scaleY - scaleY) > .005) {\n                this.scaleX = scaleX;\n                this.scaleY = scaleY;\n                result |= 8 /* UpdateFlag.Geometry */;\n                refresh = measureContent = true;\n            }\n        }\n        // Vertical padding\n        let paddingTop = (parseInt(style.paddingTop) || 0) * this.scaleY;\n        let paddingBottom = (parseInt(style.paddingBottom) || 0) * this.scaleY;\n        if (this.paddingTop != paddingTop || this.paddingBottom != paddingBottom) {\n            this.paddingTop = paddingTop;\n            this.paddingBottom = paddingBottom;\n            result |= 8 /* UpdateFlag.Geometry */ | 2 /* UpdateFlag.Height */;\n        }\n        if (this.editorWidth != view.scrollDOM.clientWidth) {\n            if (oracle.lineWrapping)\n                measureContent = true;\n            this.editorWidth = view.scrollDOM.clientWidth;\n            result |= 8 /* UpdateFlag.Geometry */;\n        }\n        let scrollTop = view.scrollDOM.scrollTop * this.scaleY;\n        if (this.scrollTop != scrollTop) {\n            this.scrollAnchorHeight = -1;\n            this.scrollTop = scrollTop;\n        }\n        this.scrolledToBottom = isScrolledToBottom(view.scrollDOM);\n        // Pixel viewport\n        let pixelViewport = (this.printing ? fullPixelRange : visiblePixelRange)(dom, this.paddingTop);\n        let dTop = pixelViewport.top - this.pixelViewport.top, dBottom = pixelViewport.bottom - this.pixelViewport.bottom;\n        this.pixelViewport = pixelViewport;\n        let inView = this.pixelViewport.bottom > this.pixelViewport.top && this.pixelViewport.right > this.pixelViewport.left;\n        if (inView != this.inView) {\n            this.inView = inView;\n            if (inView)\n                measureContent = true;\n        }\n        if (!this.inView && !this.scrollTarget)\n            return 0;\n        let contentWidth = domRect.width;\n        if (this.contentDOMWidth != contentWidth || this.editorHeight != view.scrollDOM.clientHeight) {\n            this.contentDOMWidth = domRect.width;\n            this.editorHeight = view.scrollDOM.clientHeight;\n            result |= 8 /* UpdateFlag.Geometry */;\n        }\n        if (measureContent) {\n            let lineHeights = view.docView.measureVisibleLineHeights(this.viewport);\n            if (oracle.mustRefreshForHeights(lineHeights))\n                refresh = true;\n            if (refresh || oracle.lineWrapping && Math.abs(contentWidth - this.contentDOMWidth) > oracle.charWidth) {\n                let { lineHeight, charWidth, textHeight } = view.docView.measureTextSize();\n                refresh = lineHeight > 0 && oracle.refresh(whiteSpace, lineHeight, charWidth, textHeight, contentWidth / charWidth, lineHeights);\n                if (refresh) {\n                    view.docView.minWidth = 0;\n                    result |= 8 /* UpdateFlag.Geometry */;\n                }\n            }\n            if (dTop > 0 && dBottom > 0)\n                bias = Math.max(dTop, dBottom);\n            else if (dTop < 0 && dBottom < 0)\n                bias = Math.min(dTop, dBottom);\n            clearHeightChangeFlag();\n            for (let vp of this.viewports) {\n                let heights = vp.from == this.viewport.from ? lineHeights : view.docView.measureVisibleLineHeights(vp);\n                this.heightMap = (refresh ? HeightMap.empty().applyChanges(this.stateDeco, Text.empty, this.heightOracle, [new ChangedRange(0, 0, 0, view.state.doc.length)]) : this.heightMap).updateHeight(oracle, 0, refresh, new MeasuredHeights(vp.from, heights));\n            }\n            if (heightChangeFlag)\n                result |= 2 /* UpdateFlag.Height */;\n        }\n        let viewportChange = !this.viewportIsAppropriate(this.viewport, bias) ||\n            this.scrollTarget && (this.scrollTarget.range.head < this.viewport.from ||\n                this.scrollTarget.range.head > this.viewport.to);\n        if (viewportChange) {\n            if (result & 2 /* UpdateFlag.Height */)\n                result |= this.updateScaler();\n            this.viewport = this.getViewport(bias, this.scrollTarget);\n            result |= this.updateForViewport();\n        }\n        if ((result & 2 /* UpdateFlag.Height */) || viewportChange)\n            this.updateViewportLines();\n        if (this.lineGaps.length || this.viewport.to - this.viewport.from > (2000 /* LG.Margin */ << 1))\n            this.updateLineGaps(this.ensureLineGaps(refresh ? [] : this.lineGaps, view));\n        result |= this.computeVisibleRanges();\n        if (this.mustEnforceCursorAssoc) {\n            this.mustEnforceCursorAssoc = false;\n            // This is done in the read stage, because moving the selection\n            // to a line end is going to trigger a layout anyway, so it\n            // can't be a pure write. It should be rare that it does any\n            // writing.\n            view.docView.enforceCursorAssoc();\n        }\n        return result;\n    }\n    get visibleTop() { return this.scaler.fromDOM(this.pixelViewport.top); }\n    get visibleBottom() { return this.scaler.fromDOM(this.pixelViewport.bottom); }\n    getViewport(bias, scrollTarget) {\n        // This will divide VP.Margin between the top and the\n        // bottom, depending on the bias (the change in viewport position\n        // since the last update). It'll hold a number between 0 and 1\n        let marginTop = 0.5 - Math.max(-0.5, Math.min(0.5, bias / 1000 /* VP.Margin */ / 2));\n        let map = this.heightMap, oracle = this.heightOracle;\n        let { visibleTop, visibleBottom } = this;\n        let viewport = new Viewport(map.lineAt(visibleTop - marginTop * 1000 /* VP.Margin */, QueryType.ByHeight, oracle, 0, 0).from, map.lineAt(visibleBottom + (1 - marginTop) * 1000 /* VP.Margin */, QueryType.ByHeight, oracle, 0, 0).to);\n        // If scrollTarget is given, make sure the viewport includes that position\n        if (scrollTarget) {\n            let { head } = scrollTarget.range;\n            if (head < viewport.from || head > viewport.to) {\n                let viewHeight = Math.min(this.editorHeight, this.pixelViewport.bottom - this.pixelViewport.top);\n                let block = map.lineAt(head, QueryType.ByPos, oracle, 0, 0), topPos;\n                if (scrollTarget.y == \"center\")\n                    topPos = (block.top + block.bottom) / 2 - viewHeight / 2;\n                else if (scrollTarget.y == \"start\" || scrollTarget.y == \"nearest\" && head < viewport.from)\n                    topPos = block.top;\n                else\n                    topPos = block.bottom - viewHeight;\n                viewport = new Viewport(map.lineAt(topPos - 1000 /* VP.Margin */ / 2, QueryType.ByHeight, oracle, 0, 0).from, map.lineAt(topPos + viewHeight + 1000 /* VP.Margin */ / 2, QueryType.ByHeight, oracle, 0, 0).to);\n            }\n        }\n        return viewport;\n    }\n    mapViewport(viewport, changes) {\n        let from = changes.mapPos(viewport.from, -1), to = changes.mapPos(viewport.to, 1);\n        return new Viewport(this.heightMap.lineAt(from, QueryType.ByPos, this.heightOracle, 0, 0).from, this.heightMap.lineAt(to, QueryType.ByPos, this.heightOracle, 0, 0).to);\n    }\n    // Checks if a given viewport covers the visible part of the\n    // document and not too much beyond that.\n    viewportIsAppropriate({ from, to }, bias = 0) {\n        if (!this.inView)\n            return true;\n        let { top } = this.heightMap.lineAt(from, QueryType.ByPos, this.heightOracle, 0, 0);\n        let { bottom } = this.heightMap.lineAt(to, QueryType.ByPos, this.heightOracle, 0, 0);\n        let { visibleTop, visibleBottom } = this;\n        return (from == 0 || top <= visibleTop - Math.max(10 /* VP.MinCoverMargin */, Math.min(-bias, 250 /* VP.MaxCoverMargin */))) &&\n            (to == this.state.doc.length ||\n                bottom >= visibleBottom + Math.max(10 /* VP.MinCoverMargin */, Math.min(bias, 250 /* VP.MaxCoverMargin */))) &&\n            (top > visibleTop - 2 * 1000 /* VP.Margin */ && bottom < visibleBottom + 2 * 1000 /* VP.Margin */);\n    }\n    mapLineGaps(gaps, changes) {\n        if (!gaps.length || changes.empty)\n            return gaps;\n        let mapped = [];\n        for (let gap of gaps)\n            if (!changes.touchesRange(gap.from, gap.to))\n                mapped.push(new LineGap(changes.mapPos(gap.from), changes.mapPos(gap.to), gap.size));\n        return mapped;\n    }\n    // Computes positions in the viewport where the start or end of a\n    // line should be hidden, trying to reuse existing line gaps when\n    // appropriate to avoid unneccesary redraws.\n    // Uses crude character-counting for the positioning and sizing,\n    // since actual DOM coordinates aren't always available and\n    // predictable. Relies on generous margins (see LG.Margin) to hide\n    // the artifacts this might produce from the user.\n    ensureLineGaps(current, mayMeasure) {\n        let wrapping = this.heightOracle.lineWrapping;\n        let margin = wrapping ? 10000 /* LG.MarginWrap */ : 2000 /* LG.Margin */, halfMargin = margin >> 1, doubleMargin = margin << 1;\n        // The non-wrapping logic won't work at all in predominantly right-to-left text.\n        if (this.defaultTextDirection != Direction.LTR && !wrapping)\n            return [];\n        let gaps = [];\n        let addGap = (from, to, line, structure) => {\n            if (to - from < halfMargin)\n                return;\n            let sel = this.state.selection.main, avoid = [sel.from];\n            if (!sel.empty)\n                avoid.push(sel.to);\n            for (let pos of avoid) {\n                if (pos > from && pos < to) {\n                    addGap(from, pos - 10 /* LG.SelectionMargin */, line, structure);\n                    addGap(pos + 10 /* LG.SelectionMargin */, to, line, structure);\n                    return;\n                }\n            }\n            let gap = find(current, gap => gap.from >= line.from && gap.to <= line.to &&\n                Math.abs(gap.from - from) < halfMargin && Math.abs(gap.to - to) < halfMargin &&\n                !avoid.some(pos => gap.from < pos && gap.to > pos));\n            if (!gap) {\n                // When scrolling down, snap gap ends to line starts to avoid shifts in wrapping\n                if (to < line.to && mayMeasure && wrapping &&\n                    mayMeasure.visibleRanges.some(r => r.from <= to && r.to >= to)) {\n                    let lineStart = mayMeasure.moveToLineBoundary(EditorSelection.cursor(to), false, true).head;\n                    if (lineStart > from)\n                        to = lineStart;\n                }\n                gap = new LineGap(from, to, this.gapSize(line, from, to, structure));\n            }\n            gaps.push(gap);\n        };\n        let checkLine = (line) => {\n            if (line.length < doubleMargin || line.type != BlockType.Text)\n                return;\n            let structure = lineStructure(line.from, line.to, this.stateDeco);\n            if (structure.total < doubleMargin)\n                return;\n            let target = this.scrollTarget ? this.scrollTarget.range.head : null;\n            let viewFrom, viewTo;\n            if (wrapping) {\n                let marginHeight = (margin / this.heightOracle.lineLength) * this.heightOracle.lineHeight;\n                let top, bot;\n                if (target != null) {\n                    let targetFrac = findFraction(structure, target);\n                    let spaceFrac = ((this.visibleBottom - this.visibleTop) / 2 + marginHeight) / line.height;\n                    top = targetFrac - spaceFrac;\n                    bot = targetFrac + spaceFrac;\n                }\n                else {\n                    top = (this.visibleTop - line.top - marginHeight) / line.height;\n                    bot = (this.visibleBottom - line.top + marginHeight) / line.height;\n                }\n                viewFrom = findPosition(structure, top);\n                viewTo = findPosition(structure, bot);\n            }\n            else {\n                let totalWidth = structure.total * this.heightOracle.charWidth;\n                let marginWidth = margin * this.heightOracle.charWidth;\n                let left, right;\n                if (target != null) {\n                    let targetFrac = findFraction(structure, target);\n                    let spaceFrac = ((this.pixelViewport.right - this.pixelViewport.left) / 2 + marginWidth) / totalWidth;\n                    left = targetFrac - spaceFrac;\n                    right = targetFrac + spaceFrac;\n                }\n                else {\n                    left = (this.pixelViewport.left - marginWidth) / totalWidth;\n                    right = (this.pixelViewport.right + marginWidth) / totalWidth;\n                }\n                viewFrom = findPosition(structure, left);\n                viewTo = findPosition(structure, right);\n            }\n            if (viewFrom > line.from)\n                addGap(line.from, viewFrom, line, structure);\n            if (viewTo < line.to)\n                addGap(viewTo, line.to, line, structure);\n        };\n        for (let line of this.viewportLines) {\n            if (Array.isArray(line.type))\n                line.type.forEach(checkLine);\n            else\n                checkLine(line);\n        }\n        return gaps;\n    }\n    gapSize(line, from, to, structure) {\n        let fraction = findFraction(structure, to) - findFraction(structure, from);\n        if (this.heightOracle.lineWrapping) {\n            return line.height * fraction;\n        }\n        else {\n            return structure.total * this.heightOracle.charWidth * fraction;\n        }\n    }\n    updateLineGaps(gaps) {\n        if (!LineGap.same(gaps, this.lineGaps)) {\n            this.lineGaps = gaps;\n            this.lineGapDeco = Decoration.set(gaps.map(gap => gap.draw(this, this.heightOracle.lineWrapping)));\n        }\n    }\n    computeVisibleRanges() {\n        let deco = this.stateDeco;\n        if (this.lineGaps.length)\n            deco = deco.concat(this.lineGapDeco);\n        let ranges = [];\n        RangeSet.spans(deco, this.viewport.from, this.viewport.to, {\n            span(from, to) { ranges.push({ from, to }); },\n            point() { }\n        }, 20);\n        let changed = ranges.length != this.visibleRanges.length ||\n            this.visibleRanges.some((r, i) => r.from != ranges[i].from || r.to != ranges[i].to);\n        this.visibleRanges = ranges;\n        return changed ? 4 /* UpdateFlag.Viewport */ : 0;\n    }\n    lineBlockAt(pos) {\n        return (pos >= this.viewport.from && pos <= this.viewport.to &&\n            this.viewportLines.find(b => b.from <= pos && b.to >= pos)) ||\n            scaleBlock(this.heightMap.lineAt(pos, QueryType.ByPos, this.heightOracle, 0, 0), this.scaler);\n    }\n    lineBlockAtHeight(height) {\n        return (height >= this.viewportLines[0].top && height <= this.viewportLines[this.viewportLines.length - 1].bottom &&\n            this.viewportLines.find(l => l.top <= height && l.bottom >= height)) ||\n            scaleBlock(this.heightMap.lineAt(this.scaler.fromDOM(height), QueryType.ByHeight, this.heightOracle, 0, 0), this.scaler);\n    }\n    scrollAnchorAt(scrollTop) {\n        let block = this.lineBlockAtHeight(scrollTop + 8);\n        return block.from >= this.viewport.from || this.viewportLines[0].top - scrollTop > 200 ? block : this.viewportLines[0];\n    }\n    elementAtHeight(height) {\n        return scaleBlock(this.heightMap.blockAt(this.scaler.fromDOM(height), this.heightOracle, 0, 0), this.scaler);\n    }\n    get docHeight() {\n        return this.scaler.toDOM(this.heightMap.height);\n    }\n    get contentHeight() {\n        return this.docHeight + this.paddingTop + this.paddingBottom;\n    }\n}\nclass Viewport {\n    constructor(from, to) {\n        this.from = from;\n        this.to = to;\n    }\n}\nfunction lineStructure(from, to, stateDeco) {\n    let ranges = [], pos = from, total = 0;\n    RangeSet.spans(stateDeco, from, to, {\n        span() { },\n        point(from, to) {\n            if (from > pos) {\n                ranges.push({ from: pos, to: from });\n                total += from - pos;\n            }\n            pos = to;\n        }\n    }, 20); // We're only interested in collapsed ranges of a significant size\n    if (pos < to) {\n        ranges.push({ from: pos, to });\n        total += to - pos;\n    }\n    return { total, ranges };\n}\nfunction findPosition({ total, ranges }, ratio) {\n    if (ratio <= 0)\n        return ranges[0].from;\n    if (ratio >= 1)\n        return ranges[ranges.length - 1].to;\n    let dist = Math.floor(total * ratio);\n    for (let i = 0;; i++) {\n        let { from, to } = ranges[i], size = to - from;\n        if (dist <= size)\n            return from + dist;\n        dist -= size;\n    }\n}\nfunction findFraction(structure, pos) {\n    let counted = 0;\n    for (let { from, to } of structure.ranges) {\n        if (pos <= to) {\n            counted += pos - from;\n            break;\n        }\n        counted += to - from;\n    }\n    return counted / structure.total;\n}\nfunction find(array, f) {\n    for (let val of array)\n        if (f(val))\n            return val;\n    return undefined;\n}\n// Don't scale when the document height is within the range of what\n// the DOM can handle.\nconst IdScaler = {\n    toDOM(n) { return n; },\n    fromDOM(n) { return n; },\n    scale: 1,\n    eq(other) { return other == this; }\n};\n// When the height is too big (> VP.MaxDOMHeight), scale down the\n// regions outside the viewports so that the total height is\n// VP.MaxDOMHeight.\nclass BigScaler {\n    constructor(oracle, heightMap, viewports) {\n        let vpHeight = 0, base = 0, domBase = 0;\n        this.viewports = viewports.map(({ from, to }) => {\n            let top = heightMap.lineAt(from, QueryType.ByPos, oracle, 0, 0).top;\n            let bottom = heightMap.lineAt(to, QueryType.ByPos, oracle, 0, 0).bottom;\n            vpHeight += bottom - top;\n            return { from, to, top, bottom, domTop: 0, domBottom: 0 };\n        });\n        this.scale = (7000000 /* VP.MaxDOMHeight */ - vpHeight) / (heightMap.height - vpHeight);\n        for (let obj of this.viewports) {\n            obj.domTop = domBase + (obj.top - base) * this.scale;\n            domBase = obj.domBottom = obj.domTop + (obj.bottom - obj.top);\n            base = obj.bottom;\n        }\n    }\n    toDOM(n) {\n        for (let i = 0, base = 0, domBase = 0;; i++) {\n            let vp = i < this.viewports.length ? this.viewports[i] : null;\n            if (!vp || n < vp.top)\n                return domBase + (n - base) * this.scale;\n            if (n <= vp.bottom)\n                return vp.domTop + (n - vp.top);\n            base = vp.bottom;\n            domBase = vp.domBottom;\n        }\n    }\n    fromDOM(n) {\n        for (let i = 0, base = 0, domBase = 0;; i++) {\n            let vp = i < this.viewports.length ? this.viewports[i] : null;\n            if (!vp || n < vp.domTop)\n                return base + (n - domBase) / this.scale;\n            if (n <= vp.domBottom)\n                return vp.top + (n - vp.domTop);\n            base = vp.bottom;\n            domBase = vp.domBottom;\n        }\n    }\n    eq(other) {\n        if (!(other instanceof BigScaler))\n            return false;\n        return this.scale == other.scale && this.viewports.length == other.viewports.length &&\n            this.viewports.every((vp, i) => vp.from == other.viewports[i].from && vp.to == other.viewports[i].to);\n    }\n}\nfunction scaleBlock(block, scaler) {\n    if (scaler.scale == 1)\n        return block;\n    let bTop = scaler.toDOM(block.top), bBottom = scaler.toDOM(block.bottom);\n    return new BlockInfo(block.from, block.length, bTop, bBottom - bTop, Array.isArray(block._content) ? block._content.map(b => scaleBlock(b, scaler)) : block._content);\n}\n\nconst theme = /*@__PURE__*/Facet.define({ combine: strs => strs.join(\" \") });\nconst darkTheme = /*@__PURE__*/Facet.define({ combine: values => values.indexOf(true) > -1 });\nconst baseThemeID = /*@__PURE__*/StyleModule.newName(), baseLightID = /*@__PURE__*/StyleModule.newName(), baseDarkID = /*@__PURE__*/StyleModule.newName();\nconst lightDarkIDs = { \"&light\": \".\" + baseLightID, \"&dark\": \".\" + baseDarkID };\nfunction buildTheme(main, spec, scopes) {\n    return new StyleModule(spec, {\n        finish(sel) {\n            return /&/.test(sel) ? sel.replace(/&\\w*/, m => {\n                if (m == \"&\")\n                    return main;\n                if (!scopes || !scopes[m])\n                    throw new RangeError(`Unsupported selector: ${m}`);\n                return scopes[m];\n            }) : main + \" \" + sel;\n        }\n    });\n}\nconst baseTheme$1 = /*@__PURE__*/buildTheme(\".\" + baseThemeID, {\n    \"&\": {\n        position: \"relative !important\",\n        boxSizing: \"border-box\",\n        \"&.cm-focused\": {\n            // Provide a simple default outline to make sure a focused\n            // editor is visually distinct. Can't leave the default behavior\n            // because that will apply to the content element, which is\n            // inside the scrollable container and doesn't include the\n            // gutters. We also can't use an 'auto' outline, since those\n            // are, for some reason, drawn behind the element content, which\n            // will cause things like the active line background to cover\n            // the outline (#297).\n            outline: \"1px dotted #212121\"\n        },\n        display: \"flex !important\",\n        flexDirection: \"column\"\n    },\n    \".cm-scroller\": {\n        display: \"flex !important\",\n        alignItems: \"flex-start !important\",\n        fontFamily: \"monospace\",\n        lineHeight: 1.4,\n        height: \"100%\",\n        overflowX: \"auto\",\n        position: \"relative\",\n        zIndex: 0,\n        overflowAnchor: \"none\",\n    },\n    \".cm-content\": {\n        margin: 0,\n        flexGrow: 2,\n        flexShrink: 0,\n        display: \"block\",\n        whiteSpace: \"pre\",\n        wordWrap: \"normal\", // https://github.com/codemirror/dev/issues/456\n        boxSizing: \"border-box\",\n        minHeight: \"100%\",\n        padding: \"4px 0\",\n        outline: \"none\",\n        \"&[contenteditable=true]\": {\n            WebkitUserModify: \"read-write-plaintext-only\",\n        }\n    },\n    \".cm-lineWrapping\": {\n        whiteSpace_fallback: \"pre-wrap\", // For IE\n        whiteSpace: \"break-spaces\",\n        wordBreak: \"break-word\", // For Safari, which doesn't support overflow-wrap: anywhere\n        overflowWrap: \"anywhere\",\n        flexShrink: 1\n    },\n    \"&light .cm-content\": { caretColor: \"black\" },\n    \"&dark .cm-content\": { caretColor: \"white\" },\n    \".cm-line\": {\n        display: \"block\",\n        padding: \"0 2px 0 6px\"\n    },\n    \".cm-layer\": {\n        position: \"absolute\",\n        left: 0,\n        top: 0,\n        contain: \"size style\",\n        \"& > *\": {\n            position: \"absolute\"\n        }\n    },\n    \"&light .cm-selectionBackground\": {\n        background: \"#d9d9d9\"\n    },\n    \"&dark .cm-selectionBackground\": {\n        background: \"#222\"\n    },\n    \"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\": {\n        background: \"#d7d4f0\"\n    },\n    \"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground\": {\n        background: \"#233\"\n    },\n    \".cm-cursorLayer\": {\n        pointerEvents: \"none\"\n    },\n    \"&.cm-focused > .cm-scroller > .cm-cursorLayer\": {\n        animation: \"steps(1) cm-blink 1.2s infinite\"\n    },\n    // Two animations defined so that we can switch between them to\n    // restart the animation without forcing another style\n    // recomputation.\n    \"@keyframes cm-blink\": { \"0%\": {}, \"50%\": { opacity: 0 }, \"100%\": {} },\n    \"@keyframes cm-blink2\": { \"0%\": {}, \"50%\": { opacity: 0 }, \"100%\": {} },\n    \".cm-cursor, .cm-dropCursor\": {\n        borderLeft: \"1.2px solid black\",\n        marginLeft: \"-0.6px\",\n        pointerEvents: \"none\",\n    },\n    \".cm-cursor\": {\n        display: \"none\"\n    },\n    \"&dark .cm-cursor\": {\n        borderLeftColor: \"#444\"\n    },\n    \".cm-dropCursor\": {\n        position: \"absolute\"\n    },\n    \"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor\": {\n        display: \"block\"\n    },\n    \".cm-iso\": {\n        unicodeBidi: \"isolate\"\n    },\n    \".cm-announced\": {\n        position: \"fixed\",\n        top: \"-10000px\"\n    },\n    \"@media print\": {\n        \".cm-announced\": { display: \"none\" }\n    },\n    \"&light .cm-activeLine\": { backgroundColor: \"#cceeff44\" },\n    \"&dark .cm-activeLine\": { backgroundColor: \"#99eeff33\" },\n    \"&light .cm-specialChar\": { color: \"red\" },\n    \"&dark .cm-specialChar\": { color: \"#f78\" },\n    \".cm-gutters\": {\n        flexShrink: 0,\n        display: \"flex\",\n        height: \"100%\",\n        boxSizing: \"border-box\",\n        insetInlineStart: 0,\n        zIndex: 200\n    },\n    \"&light .cm-gutters\": {\n        backgroundColor: \"#f5f5f5\",\n        color: \"#6c6c6c\",\n        borderRight: \"1px solid #ddd\"\n    },\n    \"&dark .cm-gutters\": {\n        backgroundColor: \"#333338\",\n        color: \"#ccc\"\n    },\n    \".cm-gutter\": {\n        display: \"flex !important\", // Necessary -- prevents margin collapsing\n        flexDirection: \"column\",\n        flexShrink: 0,\n        boxSizing: \"border-box\",\n        minHeight: \"100%\",\n        overflow: \"hidden\"\n    },\n    \".cm-gutterElement\": {\n        boxSizing: \"border-box\"\n    },\n    \".cm-lineNumbers .cm-gutterElement\": {\n        padding: \"0 3px 0 5px\",\n        minWidth: \"20px\",\n        textAlign: \"right\",\n        whiteSpace: \"nowrap\"\n    },\n    \"&light .cm-activeLineGutter\": {\n        backgroundColor: \"#e2f2ff\"\n    },\n    \"&dark .cm-activeLineGutter\": {\n        backgroundColor: \"#222227\"\n    },\n    \".cm-panels\": {\n        boxSizing: \"border-box\",\n        position: \"sticky\",\n        left: 0,\n        right: 0,\n        zIndex: 300\n    },\n    \"&light .cm-panels\": {\n        backgroundColor: \"#f5f5f5\",\n        color: \"black\"\n    },\n    \"&light .cm-panels-top\": {\n        borderBottom: \"1px solid #ddd\"\n    },\n    \"&light .cm-panels-bottom\": {\n        borderTop: \"1px solid #ddd\"\n    },\n    \"&dark .cm-panels\": {\n        backgroundColor: \"#333338\",\n        color: \"white\"\n    },\n    \".cm-tab\": {\n        display: \"inline-block\",\n        overflow: \"hidden\",\n        verticalAlign: \"bottom\"\n    },\n    \".cm-widgetBuffer\": {\n        verticalAlign: \"text-top\",\n        height: \"1em\",\n        width: 0,\n        display: \"inline\"\n    },\n    \".cm-placeholder\": {\n        color: \"#888\",\n        display: \"inline-block\",\n        verticalAlign: \"top\",\n    },\n    \".cm-highlightSpace:before\": {\n        content: \"attr(data-display)\",\n        position: \"absolute\",\n        pointerEvents: \"none\",\n        color: \"#888\"\n    },\n    \".cm-highlightTab\": {\n        backgroundImage: `url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"20\"><path stroke=\"%23888\" stroke-width=\"1\" fill=\"none\" d=\"M1 10H196L190 5M190 15L196 10M197 4L197 16\"/></svg>')`,\n        backgroundSize: \"auto 100%\",\n        backgroundPosition: \"right 90%\",\n        backgroundRepeat: \"no-repeat\"\n    },\n    \".cm-trailingSpace\": {\n        backgroundColor: \"#ff332255\"\n    },\n    \".cm-button\": {\n        verticalAlign: \"middle\",\n        color: \"inherit\",\n        fontSize: \"70%\",\n        padding: \".2em 1em\",\n        borderRadius: \"1px\"\n    },\n    \"&light .cm-button\": {\n        backgroundImage: \"linear-gradient(#eff1f5, #d9d9df)\",\n        border: \"1px solid #888\",\n        \"&:active\": {\n            backgroundImage: \"linear-gradient(#b4b4b4, #d0d3d6)\"\n        }\n    },\n    \"&dark .cm-button\": {\n        backgroundImage: \"linear-gradient(#393939, #111)\",\n        border: \"1px solid #888\",\n        \"&:active\": {\n            backgroundImage: \"linear-gradient(#111, #333)\"\n        }\n    },\n    \".cm-textfield\": {\n        verticalAlign: \"middle\",\n        color: \"inherit\",\n        fontSize: \"70%\",\n        border: \"1px solid silver\",\n        padding: \".2em .5em\"\n    },\n    \"&light .cm-textfield\": {\n        backgroundColor: \"white\"\n    },\n    \"&dark .cm-textfield\": {\n        border: \"1px solid #555\",\n        backgroundColor: \"inherit\"\n    }\n}, lightDarkIDs);\n\nconst observeOptions = {\n    childList: true,\n    characterData: true,\n    subtree: true,\n    attributes: true,\n    characterDataOldValue: true\n};\n// IE11 has very broken mutation observers, so we also listen to\n// DOMCharacterDataModified there\nconst useCharData = browser.ie && browser.ie_version <= 11;\nclass DOMObserver {\n    constructor(view) {\n        this.view = view;\n        this.active = false;\n        this.editContext = null;\n        // The known selection. Kept in our own object, as opposed to just\n        // directly accessing the selection because:\n        //  - Safari doesn't report the right selection in shadow DOM\n        //  - Reading from the selection forces a DOM layout\n        //  - This way, we can ignore selectionchange events if we have\n        //    already seen the 'new' selection\n        this.selectionRange = new DOMSelectionState;\n        // Set when a selection change is detected, cleared on flush\n        this.selectionChanged = false;\n        this.delayedFlush = -1;\n        this.resizeTimeout = -1;\n        this.queue = [];\n        this.delayedAndroidKey = null;\n        this.flushingAndroidKey = -1;\n        this.lastChange = 0;\n        this.scrollTargets = [];\n        this.intersection = null;\n        this.resizeScroll = null;\n        this.intersecting = false;\n        this.gapIntersection = null;\n        this.gaps = [];\n        this.printQuery = null;\n        // Timeout for scheduling check of the parents that need scroll handlers\n        this.parentCheck = -1;\n        this.dom = view.contentDOM;\n        this.observer = new MutationObserver(mutations => {\n            for (let mut of mutations)\n                this.queue.push(mut);\n            // IE11 will sometimes (on typing over a selection or\n            // backspacing out a single character text node) call the\n            // observer callback before actually updating the DOM.\n            //\n            // Unrelatedly, iOS Safari will, when ending a composition,\n            // sometimes first clear it, deliver the mutations, and then\n            // reinsert the finished text. CodeMirror's handling of the\n            // deletion will prevent the reinsertion from happening,\n            // breaking composition.\n            if ((browser.ie && browser.ie_version <= 11 || browser.ios && view.composing) &&\n                mutations.some(m => m.type == \"childList\" && m.removedNodes.length ||\n                    m.type == \"characterData\" && m.oldValue.length > m.target.nodeValue.length))\n                this.flushSoon();\n            else\n                this.flush();\n        });\n        if (window.EditContext && view.constructor.EDIT_CONTEXT !== false &&\n            // Chrome <126 doesn't support inverted selections in edit context (#1392)\n            !(browser.chrome && browser.chrome_version < 126)) {\n            this.editContext = new EditContextManager(view);\n            if (view.state.facet(editable))\n                view.contentDOM.editContext = this.editContext.editContext;\n        }\n        if (useCharData)\n            this.onCharData = (event) => {\n                this.queue.push({ target: event.target,\n                    type: \"characterData\",\n                    oldValue: event.prevValue });\n                this.flushSoon();\n            };\n        this.onSelectionChange = this.onSelectionChange.bind(this);\n        this.onResize = this.onResize.bind(this);\n        this.onPrint = this.onPrint.bind(this);\n        this.onScroll = this.onScroll.bind(this);\n        if (window.matchMedia)\n            this.printQuery = window.matchMedia(\"print\");\n        if (typeof ResizeObserver == \"function\") {\n            this.resizeScroll = new ResizeObserver(() => {\n                var _a;\n                if (((_a = this.view.docView) === null || _a === void 0 ? void 0 : _a.lastUpdate) < Date.now() - 75)\n                    this.onResize();\n            });\n            this.resizeScroll.observe(view.scrollDOM);\n        }\n        this.addWindowListeners(this.win = view.win);\n        this.start();\n        if (typeof IntersectionObserver == \"function\") {\n            this.intersection = new IntersectionObserver(entries => {\n                if (this.parentCheck < 0)\n                    this.parentCheck = setTimeout(this.listenForScroll.bind(this), 1000);\n                if (entries.length > 0 && (entries[entries.length - 1].intersectionRatio > 0) != this.intersecting) {\n                    this.intersecting = !this.intersecting;\n                    if (this.intersecting != this.view.inView)\n                        this.onScrollChanged(document.createEvent(\"Event\"));\n                }\n            }, { threshold: [0, .001] });\n            this.intersection.observe(this.dom);\n            this.gapIntersection = new IntersectionObserver(entries => {\n                if (entries.length > 0 && entries[entries.length - 1].intersectionRatio > 0)\n                    this.onScrollChanged(document.createEvent(\"Event\"));\n            }, {});\n        }\n        this.listenForScroll();\n        this.readSelectionRange();\n    }\n    onScrollChanged(e) {\n        this.view.inputState.runHandlers(\"scroll\", e);\n        if (this.intersecting)\n            this.view.measure();\n    }\n    onScroll(e) {\n        if (this.intersecting)\n            this.flush(false);\n        if (this.editContext)\n            this.view.requestMeasure(this.editContext.measureReq);\n        this.onScrollChanged(e);\n    }\n    onResize() {\n        if (this.resizeTimeout < 0)\n            this.resizeTimeout = setTimeout(() => {\n                this.resizeTimeout = -1;\n                this.view.requestMeasure();\n            }, 50);\n    }\n    onPrint(event) {\n        if ((event.type == \"change\" || !event.type) && !event.matches)\n            return;\n        this.view.viewState.printing = true;\n        this.view.measure();\n        setTimeout(() => {\n            this.view.viewState.printing = false;\n            this.view.requestMeasure();\n        }, 500);\n    }\n    updateGaps(gaps) {\n        if (this.gapIntersection && (gaps.length != this.gaps.length || this.gaps.some((g, i) => g != gaps[i]))) {\n            this.gapIntersection.disconnect();\n            for (let gap of gaps)\n                this.gapIntersection.observe(gap);\n            this.gaps = gaps;\n        }\n    }\n    onSelectionChange(event) {\n        let wasChanged = this.selectionChanged;\n        if (!this.readSelectionRange() || this.delayedAndroidKey)\n            return;\n        let { view } = this, sel = this.selectionRange;\n        if (view.state.facet(editable) ? view.root.activeElement != this.dom : !hasSelection(view.dom, sel))\n            return;\n        let context = sel.anchorNode && view.docView.nearest(sel.anchorNode);\n        if (context && context.ignoreEvent(event)) {\n            if (!wasChanged)\n                this.selectionChanged = false;\n            return;\n        }\n        // Deletions on IE11 fire their events in the wrong order, giving\n        // us a selection change event before the DOM changes are\n        // reported.\n        // Chrome Android has a similar issue when backspacing out a\n        // selection (#645).\n        if ((browser.ie && browser.ie_version <= 11 || browser.android && browser.chrome) && !view.state.selection.main.empty &&\n            // (Selection.isCollapsed isn't reliable on IE)\n            sel.focusNode && isEquivalentPosition(sel.focusNode, sel.focusOffset, sel.anchorNode, sel.anchorOffset))\n            this.flushSoon();\n        else\n            this.flush(false);\n    }\n    readSelectionRange() {\n        let { view } = this;\n        // The Selection object is broken in shadow roots in Safari. See\n        // https://github.com/codemirror/dev/issues/414\n        let selection = getSelection(view.root);\n        if (!selection)\n            return false;\n        let range = browser.safari && view.root.nodeType == 11 &&\n            deepActiveElement(this.dom.ownerDocument) == this.dom &&\n            safariSelectionRangeHack(this.view, selection) || selection;\n        if (!range || this.selectionRange.eq(range))\n            return false;\n        let local = hasSelection(this.dom, range);\n        // Detect the situation where the browser has, on focus, moved the\n        // selection to the start of the content element. Reset it to the\n        // position from the editor state.\n        if (local && !this.selectionChanged &&\n            view.inputState.lastFocusTime > Date.now() - 200 &&\n            view.inputState.lastTouchTime < Date.now() - 300 &&\n            atElementStart(this.dom, range)) {\n            this.view.inputState.lastFocusTime = 0;\n            view.docView.updateSelection();\n            return false;\n        }\n        this.selectionRange.setRange(range);\n        if (local)\n            this.selectionChanged = true;\n        return true;\n    }\n    setSelectionRange(anchor, head) {\n        this.selectionRange.set(anchor.node, anchor.offset, head.node, head.offset);\n        this.selectionChanged = false;\n    }\n    clearSelectionRange() {\n        this.selectionRange.set(null, 0, null, 0);\n    }\n    listenForScroll() {\n        this.parentCheck = -1;\n        let i = 0, changed = null;\n        for (let dom = this.dom; dom;) {\n            if (dom.nodeType == 1) {\n                if (!changed && i < this.scrollTargets.length && this.scrollTargets[i] == dom)\n                    i++;\n                else if (!changed)\n                    changed = this.scrollTargets.slice(0, i);\n                if (changed)\n                    changed.push(dom);\n                dom = dom.assignedSlot || dom.parentNode;\n            }\n            else if (dom.nodeType == 11) { // Shadow root\n                dom = dom.host;\n            }\n            else {\n                break;\n            }\n        }\n        if (i < this.scrollTargets.length && !changed)\n            changed = this.scrollTargets.slice(0, i);\n        if (changed) {\n            for (let dom of this.scrollTargets)\n                dom.removeEventListener(\"scroll\", this.onScroll);\n            for (let dom of this.scrollTargets = changed)\n                dom.addEventListener(\"scroll\", this.onScroll);\n        }\n    }\n    ignore(f) {\n        if (!this.active)\n            return f();\n        try {\n            this.stop();\n            return f();\n        }\n        finally {\n            this.start();\n            this.clear();\n        }\n    }\n    start() {\n        if (this.active)\n            return;\n        this.observer.observe(this.dom, observeOptions);\n        if (useCharData)\n            this.dom.addEventListener(\"DOMCharacterDataModified\", this.onCharData);\n        this.active = true;\n    }\n    stop() {\n        if (!this.active)\n            return;\n        this.active = false;\n        this.observer.disconnect();\n        if (useCharData)\n            this.dom.removeEventListener(\"DOMCharacterDataModified\", this.onCharData);\n    }\n    // Throw away any pending changes\n    clear() {\n        this.processRecords();\n        this.queue.length = 0;\n        this.selectionChanged = false;\n    }\n    // Chrome Android, especially in combination with GBoard, not only\n    // doesn't reliably fire regular key events, but also often\n    // surrounds the effect of enter or backspace with a bunch of\n    // composition events that, when interrupted, cause text duplication\n    // or other kinds of corruption. This hack makes the editor back off\n    // from handling DOM changes for a moment when such a key is\n    // detected (via beforeinput or keydown), and then tries to flush\n    // them or, if that has no effect, dispatches the given key.\n    delayAndroidKey(key, keyCode) {\n        var _a;\n        if (!this.delayedAndroidKey) {\n            let flush = () => {\n                let key = this.delayedAndroidKey;\n                if (key) {\n                    this.clearDelayedAndroidKey();\n                    this.view.inputState.lastKeyCode = key.keyCode;\n                    this.view.inputState.lastKeyTime = Date.now();\n                    let flushed = this.flush();\n                    if (!flushed && key.force)\n                        dispatchKey(this.dom, key.key, key.keyCode);\n                }\n            };\n            this.flushingAndroidKey = this.view.win.requestAnimationFrame(flush);\n        }\n        // Since backspace beforeinput is sometimes signalled spuriously,\n        // Enter always takes precedence.\n        if (!this.delayedAndroidKey || key == \"Enter\")\n            this.delayedAndroidKey = {\n                key, keyCode,\n                // Only run the key handler when no changes are detected if\n                // this isn't coming right after another change, in which case\n                // it is probably part of a weird chain of updates, and should\n                // be ignored if it returns the DOM to its previous state.\n                force: this.lastChange < Date.now() - 50 || !!((_a = this.delayedAndroidKey) === null || _a === void 0 ? void 0 : _a.force)\n            };\n    }\n    clearDelayedAndroidKey() {\n        this.win.cancelAnimationFrame(this.flushingAndroidKey);\n        this.delayedAndroidKey = null;\n        this.flushingAndroidKey = -1;\n    }\n    flushSoon() {\n        if (this.delayedFlush < 0)\n            this.delayedFlush = this.view.win.requestAnimationFrame(() => { this.delayedFlush = -1; this.flush(); });\n    }\n    forceFlush() {\n        if (this.delayedFlush >= 0) {\n            this.view.win.cancelAnimationFrame(this.delayedFlush);\n            this.delayedFlush = -1;\n        }\n        this.flush();\n    }\n    pendingRecords() {\n        for (let mut of this.observer.takeRecords())\n            this.queue.push(mut);\n        return this.queue;\n    }\n    processRecords() {\n        let records = this.pendingRecords();\n        if (records.length)\n            this.queue = [];\n        let from = -1, to = -1, typeOver = false;\n        for (let record of records) {\n            let range = this.readMutation(record);\n            if (!range)\n                continue;\n            if (range.typeOver)\n                typeOver = true;\n            if (from == -1) {\n                ({ from, to } = range);\n            }\n            else {\n                from = Math.min(range.from, from);\n                to = Math.max(range.to, to);\n            }\n        }\n        return { from, to, typeOver };\n    }\n    readChange() {\n        let { from, to, typeOver } = this.processRecords();\n        let newSel = this.selectionChanged && hasSelection(this.dom, this.selectionRange);\n        if (from < 0 && !newSel)\n            return null;\n        if (from > -1)\n            this.lastChange = Date.now();\n        this.view.inputState.lastFocusTime = 0;\n        this.selectionChanged = false;\n        let change = new DOMChange(this.view, from, to, typeOver);\n        this.view.docView.domChanged = { newSel: change.newSel ? change.newSel.main : null };\n        return change;\n    }\n    // Apply pending changes, if any\n    flush(readSelection = true) {\n        // Completely hold off flushing when pending keys are set—the code\n        // managing those will make sure processRecords is called and the\n        // view is resynchronized after\n        if (this.delayedFlush >= 0 || this.delayedAndroidKey)\n            return false;\n        if (readSelection)\n            this.readSelectionRange();\n        let domChange = this.readChange();\n        if (!domChange) {\n            this.view.requestMeasure();\n            return false;\n        }\n        let startState = this.view.state;\n        let handled = applyDOMChange(this.view, domChange);\n        // The view wasn't updated but DOM/selection changes were seen. Reset the view.\n        if (this.view.state == startState &&\n            (domChange.domChanged || domChange.newSel && !domChange.newSel.main.eq(this.view.state.selection.main)))\n            this.view.update([]);\n        return handled;\n    }\n    readMutation(rec) {\n        let cView = this.view.docView.nearest(rec.target);\n        if (!cView || cView.ignoreMutation(rec))\n            return null;\n        cView.markDirty(rec.type == \"attributes\");\n        if (rec.type == \"attributes\")\n            cView.flags |= 4 /* ViewFlag.AttrsDirty */;\n        if (rec.type == \"childList\") {\n            let childBefore = findChild(cView, rec.previousSibling || rec.target.previousSibling, -1);\n            let childAfter = findChild(cView, rec.nextSibling || rec.target.nextSibling, 1);\n            return { from: childBefore ? cView.posAfter(childBefore) : cView.posAtStart,\n                to: childAfter ? cView.posBefore(childAfter) : cView.posAtEnd, typeOver: false };\n        }\n        else if (rec.type == \"characterData\") {\n            return { from: cView.posAtStart, to: cView.posAtEnd, typeOver: rec.target.nodeValue == rec.oldValue };\n        }\n        else {\n            return null;\n        }\n    }\n    setWindow(win) {\n        if (win != this.win) {\n            this.removeWindowListeners(this.win);\n            this.win = win;\n            this.addWindowListeners(this.win);\n        }\n    }\n    addWindowListeners(win) {\n        win.addEventListener(\"resize\", this.onResize);\n        if (this.printQuery) {\n            if (this.printQuery.addEventListener)\n                this.printQuery.addEventListener(\"change\", this.onPrint);\n            else\n                this.printQuery.addListener(this.onPrint);\n        }\n        else\n            win.addEventListener(\"beforeprint\", this.onPrint);\n        win.addEventListener(\"scroll\", this.onScroll);\n        win.document.addEventListener(\"selectionchange\", this.onSelectionChange);\n    }\n    removeWindowListeners(win) {\n        win.removeEventListener(\"scroll\", this.onScroll);\n        win.removeEventListener(\"resize\", this.onResize);\n        if (this.printQuery) {\n            if (this.printQuery.removeEventListener)\n                this.printQuery.removeEventListener(\"change\", this.onPrint);\n            else\n                this.printQuery.removeListener(this.onPrint);\n        }\n        else\n            win.removeEventListener(\"beforeprint\", this.onPrint);\n        win.document.removeEventListener(\"selectionchange\", this.onSelectionChange);\n    }\n    update(update) {\n        if (this.editContext) {\n            this.editContext.update(update);\n            if (update.startState.facet(editable) != update.state.facet(editable))\n                update.view.contentDOM.editContext = update.state.facet(editable) ? this.editContext.editContext : null;\n        }\n    }\n    destroy() {\n        var _a, _b, _c;\n        this.stop();\n        (_a = this.intersection) === null || _a === void 0 ? void 0 : _a.disconnect();\n        (_b = this.gapIntersection) === null || _b === void 0 ? void 0 : _b.disconnect();\n        (_c = this.resizeScroll) === null || _c === void 0 ? void 0 : _c.disconnect();\n        for (let dom of this.scrollTargets)\n            dom.removeEventListener(\"scroll\", this.onScroll);\n        this.removeWindowListeners(this.win);\n        clearTimeout(this.parentCheck);\n        clearTimeout(this.resizeTimeout);\n        this.win.cancelAnimationFrame(this.delayedFlush);\n        this.win.cancelAnimationFrame(this.flushingAndroidKey);\n        if (this.editContext) {\n            this.view.contentDOM.editContext = null;\n            this.editContext.destroy();\n        }\n    }\n}\nfunction findChild(cView, dom, dir) {\n    while (dom) {\n        let curView = ContentView.get(dom);\n        if (curView && curView.parent == cView)\n            return curView;\n        let parent = dom.parentNode;\n        dom = parent != cView.dom ? parent : dir > 0 ? dom.nextSibling : dom.previousSibling;\n    }\n    return null;\n}\nfunction buildSelectionRangeFromRange(view, range) {\n    let anchorNode = range.startContainer, anchorOffset = range.startOffset;\n    let focusNode = range.endContainer, focusOffset = range.endOffset;\n    let curAnchor = view.docView.domAtPos(view.state.selection.main.anchor);\n    // Since such a range doesn't distinguish between anchor and head,\n    // use a heuristic that flips it around if its end matches the\n    // current anchor.\n    if (isEquivalentPosition(curAnchor.node, curAnchor.offset, focusNode, focusOffset))\n        [anchorNode, anchorOffset, focusNode, focusOffset] = [focusNode, focusOffset, anchorNode, anchorOffset];\n    return { anchorNode, anchorOffset, focusNode, focusOffset };\n}\n// Used to work around a Safari Selection/shadow DOM bug (#414)\nfunction safariSelectionRangeHack(view, selection) {\n    if (selection.getComposedRanges) {\n        let range = selection.getComposedRanges(view.root)[0];\n        if (range)\n            return buildSelectionRangeFromRange(view, range);\n    }\n    let found = null;\n    // Because Safari (at least in 2018-2021) doesn't provide regular\n    // access to the selection inside a shadowroot, we have to perform a\n    // ridiculous hack to get at it—using `execCommand` to trigger a\n    // `beforeInput` event so that we can read the target range from the\n    // event.\n    function read(event) {\n        event.preventDefault();\n        event.stopImmediatePropagation();\n        found = event.getTargetRanges()[0];\n    }\n    view.contentDOM.addEventListener(\"beforeinput\", read, true);\n    view.dom.ownerDocument.execCommand(\"indent\");\n    view.contentDOM.removeEventListener(\"beforeinput\", read, true);\n    return found ? buildSelectionRangeFromRange(view, found) : null;\n}\nclass EditContextManager {\n    constructor(view) {\n        // The document window for which the text in the context is\n        // maintained. For large documents, this may be smaller than the\n        // editor document. This window always includes the selection head.\n        this.from = 0;\n        this.to = 0;\n        // When applying a transaction, this is used to compare the change\n        // made to the context content to the change in the transaction in\n        // order to make the minimal changes to the context (since touching\n        // that sometimes breaks series of multiple edits made for a single\n        // user action on some Android keyboards)\n        this.pendingContextChange = null;\n        this.handlers = Object.create(null);\n        this.resetRange(view.state);\n        let context = this.editContext = new window.EditContext({\n            text: view.state.doc.sliceString(this.from, this.to),\n            selectionStart: this.toContextPos(Math.max(this.from, Math.min(this.to, view.state.selection.main.anchor))),\n            selectionEnd: this.toContextPos(view.state.selection.main.head)\n        });\n        this.handlers.textupdate = e => {\n            let { anchor } = view.state.selection.main;\n            let change = { from: this.toEditorPos(e.updateRangeStart),\n                to: this.toEditorPos(e.updateRangeEnd),\n                insert: Text.of(e.text.split(\"\\n\")) };\n            // If the window doesn't include the anchor, assume changes\n            // adjacent to a side go up to the anchor.\n            if (change.from == this.from && anchor < this.from)\n                change.from = anchor;\n            else if (change.to == this.to && anchor > this.to)\n                change.to = anchor;\n            // Edit contexts sometimes fire empty changes\n            if (change.from == change.to && !change.insert.length)\n                return;\n            this.pendingContextChange = change;\n            if (!view.state.readOnly)\n                applyDOMChangeInner(view, change, EditorSelection.single(this.toEditorPos(e.selectionStart), this.toEditorPos(e.selectionEnd)));\n            // If the transaction didn't flush our change, revert it so\n            // that the context is in sync with the editor state again.\n            if (this.pendingContextChange) {\n                this.revertPending(view.state);\n                this.setSelection(view.state);\n            }\n        };\n        this.handlers.characterboundsupdate = e => {\n            let rects = [], prev = null;\n            for (let i = this.toEditorPos(e.rangeStart), end = this.toEditorPos(e.rangeEnd); i < end; i++) {\n                let rect = view.coordsForChar(i);\n                prev = (rect && new DOMRect(rect.left, rect.top, rect.right - rect.left, rect.bottom - rect.top))\n                    || prev || new DOMRect;\n                rects.push(prev);\n            }\n            context.updateCharacterBounds(e.rangeStart, rects);\n        };\n        this.handlers.textformatupdate = e => {\n            let deco = [];\n            for (let format of e.getTextFormats()) {\n                let lineStyle = format.underlineStyle, thickness = format.underlineThickness;\n                if (lineStyle != \"None\" && thickness != \"None\") {\n                    let style = `text-decoration: underline ${lineStyle == \"Dashed\" ? \"dashed \" : lineStyle == \"Squiggle\" ? \"wavy \" : \"\"}${thickness == \"Thin\" ? 1 : 2}px`;\n                    deco.push(Decoration.mark({ attributes: { style } })\n                        .range(this.toEditorPos(format.rangeStart), this.toEditorPos(format.rangeEnd)));\n                }\n            }\n            view.dispatch({ effects: setEditContextFormatting.of(Decoration.set(deco)) });\n        };\n        this.handlers.compositionstart = () => {\n            if (view.inputState.composing < 0) {\n                view.inputState.composing = 0;\n                view.inputState.compositionFirstChange = true;\n            }\n        };\n        this.handlers.compositionend = () => {\n            view.inputState.composing = -1;\n            view.inputState.compositionFirstChange = null;\n        };\n        for (let event in this.handlers)\n            context.addEventListener(event, this.handlers[event]);\n        this.measureReq = { read: view => {\n                this.editContext.updateControlBounds(view.contentDOM.getBoundingClientRect());\n                let sel = getSelection(view.root);\n                if (sel && sel.rangeCount)\n                    this.editContext.updateSelectionBounds(sel.getRangeAt(0).getBoundingClientRect());\n            } };\n    }\n    applyEdits(update) {\n        let off = 0, abort = false, pending = this.pendingContextChange;\n        update.changes.iterChanges((fromA, toA, _fromB, _toB, insert) => {\n            if (abort)\n                return;\n            let dLen = insert.length - (toA - fromA);\n            if (pending && toA >= pending.to) {\n                if (pending.from == fromA && pending.to == toA && pending.insert.eq(insert)) {\n                    pending = this.pendingContextChange = null; // Match\n                    off += dLen;\n                    this.to += dLen;\n                    return;\n                }\n                else { // Mismatch, revert\n                    pending = null;\n                    this.revertPending(update.state);\n                }\n            }\n            fromA += off;\n            toA += off;\n            if (toA <= this.from) { // Before the window\n                this.from += dLen;\n                this.to += dLen;\n            }\n            else if (fromA < this.to) { // Overlaps with window\n                if (fromA < this.from || toA > this.to || (this.to - this.from) + insert.length > 30000 /* CxVp.MaxSize */) {\n                    abort = true;\n                    return;\n                }\n                this.editContext.updateText(this.toContextPos(fromA), this.toContextPos(toA), insert.toString());\n                this.to += dLen;\n            }\n            off += dLen;\n        });\n        if (pending && !abort)\n            this.revertPending(update.state);\n        return !abort;\n    }\n    update(update) {\n        let reverted = this.pendingContextChange;\n        if (!this.applyEdits(update) || !this.rangeIsValid(update.state)) {\n            this.pendingContextChange = null;\n            this.resetRange(update.state);\n            this.editContext.updateText(0, this.editContext.text.length, update.state.doc.sliceString(this.from, this.to));\n            this.setSelection(update.state);\n        }\n        else if (update.docChanged || update.selectionSet || reverted) {\n            this.setSelection(update.state);\n        }\n        if (update.geometryChanged || update.docChanged || update.selectionSet)\n            update.view.requestMeasure(this.measureReq);\n    }\n    resetRange(state) {\n        let { head } = state.selection.main;\n        this.from = Math.max(0, head - 10000 /* CxVp.Margin */);\n        this.to = Math.min(state.doc.length, head + 10000 /* CxVp.Margin */);\n    }\n    revertPending(state) {\n        let pending = this.pendingContextChange;\n        this.pendingContextChange = null;\n        this.editContext.updateText(this.toContextPos(pending.from), this.toContextPos(pending.from + pending.insert.length), state.doc.sliceString(pending.from, pending.to));\n    }\n    setSelection(state) {\n        let { main } = state.selection;\n        let start = this.toContextPos(Math.max(this.from, Math.min(this.to, main.anchor)));\n        let end = this.toContextPos(main.head);\n        if (this.editContext.selectionStart != start || this.editContext.selectionEnd != end)\n            this.editContext.updateSelection(start, end);\n    }\n    rangeIsValid(state) {\n        let { head } = state.selection.main;\n        return !(this.from > 0 && head - this.from < 500 /* CxVp.MinMargin */ ||\n            this.to < state.doc.length && this.to - head < 500 /* CxVp.MinMargin */ ||\n            this.to - this.from > 10000 /* CxVp.Margin */ * 3);\n    }\n    toEditorPos(contextPos) { return contextPos + this.from; }\n    toContextPos(editorPos) { return editorPos - this.from; }\n    destroy() {\n        for (let event in this.handlers)\n            this.editContext.removeEventListener(event, this.handlers[event]);\n    }\n}\n\n// The editor's update state machine looks something like this:\n//\n//     Idle → Updating ⇆ Idle (unchecked) → Measuring → Idle\n//                                         ↑      ↓\n//                                         Updating (measure)\n//\n// The difference between 'Idle' and 'Idle (unchecked)' lies in\n// whether a layout check has been scheduled. A regular update through\n// the `update` method updates the DOM in a write-only fashion, and\n// relies on a check (scheduled with `requestAnimationFrame`) to make\n// sure everything is where it should be and the viewport covers the\n// visible code. That check continues to measure and then optionally\n// update until it reaches a coherent state.\n/**\nAn editor view represents the editor's user interface. It holds\nthe editable DOM surface, and possibly other elements such as the\nline number gutter. It handles events and dispatches state\ntransactions for editing actions.\n*/\nclass EditorView {\n    /**\n    The current editor state.\n    */\n    get state() { return this.viewState.state; }\n    /**\n    To be able to display large documents without consuming too much\n    memory or overloading the browser, CodeMirror only draws the\n    code that is visible (plus a margin around it) to the DOM. This\n    property tells you the extent of the current drawn viewport, in\n    document positions.\n    */\n    get viewport() { return this.viewState.viewport; }\n    /**\n    When there are, for example, large collapsed ranges in the\n    viewport, its size can be a lot bigger than the actual visible\n    content. Thus, if you are doing something like styling the\n    content in the viewport, it is preferable to only do so for\n    these ranges, which are the subset of the viewport that is\n    actually drawn.\n    */\n    get visibleRanges() { return this.viewState.visibleRanges; }\n    /**\n    Returns false when the editor is entirely scrolled out of view\n    or otherwise hidden.\n    */\n    get inView() { return this.viewState.inView; }\n    /**\n    Indicates whether the user is currently composing text via\n    [IME](https://en.wikipedia.org/wiki/Input_method), and at least\n    one change has been made in the current composition.\n    */\n    get composing() { return this.inputState.composing > 0; }\n    /**\n    Indicates whether the user is currently in composing state. Note\n    that on some platforms, like Android, this will be the case a\n    lot, since just putting the cursor on a word starts a\n    composition there.\n    */\n    get compositionStarted() { return this.inputState.composing >= 0; }\n    /**\n    The document or shadow root that the view lives in.\n    */\n    get root() { return this._root; }\n    /**\n    @internal\n    */\n    get win() { return this.dom.ownerDocument.defaultView || window; }\n    /**\n    Construct a new view. You'll want to either provide a `parent`\n    option, or put `view.dom` into your document after creating a\n    view, so that the user can see the editor.\n    */\n    constructor(config = {}) {\n        var _a;\n        this.plugins = [];\n        this.pluginMap = new Map;\n        this.editorAttrs = {};\n        this.contentAttrs = {};\n        this.bidiCache = [];\n        this.destroyed = false;\n        /**\n        @internal\n        */\n        this.updateState = 2 /* UpdateState.Updating */;\n        /**\n        @internal\n        */\n        this.measureScheduled = -1;\n        /**\n        @internal\n        */\n        this.measureRequests = [];\n        this.contentDOM = document.createElement(\"div\");\n        this.scrollDOM = document.createElement(\"div\");\n        this.scrollDOM.tabIndex = -1;\n        this.scrollDOM.className = \"cm-scroller\";\n        this.scrollDOM.appendChild(this.contentDOM);\n        this.announceDOM = document.createElement(\"div\");\n        this.announceDOM.className = \"cm-announced\";\n        this.announceDOM.setAttribute(\"aria-live\", \"polite\");\n        this.dom = document.createElement(\"div\");\n        this.dom.appendChild(this.announceDOM);\n        this.dom.appendChild(this.scrollDOM);\n        if (config.parent)\n            config.parent.appendChild(this.dom);\n        let { dispatch } = config;\n        this.dispatchTransactions = config.dispatchTransactions ||\n            (dispatch && ((trs) => trs.forEach(tr => dispatch(tr, this)))) ||\n            ((trs) => this.update(trs));\n        this.dispatch = this.dispatch.bind(this);\n        this._root = (config.root || getRoot(config.parent) || document);\n        this.viewState = new ViewState(config.state || EditorState.create(config));\n        if (config.scrollTo && config.scrollTo.is(scrollIntoView))\n            this.viewState.scrollTarget = config.scrollTo.value.clip(this.viewState.state);\n        this.plugins = this.state.facet(viewPlugin).map(spec => new PluginInstance(spec));\n        for (let plugin of this.plugins)\n            plugin.update(this);\n        this.observer = new DOMObserver(this);\n        this.inputState = new InputState(this);\n        this.inputState.ensureHandlers(this.plugins);\n        this.docView = new DocView(this);\n        this.mountStyles();\n        this.updateAttrs();\n        this.updateState = 0 /* UpdateState.Idle */;\n        this.requestMeasure();\n        if ((_a = document.fonts) === null || _a === void 0 ? void 0 : _a.ready)\n            document.fonts.ready.then(() => this.requestMeasure());\n    }\n    dispatch(...input) {\n        let trs = input.length == 1 && input[0] instanceof Transaction ? input\n            : input.length == 1 && Array.isArray(input[0]) ? input[0]\n                : [this.state.update(...input)];\n        this.dispatchTransactions(trs, this);\n    }\n    /**\n    Update the view for the given array of transactions. This will\n    update the visible document and selection to match the state\n    produced by the transactions, and notify view plugins of the\n    change. You should usually call\n    [`dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch) instead, which uses this\n    as a primitive.\n    */\n    update(transactions) {\n        if (this.updateState != 0 /* UpdateState.Idle */)\n            throw new Error(\"Calls to EditorView.update are not allowed while an update is in progress\");\n        let redrawn = false, attrsChanged = false, update;\n        let state = this.state;\n        for (let tr of transactions) {\n            if (tr.startState != state)\n                throw new RangeError(\"Trying to update state with a transaction that doesn't start from the previous state.\");\n            state = tr.state;\n        }\n        if (this.destroyed) {\n            this.viewState.state = state;\n            return;\n        }\n        let focus = this.hasFocus, focusFlag = 0, dispatchFocus = null;\n        if (transactions.some(tr => tr.annotation(isFocusChange))) {\n            this.inputState.notifiedFocused = focus;\n            // If a focus-change transaction is being dispatched, set this update flag.\n            focusFlag = 1 /* UpdateFlag.Focus */;\n        }\n        else if (focus != this.inputState.notifiedFocused) {\n            this.inputState.notifiedFocused = focus;\n            // Schedule a separate focus transaction if necessary, otherwise\n            // add a flag to this update\n            dispatchFocus = focusChangeTransaction(state, focus);\n            if (!dispatchFocus)\n                focusFlag = 1 /* UpdateFlag.Focus */;\n        }\n        // If there was a pending DOM change, eagerly read it and try to\n        // apply it after the given transactions.\n        let pendingKey = this.observer.delayedAndroidKey, domChange = null;\n        if (pendingKey) {\n            this.observer.clearDelayedAndroidKey();\n            domChange = this.observer.readChange();\n            // Only try to apply DOM changes if the transactions didn't\n            // change the doc or selection.\n            if (domChange && !this.state.doc.eq(state.doc) || !this.state.selection.eq(state.selection))\n                domChange = null;\n        }\n        else {\n            this.observer.clear();\n        }\n        // When the phrases change, redraw the editor\n        if (state.facet(EditorState.phrases) != this.state.facet(EditorState.phrases))\n            return this.setState(state);\n        update = ViewUpdate.create(this, state, transactions);\n        update.flags |= focusFlag;\n        let scrollTarget = this.viewState.scrollTarget;\n        try {\n            this.updateState = 2 /* UpdateState.Updating */;\n            for (let tr of transactions) {\n                if (scrollTarget)\n                    scrollTarget = scrollTarget.map(tr.changes);\n                if (tr.scrollIntoView) {\n                    let { main } = tr.state.selection;\n                    scrollTarget = new ScrollTarget(main.empty ? main : EditorSelection.cursor(main.head, main.head > main.anchor ? -1 : 1));\n                }\n                for (let e of tr.effects)\n                    if (e.is(scrollIntoView))\n                        scrollTarget = e.value.clip(this.state);\n            }\n            this.viewState.update(update, scrollTarget);\n            this.bidiCache = CachedOrder.update(this.bidiCache, update.changes);\n            if (!update.empty) {\n                this.updatePlugins(update);\n                this.inputState.update(update);\n            }\n            redrawn = this.docView.update(update);\n            if (this.state.facet(styleModule) != this.styleModules)\n                this.mountStyles();\n            attrsChanged = this.updateAttrs();\n            this.showAnnouncements(transactions);\n            this.docView.updateSelection(redrawn, transactions.some(tr => tr.isUserEvent(\"select.pointer\")));\n        }\n        finally {\n            this.updateState = 0 /* UpdateState.Idle */;\n        }\n        if (update.startState.facet(theme) != update.state.facet(theme))\n            this.viewState.mustMeasureContent = true;\n        if (redrawn || attrsChanged || scrollTarget || this.viewState.mustEnforceCursorAssoc || this.viewState.mustMeasureContent)\n            this.requestMeasure();\n        if (redrawn)\n            this.docViewUpdate();\n        if (!update.empty)\n            for (let listener of this.state.facet(updateListener)) {\n                try {\n                    listener(update);\n                }\n                catch (e) {\n                    logException(this.state, e, \"update listener\");\n                }\n            }\n        if (dispatchFocus || domChange)\n            Promise.resolve().then(() => {\n                if (dispatchFocus && this.state == dispatchFocus.startState)\n                    this.dispatch(dispatchFocus);\n                if (domChange) {\n                    if (!applyDOMChange(this, domChange) && pendingKey.force)\n                        dispatchKey(this.contentDOM, pendingKey.key, pendingKey.keyCode);\n                }\n            });\n    }\n    /**\n    Reset the view to the given state. (This will cause the entire\n    document to be redrawn and all view plugins to be reinitialized,\n    so you should probably only use it when the new state isn't\n    derived from the old state. Otherwise, use\n    [`dispatch`](https://codemirror.net/6/docs/ref/#view.EditorView.dispatch) instead.)\n    */\n    setState(newState) {\n        if (this.updateState != 0 /* UpdateState.Idle */)\n            throw new Error(\"Calls to EditorView.setState are not allowed while an update is in progress\");\n        if (this.destroyed) {\n            this.viewState.state = newState;\n            return;\n        }\n        this.updateState = 2 /* UpdateState.Updating */;\n        let hadFocus = this.hasFocus;\n        try {\n            for (let plugin of this.plugins)\n                plugin.destroy(this);\n            this.viewState = new ViewState(newState);\n            this.plugins = newState.facet(viewPlugin).map(spec => new PluginInstance(spec));\n            this.pluginMap.clear();\n            for (let plugin of this.plugins)\n                plugin.update(this);\n            this.docView.destroy();\n            this.docView = new DocView(this);\n            this.inputState.ensureHandlers(this.plugins);\n            this.mountStyles();\n            this.updateAttrs();\n            this.bidiCache = [];\n        }\n        finally {\n            this.updateState = 0 /* UpdateState.Idle */;\n        }\n        if (hadFocus)\n            this.focus();\n        this.requestMeasure();\n    }\n    updatePlugins(update) {\n        let prevSpecs = update.startState.facet(viewPlugin), specs = update.state.facet(viewPlugin);\n        if (prevSpecs != specs) {\n            let newPlugins = [];\n            for (let spec of specs) {\n                let found = prevSpecs.indexOf(spec);\n                if (found < 0) {\n                    newPlugins.push(new PluginInstance(spec));\n                }\n                else {\n                    let plugin = this.plugins[found];\n                    plugin.mustUpdate = update;\n                    newPlugins.push(plugin);\n                }\n            }\n            for (let plugin of this.plugins)\n                if (plugin.mustUpdate != update)\n                    plugin.destroy(this);\n            this.plugins = newPlugins;\n            this.pluginMap.clear();\n        }\n        else {\n            for (let p of this.plugins)\n                p.mustUpdate = update;\n        }\n        for (let i = 0; i < this.plugins.length; i++)\n            this.plugins[i].update(this);\n        if (prevSpecs != specs)\n            this.inputState.ensureHandlers(this.plugins);\n    }\n    docViewUpdate() {\n        for (let plugin of this.plugins) {\n            let val = plugin.value;\n            if (val && val.docViewUpdate) {\n                try {\n                    val.docViewUpdate(this);\n                }\n                catch (e) {\n                    logException(this.state, e, \"doc view update listener\");\n                }\n            }\n        }\n    }\n    /**\n    @internal\n    */\n    measure(flush = true) {\n        if (this.destroyed)\n            return;\n        if (this.measureScheduled > -1)\n            this.win.cancelAnimationFrame(this.measureScheduled);\n        if (this.observer.delayedAndroidKey) {\n            this.measureScheduled = -1;\n            this.requestMeasure();\n            return;\n        }\n        this.measureScheduled = 0; // Prevent requestMeasure calls from scheduling another animation frame\n        if (flush)\n            this.observer.forceFlush();\n        let updated = null;\n        let sDOM = this.scrollDOM, scrollTop = sDOM.scrollTop * this.scaleY;\n        let { scrollAnchorPos, scrollAnchorHeight } = this.viewState;\n        if (Math.abs(scrollTop - this.viewState.scrollTop) > 1)\n            scrollAnchorHeight = -1;\n        this.viewState.scrollAnchorHeight = -1;\n        try {\n            for (let i = 0;; i++) {\n                if (scrollAnchorHeight < 0) {\n                    if (isScrolledToBottom(sDOM)) {\n                        scrollAnchorPos = -1;\n                        scrollAnchorHeight = this.viewState.heightMap.height;\n                    }\n                    else {\n                        let block = this.viewState.scrollAnchorAt(scrollTop);\n                        scrollAnchorPos = block.from;\n                        scrollAnchorHeight = block.top;\n                    }\n                }\n                this.updateState = 1 /* UpdateState.Measuring */;\n                let changed = this.viewState.measure(this);\n                if (!changed && !this.measureRequests.length && this.viewState.scrollTarget == null)\n                    break;\n                if (i > 5) {\n                    console.warn(this.measureRequests.length\n                        ? \"Measure loop restarted more than 5 times\"\n                        : \"Viewport failed to stabilize\");\n                    break;\n                }\n                let measuring = [];\n                // Only run measure requests in this cycle when the viewport didn't change\n                if (!(changed & 4 /* UpdateFlag.Viewport */))\n                    [this.measureRequests, measuring] = [measuring, this.measureRequests];\n                let measured = measuring.map(m => {\n                    try {\n                        return m.read(this);\n                    }\n                    catch (e) {\n                        logException(this.state, e);\n                        return BadMeasure;\n                    }\n                });\n                let update = ViewUpdate.create(this, this.state, []), redrawn = false;\n                update.flags |= changed;\n                if (!updated)\n                    updated = update;\n                else\n                    updated.flags |= changed;\n                this.updateState = 2 /* UpdateState.Updating */;\n                if (!update.empty) {\n                    this.updatePlugins(update);\n                    this.inputState.update(update);\n                    this.updateAttrs();\n                    redrawn = this.docView.update(update);\n                    if (redrawn)\n                        this.docViewUpdate();\n                }\n                for (let i = 0; i < measuring.length; i++)\n                    if (measured[i] != BadMeasure) {\n                        try {\n                            let m = measuring[i];\n                            if (m.write)\n                                m.write(measured[i], this);\n                        }\n                        catch (e) {\n                            logException(this.state, e);\n                        }\n                    }\n                if (redrawn)\n                    this.docView.updateSelection(true);\n                if (!update.viewportChanged && this.measureRequests.length == 0) {\n                    if (this.viewState.editorHeight) {\n                        if (this.viewState.scrollTarget) {\n                            this.docView.scrollIntoView(this.viewState.scrollTarget);\n                            this.viewState.scrollTarget = null;\n                            scrollAnchorHeight = -1;\n                            continue;\n                        }\n                        else {\n                            let newAnchorHeight = scrollAnchorPos < 0 ? this.viewState.heightMap.height :\n                                this.viewState.lineBlockAt(scrollAnchorPos).top;\n                            let diff = newAnchorHeight - scrollAnchorHeight;\n                            if (diff > 1 || diff < -1) {\n                                scrollTop = scrollTop + diff;\n                                sDOM.scrollTop = scrollTop / this.scaleY;\n                                scrollAnchorHeight = -1;\n                                continue;\n                            }\n                        }\n                    }\n                    break;\n                }\n            }\n        }\n        finally {\n            this.updateState = 0 /* UpdateState.Idle */;\n            this.measureScheduled = -1;\n        }\n        if (updated && !updated.empty)\n            for (let listener of this.state.facet(updateListener))\n                listener(updated);\n    }\n    /**\n    Get the CSS classes for the currently active editor themes.\n    */\n    get themeClasses() {\n        return baseThemeID + \" \" +\n            (this.state.facet(darkTheme) ? baseDarkID : baseLightID) + \" \" +\n            this.state.facet(theme);\n    }\n    updateAttrs() {\n        let editorAttrs = attrsFromFacet(this, editorAttributes, {\n            class: \"cm-editor\" + (this.hasFocus ? \" cm-focused \" : \" \") + this.themeClasses\n        });\n        let contentAttrs = {\n            spellcheck: \"false\",\n            autocorrect: \"off\",\n            autocapitalize: \"off\",\n            translate: \"no\",\n            contenteditable: !this.state.facet(editable) ? \"false\" : \"true\",\n            class: \"cm-content\",\n            style: `${browser.tabSize}: ${this.state.tabSize}`,\n            role: \"textbox\",\n            \"aria-multiline\": \"true\"\n        };\n        if (this.state.readOnly)\n            contentAttrs[\"aria-readonly\"] = \"true\";\n        attrsFromFacet(this, contentAttributes, contentAttrs);\n        let changed = this.observer.ignore(() => {\n            let changedContent = updateAttrs(this.contentDOM, this.contentAttrs, contentAttrs);\n            let changedEditor = updateAttrs(this.dom, this.editorAttrs, editorAttrs);\n            return changedContent || changedEditor;\n        });\n        this.editorAttrs = editorAttrs;\n        this.contentAttrs = contentAttrs;\n        return changed;\n    }\n    showAnnouncements(trs) {\n        let first = true;\n        for (let tr of trs)\n            for (let effect of tr.effects)\n                if (effect.is(EditorView.announce)) {\n                    if (first)\n                        this.announceDOM.textContent = \"\";\n                    first = false;\n                    let div = this.announceDOM.appendChild(document.createElement(\"div\"));\n                    div.textContent = effect.value;\n                }\n    }\n    mountStyles() {\n        this.styleModules = this.state.facet(styleModule);\n        let nonce = this.state.facet(EditorView.cspNonce);\n        StyleModule.mount(this.root, this.styleModules.concat(baseTheme$1).reverse(), nonce ? { nonce } : undefined);\n    }\n    readMeasured() {\n        if (this.updateState == 2 /* UpdateState.Updating */)\n            throw new Error(\"Reading the editor layout isn't allowed during an update\");\n        if (this.updateState == 0 /* UpdateState.Idle */ && this.measureScheduled > -1)\n            this.measure(false);\n    }\n    /**\n    Schedule a layout measurement, optionally providing callbacks to\n    do custom DOM measuring followed by a DOM write phase. Using\n    this is preferable reading DOM layout directly from, for\n    example, an event handler, because it'll make sure measuring and\n    drawing done by other components is synchronized, avoiding\n    unnecessary DOM layout computations.\n    */\n    requestMeasure(request) {\n        if (this.measureScheduled < 0)\n            this.measureScheduled = this.win.requestAnimationFrame(() => this.measure());\n        if (request) {\n            if (this.measureRequests.indexOf(request) > -1)\n                return;\n            if (request.key != null)\n                for (let i = 0; i < this.measureRequests.length; i++) {\n                    if (this.measureRequests[i].key === request.key) {\n                        this.measureRequests[i] = request;\n                        return;\n                    }\n                }\n            this.measureRequests.push(request);\n        }\n    }\n    /**\n    Get the value of a specific plugin, if present. Note that\n    plugins that crash can be dropped from a view, so even when you\n    know you registered a given plugin, it is recommended to check\n    the return value of this method.\n    */\n    plugin(plugin) {\n        let known = this.pluginMap.get(plugin);\n        if (known === undefined || known && known.spec != plugin)\n            this.pluginMap.set(plugin, known = this.plugins.find(p => p.spec == plugin) || null);\n        return known && known.update(this).value;\n    }\n    /**\n    The top position of the document, in screen coordinates. This\n    may be negative when the editor is scrolled down. Points\n    directly to the top of the first line, not above the padding.\n    */\n    get documentTop() {\n        return this.contentDOM.getBoundingClientRect().top + this.viewState.paddingTop;\n    }\n    /**\n    Reports the padding above and below the document.\n    */\n    get documentPadding() {\n        return { top: this.viewState.paddingTop, bottom: this.viewState.paddingBottom };\n    }\n    /**\n    If the editor is transformed with CSS, this provides the scale\n    along the X axis. Otherwise, it will just be 1. Note that\n    transforms other than translation and scaling are not supported.\n    */\n    get scaleX() { return this.viewState.scaleX; }\n    /**\n    Provide the CSS transformed scale along the Y axis.\n    */\n    get scaleY() { return this.viewState.scaleY; }\n    /**\n    Find the text line or block widget at the given vertical\n    position (which is interpreted as relative to the [top of the\n    document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop)).\n    */\n    elementAtHeight(height) {\n        this.readMeasured();\n        return this.viewState.elementAtHeight(height);\n    }\n    /**\n    Find the line block (see\n    [`lineBlockAt`](https://codemirror.net/6/docs/ref/#view.EditorView.lineBlockAt) at the given\n    height, again interpreted relative to the [top of the\n    document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop).\n    */\n    lineBlockAtHeight(height) {\n        this.readMeasured();\n        return this.viewState.lineBlockAtHeight(height);\n    }\n    /**\n    Get the extent and vertical position of all [line\n    blocks](https://codemirror.net/6/docs/ref/#view.EditorView.lineBlockAt) in the viewport. Positions\n    are relative to the [top of the\n    document](https://codemirror.net/6/docs/ref/#view.EditorView.documentTop);\n    */\n    get viewportLineBlocks() {\n        return this.viewState.viewportLines;\n    }\n    /**\n    Find the line block around the given document position. A line\n    block is a range delimited on both sides by either a\n    non-[hidden](https://codemirror.net/6/docs/ref/#view.Decoration^replace) line break, or the\n    start/end of the document. It will usually just hold a line of\n    text, but may be broken into multiple textblocks by block\n    widgets.\n    */\n    lineBlockAt(pos) {\n        return this.viewState.lineBlockAt(pos);\n    }\n    /**\n    The editor's total content height.\n    */\n    get contentHeight() {\n        return this.viewState.contentHeight;\n    }\n    /**\n    Move a cursor position by [grapheme\n    cluster](https://codemirror.net/6/docs/ref/#state.findClusterBreak). `forward` determines whether\n    the motion is away from the line start, or towards it. In\n    bidirectional text, the line is traversed in visual order, using\n    the editor's [text direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection).\n    When the start position was the last one on the line, the\n    returned position will be across the line break. If there is no\n    further line, the original position is returned.\n    \n    By default, this method moves over a single cluster. The\n    optional `by` argument can be used to move across more. It will\n    be called with the first cluster as argument, and should return\n    a predicate that determines, for each subsequent cluster,\n    whether it should also be moved over.\n    */\n    moveByChar(start, forward, by) {\n        return skipAtoms(this, start, moveByChar(this, start, forward, by));\n    }\n    /**\n    Move a cursor position across the next group of either\n    [letters](https://codemirror.net/6/docs/ref/#state.EditorState.charCategorizer) or non-letter\n    non-whitespace characters.\n    */\n    moveByGroup(start, forward) {\n        return skipAtoms(this, start, moveByChar(this, start, forward, initial => byGroup(this, start.head, initial)));\n    }\n    /**\n    Get the cursor position visually at the start or end of a line.\n    Note that this may differ from the _logical_ position at its\n    start or end (which is simply at `line.from`/`line.to`) if text\n    at the start or end goes against the line's base text direction.\n    */\n    visualLineSide(line, end) {\n        let order = this.bidiSpans(line), dir = this.textDirectionAt(line.from);\n        let span = order[end ? order.length - 1 : 0];\n        return EditorSelection.cursor(span.side(end, dir) + line.from, span.forward(!end, dir) ? 1 : -1);\n    }\n    /**\n    Move to the next line boundary in the given direction. If\n    `includeWrap` is true, line wrapping is on, and there is a\n    further wrap point on the current line, the wrap point will be\n    returned. Otherwise this function will return the start or end\n    of the line.\n    */\n    moveToLineBoundary(start, forward, includeWrap = true) {\n        return moveToLineBoundary(this, start, forward, includeWrap);\n    }\n    /**\n    Move a cursor position vertically. When `distance` isn't given,\n    it defaults to moving to the next line (including wrapped\n    lines). Otherwise, `distance` should provide a positive distance\n    in pixels.\n    \n    When `start` has a\n    [`goalColumn`](https://codemirror.net/6/docs/ref/#state.SelectionRange.goalColumn), the vertical\n    motion will use that as a target horizontal position. Otherwise,\n    the cursor's own horizontal position is used. The returned\n    cursor will have its goal column set to whichever column was\n    used.\n    */\n    moveVertically(start, forward, distance) {\n        return skipAtoms(this, start, moveVertically(this, start, forward, distance));\n    }\n    /**\n    Find the DOM parent node and offset (child offset if `node` is\n    an element, character offset when it is a text node) at the\n    given document position.\n    \n    Note that for positions that aren't currently in\n    `visibleRanges`, the resulting DOM position isn't necessarily\n    meaningful (it may just point before or after a placeholder\n    element).\n    */\n    domAtPos(pos) {\n        return this.docView.domAtPos(pos);\n    }\n    /**\n    Find the document position at the given DOM node. Can be useful\n    for associating positions with DOM events. Will raise an error\n    when `node` isn't part of the editor content.\n    */\n    posAtDOM(node, offset = 0) {\n        return this.docView.posFromDOM(node, offset);\n    }\n    posAtCoords(coords, precise = true) {\n        this.readMeasured();\n        return posAtCoords(this, coords, precise);\n    }\n    /**\n    Get the screen coordinates at the given document position.\n    `side` determines whether the coordinates are based on the\n    element before (-1) or after (1) the position (if no element is\n    available on the given side, the method will transparently use\n    another strategy to get reasonable coordinates).\n    */\n    coordsAtPos(pos, side = 1) {\n        this.readMeasured();\n        let rect = this.docView.coordsAt(pos, side);\n        if (!rect || rect.left == rect.right)\n            return rect;\n        let line = this.state.doc.lineAt(pos), order = this.bidiSpans(line);\n        let span = order[BidiSpan.find(order, pos - line.from, -1, side)];\n        return flattenRect(rect, (span.dir == Direction.LTR) == (side > 0));\n    }\n    /**\n    Return the rectangle around a given character. If `pos` does not\n    point in front of a character that is in the viewport and\n    rendered (i.e. not replaced, not a line break), this will return\n    null. For space characters that are a line wrap point, this will\n    return the position before the line break.\n    */\n    coordsForChar(pos) {\n        this.readMeasured();\n        return this.docView.coordsForChar(pos);\n    }\n    /**\n    The default width of a character in the editor. May not\n    accurately reflect the width of all characters (given variable\n    width fonts or styling of invididual ranges).\n    */\n    get defaultCharacterWidth() { return this.viewState.heightOracle.charWidth; }\n    /**\n    The default height of a line in the editor. May not be accurate\n    for all lines.\n    */\n    get defaultLineHeight() { return this.viewState.heightOracle.lineHeight; }\n    /**\n    The text direction\n    ([`direction`](https://developer.mozilla.org/en-US/docs/Web/CSS/direction)\n    CSS property) of the editor's content element.\n    */\n    get textDirection() { return this.viewState.defaultTextDirection; }\n    /**\n    Find the text direction of the block at the given position, as\n    assigned by CSS. If\n    [`perLineTextDirection`](https://codemirror.net/6/docs/ref/#view.EditorView^perLineTextDirection)\n    isn't enabled, or the given position is outside of the viewport,\n    this will always return the same as\n    [`textDirection`](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection). Note that\n    this may trigger a DOM layout.\n    */\n    textDirectionAt(pos) {\n        let perLine = this.state.facet(perLineTextDirection);\n        if (!perLine || pos < this.viewport.from || pos > this.viewport.to)\n            return this.textDirection;\n        this.readMeasured();\n        return this.docView.textDirectionAt(pos);\n    }\n    /**\n    Whether this editor [wraps lines](https://codemirror.net/6/docs/ref/#view.EditorView.lineWrapping)\n    (as determined by the\n    [`white-space`](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space)\n    CSS property of its content element).\n    */\n    get lineWrapping() { return this.viewState.heightOracle.lineWrapping; }\n    /**\n    Returns the bidirectional text structure of the given line\n    (which should be in the current document) as an array of span\n    objects. The order of these spans matches the [text\n    direction](https://codemirror.net/6/docs/ref/#view.EditorView.textDirection)—if that is\n    left-to-right, the leftmost spans come first, otherwise the\n    rightmost spans come first.\n    */\n    bidiSpans(line) {\n        if (line.length > MaxBidiLine)\n            return trivialOrder(line.length);\n        let dir = this.textDirectionAt(line.from), isolates;\n        for (let entry of this.bidiCache) {\n            if (entry.from == line.from && entry.dir == dir &&\n                (entry.fresh || isolatesEq(entry.isolates, isolates = getIsolatedRanges(this, line))))\n                return entry.order;\n        }\n        if (!isolates)\n            isolates = getIsolatedRanges(this, line);\n        let order = computeOrder(line.text, dir, isolates);\n        this.bidiCache.push(new CachedOrder(line.from, line.to, dir, isolates, true, order));\n        return order;\n    }\n    /**\n    Check whether the editor has focus.\n    */\n    get hasFocus() {\n        var _a;\n        // Safari return false for hasFocus when the context menu is open\n        // or closing, which leads us to ignore selection changes from the\n        // context menu because it looks like the editor isn't focused.\n        // This kludges around that.\n        return (this.dom.ownerDocument.hasFocus() || browser.safari && ((_a = this.inputState) === null || _a === void 0 ? void 0 : _a.lastContextMenu) > Date.now() - 3e4) &&\n            this.root.activeElement == this.contentDOM;\n    }\n    /**\n    Put focus on the editor.\n    */\n    focus() {\n        this.observer.ignore(() => {\n            focusPreventScroll(this.contentDOM);\n            this.docView.updateSelection();\n        });\n    }\n    /**\n    Update the [root](https://codemirror.net/6/docs/ref/##view.EditorViewConfig.root) in which the editor lives. This is only\n    necessary when moving the editor's existing DOM to a new window or shadow root.\n    */\n    setRoot(root) {\n        if (this._root != root) {\n            this._root = root;\n            this.observer.setWindow((root.nodeType == 9 ? root : root.ownerDocument).defaultView || window);\n            this.mountStyles();\n        }\n    }\n    /**\n    Clean up this editor view, removing its element from the\n    document, unregistering event handlers, and notifying\n    plugins. The view instance can no longer be used after\n    calling this.\n    */\n    destroy() {\n        if (this.root.activeElement == this.contentDOM)\n            this.contentDOM.blur();\n        for (let plugin of this.plugins)\n            plugin.destroy(this);\n        this.plugins = [];\n        this.inputState.destroy();\n        this.docView.destroy();\n        this.dom.remove();\n        this.observer.destroy();\n        if (this.measureScheduled > -1)\n            this.win.cancelAnimationFrame(this.measureScheduled);\n        this.destroyed = true;\n    }\n    /**\n    Returns an effect that can be\n    [added](https://codemirror.net/6/docs/ref/#state.TransactionSpec.effects) to a transaction to\n    cause it to scroll the given position or range into view.\n    */\n    static scrollIntoView(pos, options = {}) {\n        return scrollIntoView.of(new ScrollTarget(typeof pos == \"number\" ? EditorSelection.cursor(pos) : pos, options.y, options.x, options.yMargin, options.xMargin));\n    }\n    /**\n    Return an effect that resets the editor to its current (at the\n    time this method was called) scroll position. Note that this\n    only affects the editor's own scrollable element, not parents.\n    See also\n    [`EditorViewConfig.scrollTo`](https://codemirror.net/6/docs/ref/#view.EditorViewConfig.scrollTo).\n    \n    The effect should be used with a document identical to the one\n    it was created for. Failing to do so is not an error, but may\n    not scroll to the expected position. You can\n    [map](https://codemirror.net/6/docs/ref/#state.StateEffect.map) the effect to account for changes.\n    */\n    scrollSnapshot() {\n        let { scrollTop, scrollLeft } = this.scrollDOM;\n        let ref = this.viewState.scrollAnchorAt(scrollTop);\n        return scrollIntoView.of(new ScrollTarget(EditorSelection.cursor(ref.from), \"start\", \"start\", ref.top - scrollTop, scrollLeft, true));\n    }\n    /**\n    Enable or disable tab-focus mode, which disables key bindings\n    for Tab and Shift-Tab, letting the browser's default\n    focus-changing behavior go through instead. This is useful to\n    prevent trapping keyboard users in your editor.\n    \n    Without argument, this toggles the mode. With a boolean, it\n    enables (true) or disables it (false). Given a number, it\n    temporarily enables the mode until that number of milliseconds\n    have passed or another non-Tab key is pressed.\n    */\n    setTabFocusMode(to) {\n        if (to == null)\n            this.inputState.tabFocusMode = this.inputState.tabFocusMode < 0 ? 0 : -1;\n        else if (typeof to == \"boolean\")\n            this.inputState.tabFocusMode = to ? 0 : -1;\n        else if (this.inputState.tabFocusMode != 0)\n            this.inputState.tabFocusMode = Date.now() + to;\n    }\n    /**\n    Returns an extension that can be used to add DOM event handlers.\n    The value should be an object mapping event names to handler\n    functions. For any given event, such functions are ordered by\n    extension precedence, and the first handler to return true will\n    be assumed to have handled that event, and no other handlers or\n    built-in behavior will be activated for it. These are registered\n    on the [content element](https://codemirror.net/6/docs/ref/#view.EditorView.contentDOM), except\n    for `scroll` handlers, which will be called any time the\n    editor's [scroll element](https://codemirror.net/6/docs/ref/#view.EditorView.scrollDOM) or one of\n    its parent nodes is scrolled.\n    */\n    static domEventHandlers(handlers) {\n        return ViewPlugin.define(() => ({}), { eventHandlers: handlers });\n    }\n    /**\n    Create an extension that registers DOM event observers. Contrary\n    to event [handlers](https://codemirror.net/6/docs/ref/#view.EditorView^domEventHandlers),\n    observers can't be prevented from running by a higher-precedence\n    handler returning true. They also don't prevent other handlers\n    and observers from running when they return true, and should not\n    call `preventDefault`.\n    */\n    static domEventObservers(observers) {\n        return ViewPlugin.define(() => ({}), { eventObservers: observers });\n    }\n    /**\n    Create a theme extension. The first argument can be a\n    [`style-mod`](https://github.com/marijnh/style-mod#documentation)\n    style spec providing the styles for the theme. These will be\n    prefixed with a generated class for the style.\n    \n    Because the selectors will be prefixed with a scope class, rule\n    that directly match the editor's [wrapper\n    element](https://codemirror.net/6/docs/ref/#view.EditorView.dom)—to which the scope class will be\n    added—need to be explicitly differentiated by adding an `&` to\n    the selector for that element—for example\n    `&.cm-focused`.\n    \n    When `dark` is set to true, the theme will be marked as dark,\n    which will cause the `&dark` rules from [base\n    themes](https://codemirror.net/6/docs/ref/#view.EditorView^baseTheme) to be used (as opposed to\n    `&light` when a light theme is active).\n    */\n    static theme(spec, options) {\n        let prefix = StyleModule.newName();\n        let result = [theme.of(prefix), styleModule.of(buildTheme(`.${prefix}`, spec))];\n        if (options && options.dark)\n            result.push(darkTheme.of(true));\n        return result;\n    }\n    /**\n    Create an extension that adds styles to the base theme. Like\n    with [`theme`](https://codemirror.net/6/docs/ref/#view.EditorView^theme), use `&` to indicate the\n    place of the editor wrapper element when directly targeting\n    that. You can also use `&dark` or `&light` instead to only\n    target editors with a dark or light theme.\n    */\n    static baseTheme(spec) {\n        return Prec.lowest(styleModule.of(buildTheme(\".\" + baseThemeID, spec, lightDarkIDs)));\n    }\n    /**\n    Retrieve an editor view instance from the view's DOM\n    representation.\n    */\n    static findFromDOM(dom) {\n        var _a;\n        let content = dom.querySelector(\".cm-content\");\n        let cView = content && ContentView.get(content) || ContentView.get(dom);\n        return ((_a = cView === null || cView === void 0 ? void 0 : cView.rootView) === null || _a === void 0 ? void 0 : _a.view) || null;\n    }\n}\n/**\nFacet to add a [style\nmodule](https://github.com/marijnh/style-mod#documentation) to\nan editor view. The view will ensure that the module is\nmounted in its [document\nroot](https://codemirror.net/6/docs/ref/#view.EditorView.constructor^config.root).\n*/\nEditorView.styleModule = styleModule;\n/**\nAn input handler can override the way changes to the editable\nDOM content are handled. Handlers are passed the document\npositions between which the change was found, and the new\ncontent. When one returns true, no further input handlers are\ncalled and the default behavior is prevented.\n\nThe `insert` argument can be used to get the default transaction\nthat would be applied for this input. This can be useful when\ndispatching the custom behavior as a separate transaction.\n*/\nEditorView.inputHandler = inputHandler;\n/**\nFunctions provided in this facet will be used to transform text\npasted or dropped into the editor.\n*/\nEditorView.clipboardInputFilter = clipboardInputFilter;\n/**\nTransform text copied or dragged from the editor.\n*/\nEditorView.clipboardOutputFilter = clipboardOutputFilter;\n/**\nScroll handlers can override how things are scrolled into view.\nIf they return `true`, no further handling happens for the\nscrolling. If they return false, the default scroll behavior is\napplied. Scroll handlers should never initiate editor updates.\n*/\nEditorView.scrollHandler = scrollHandler;\n/**\nThis facet can be used to provide functions that create effects\nto be dispatched when the editor's focus state changes.\n*/\nEditorView.focusChangeEffect = focusChangeEffect;\n/**\nBy default, the editor assumes all its content has the same\n[text direction](https://codemirror.net/6/docs/ref/#view.Direction). Configure this with a `true`\nvalue to make it read the text direction of every (rendered)\nline separately.\n*/\nEditorView.perLineTextDirection = perLineTextDirection;\n/**\nAllows you to provide a function that should be called when the\nlibrary catches an exception from an extension (mostly from view\nplugins, but may be used by other extensions to route exceptions\nfrom user-code-provided callbacks). This is mostly useful for\ndebugging and logging. See [`logException`](https://codemirror.net/6/docs/ref/#view.logException).\n*/\nEditorView.exceptionSink = exceptionSink;\n/**\nA facet that can be used to register a function to be called\nevery time the view updates.\n*/\nEditorView.updateListener = updateListener;\n/**\nFacet that controls whether the editor content DOM is editable.\nWhen its highest-precedence value is `false`, the element will\nnot have its `contenteditable` attribute set. (Note that this\ndoesn't affect API calls that change the editor content, even\nwhen those are bound to keys or buttons. See the\n[`readOnly`](https://codemirror.net/6/docs/ref/#state.EditorState.readOnly) facet for that.)\n*/\nEditorView.editable = editable;\n/**\nAllows you to influence the way mouse selection happens. The\nfunctions in this facet will be called for a `mousedown` event\non the editor, and can return an object that overrides the way a\nselection is computed from that mouse click or drag.\n*/\nEditorView.mouseSelectionStyle = mouseSelectionStyle;\n/**\nFacet used to configure whether a given selection drag event\nshould move or copy the selection. The given predicate will be\ncalled with the `mousedown` event, and can return `true` when\nthe drag should move the content.\n*/\nEditorView.dragMovesSelection = dragMovesSelection$1;\n/**\nFacet used to configure whether a given selecting click adds a\nnew range to the existing selection or replaces it entirely. The\ndefault behavior is to check `event.metaKey` on macOS, and\n`event.ctrlKey` elsewhere.\n*/\nEditorView.clickAddsSelectionRange = clickAddsSelectionRange;\n/**\nA facet that determines which [decorations](https://codemirror.net/6/docs/ref/#view.Decoration)\nare shown in the view. Decorations can be provided in two\nways—directly, or via a function that takes an editor view.\n\nOnly decoration sets provided directly are allowed to influence\nthe editor's vertical layout structure. The ones provided as\nfunctions are called _after_ the new viewport has been computed,\nand thus **must not** introduce block widgets or replacing\ndecorations that cover line breaks.\n\nIf you want decorated ranges to behave like atomic units for\ncursor motion and deletion purposes, also provide the range set\ncontaining the decorations to\n[`EditorView.atomicRanges`](https://codemirror.net/6/docs/ref/#view.EditorView^atomicRanges).\n*/\nEditorView.decorations = decorations;\n/**\nFacet that works much like\n[`decorations`](https://codemirror.net/6/docs/ref/#view.EditorView^decorations), but puts its\ninputs at the very bottom of the precedence stack, meaning mark\ndecorations provided here will only be split by other, partially\noverlapping \\`outerDecorations\\` ranges, and wrap around all\nregular decorations. Use this for mark elements that should, as\nmuch as possible, remain in one piece.\n*/\nEditorView.outerDecorations = outerDecorations;\n/**\nUsed to provide ranges that should be treated as atoms as far as\ncursor motion is concerned. This causes methods like\n[`moveByChar`](https://codemirror.net/6/docs/ref/#view.EditorView.moveByChar) and\n[`moveVertically`](https://codemirror.net/6/docs/ref/#view.EditorView.moveVertically) (and the\ncommands built on top of them) to skip across such regions when\na selection endpoint would enter them. This does _not_ prevent\ndirect programmatic [selection\nupdates](https://codemirror.net/6/docs/ref/#state.TransactionSpec.selection) from moving into such\nregions.\n*/\nEditorView.atomicRanges = atomicRanges;\n/**\nWhen range decorations add a `unicode-bidi: isolate` style, they\nshould also include a\n[`bidiIsolate`](https://codemirror.net/6/docs/ref/#view.MarkDecorationSpec.bidiIsolate) property\nin their decoration spec, and be exposed through this facet, so\nthat the editor can compute the proper text order. (Other values\nfor `unicode-bidi`, except of course `normal`, are not\nsupported.)\n*/\nEditorView.bidiIsolatedRanges = bidiIsolatedRanges;\n/**\nFacet that allows extensions to provide additional scroll\nmargins (space around the sides of the scrolling element that\nshould be considered invisible). This can be useful when the\nplugin introduces elements that cover part of that element (for\nexample a horizontally fixed gutter).\n*/\nEditorView.scrollMargins = scrollMargins;\n/**\nThis facet records whether a dark theme is active. The extension\nreturned by [`theme`](https://codemirror.net/6/docs/ref/#view.EditorView^theme) automatically\nincludes an instance of this when the `dark` option is set to\ntrue.\n*/\nEditorView.darkTheme = darkTheme;\n/**\nProvides a Content Security Policy nonce to use when creating\nthe style sheets for the editor. Holds the empty string when no\nnonce has been provided.\n*/\nEditorView.cspNonce = /*@__PURE__*/Facet.define({ combine: values => values.length ? values[0] : \"\" });\n/**\nFacet that provides additional DOM attributes for the editor's\neditable DOM element.\n*/\nEditorView.contentAttributes = contentAttributes;\n/**\nFacet that provides DOM attributes for the editor's outer\nelement.\n*/\nEditorView.editorAttributes = editorAttributes;\n/**\nAn extension that enables line wrapping in the editor (by\nsetting CSS `white-space` to `pre-wrap` in the content).\n*/\nEditorView.lineWrapping = /*@__PURE__*/EditorView.contentAttributes.of({ \"class\": \"cm-lineWrapping\" });\n/**\nState effect used to include screen reader announcements in a\ntransaction. These will be added to the DOM in a visually hidden\nelement with `aria-live=\"polite\"` set, and should be used to\ndescribe effects that are visually obvious but may not be\nnoticed by screen reader users (such as moving to the next\nsearch match).\n*/\nEditorView.announce = /*@__PURE__*/StateEffect.define();\n// Maximum line length for which we compute accurate bidi info\nconst MaxBidiLine = 4096;\nconst BadMeasure = {};\nclass CachedOrder {\n    constructor(from, to, dir, isolates, fresh, order) {\n        this.from = from;\n        this.to = to;\n        this.dir = dir;\n        this.isolates = isolates;\n        this.fresh = fresh;\n        this.order = order;\n    }\n    static update(cache, changes) {\n        if (changes.empty && !cache.some(c => c.fresh))\n            return cache;\n        let result = [], lastDir = cache.length ? cache[cache.length - 1].dir : Direction.LTR;\n        for (let i = Math.max(0, cache.length - 10); i < cache.length; i++) {\n            let entry = cache[i];\n            if (entry.dir == lastDir && !changes.touchesRange(entry.from, entry.to))\n                result.push(new CachedOrder(changes.mapPos(entry.from, 1), changes.mapPos(entry.to, -1), entry.dir, entry.isolates, false, entry.order));\n        }\n        return result;\n    }\n}\nfunction attrsFromFacet(view, facet, base) {\n    for (let sources = view.state.facet(facet), i = sources.length - 1; i >= 0; i--) {\n        let source = sources[i], value = typeof source == \"function\" ? source(view) : source;\n        if (value)\n            combineAttrs(value, base);\n    }\n    return base;\n}\n\nconst currentPlatform = browser.mac ? \"mac\" : browser.windows ? \"win\" : browser.linux ? \"linux\" : \"key\";\nfunction normalizeKeyName(name, platform) {\n    const parts = name.split(/-(?!$)/);\n    let result = parts[parts.length - 1];\n    if (result == \"Space\")\n        result = \" \";\n    let alt, ctrl, shift, meta;\n    for (let i = 0; i < parts.length - 1; ++i) {\n        const mod = parts[i];\n        if (/^(cmd|meta|m)$/i.test(mod))\n            meta = true;\n        else if (/^a(lt)?$/i.test(mod))\n            alt = true;\n        else if (/^(c|ctrl|control)$/i.test(mod))\n            ctrl = true;\n        else if (/^s(hift)?$/i.test(mod))\n            shift = true;\n        else if (/^mod$/i.test(mod)) {\n            if (platform == \"mac\")\n                meta = true;\n            else\n                ctrl = true;\n        }\n        else\n            throw new Error(\"Unrecognized modifier name: \" + mod);\n    }\n    if (alt)\n        result = \"Alt-\" + result;\n    if (ctrl)\n        result = \"Ctrl-\" + result;\n    if (meta)\n        result = \"Meta-\" + result;\n    if (shift)\n        result = \"Shift-\" + result;\n    return result;\n}\nfunction modifiers(name, event, shift) {\n    if (event.altKey)\n        name = \"Alt-\" + name;\n    if (event.ctrlKey)\n        name = \"Ctrl-\" + name;\n    if (event.metaKey)\n        name = \"Meta-\" + name;\n    if (shift !== false && event.shiftKey)\n        name = \"Shift-\" + name;\n    return name;\n}\nconst handleKeyEvents = /*@__PURE__*/Prec.default(/*@__PURE__*/EditorView.domEventHandlers({\n    keydown(event, view) {\n        return runHandlers(getKeymap(view.state), event, view, \"editor\");\n    }\n}));\n/**\nFacet used for registering keymaps.\n\nYou can add multiple keymaps to an editor. Their priorities\ndetermine their precedence (the ones specified early or with high\npriority get checked first). When a handler has returned `true`\nfor a given key, no further handlers are called.\n*/\nconst keymap = /*@__PURE__*/Facet.define({ enables: handleKeyEvents });\nconst Keymaps = /*@__PURE__*/new WeakMap();\n// This is hidden behind an indirection, rather than directly computed\n// by the facet, to keep internal types out of the facet's type.\nfunction getKeymap(state) {\n    let bindings = state.facet(keymap);\n    let map = Keymaps.get(bindings);\n    if (!map)\n        Keymaps.set(bindings, map = buildKeymap(bindings.reduce((a, b) => a.concat(b), [])));\n    return map;\n}\n/**\nRun the key handlers registered for a given scope. The event\nobject should be a `\"keydown\"` event. Returns true if any of the\nhandlers handled it.\n*/\nfunction runScopeHandlers(view, event, scope) {\n    return runHandlers(getKeymap(view.state), event, view, scope);\n}\nlet storedPrefix = null;\nconst PrefixTimeout = 4000;\nfunction buildKeymap(bindings, platform = currentPlatform) {\n    let bound = Object.create(null);\n    let isPrefix = Object.create(null);\n    let checkPrefix = (name, is) => {\n        let current = isPrefix[name];\n        if (current == null)\n            isPrefix[name] = is;\n        else if (current != is)\n            throw new Error(\"Key binding \" + name + \" is used both as a regular binding and as a multi-stroke prefix\");\n    };\n    let add = (scope, key, command, preventDefault, stopPropagation) => {\n        var _a, _b;\n        let scopeObj = bound[scope] || (bound[scope] = Object.create(null));\n        let parts = key.split(/ (?!$)/).map(k => normalizeKeyName(k, platform));\n        for (let i = 1; i < parts.length; i++) {\n            let prefix = parts.slice(0, i).join(\" \");\n            checkPrefix(prefix, true);\n            if (!scopeObj[prefix])\n                scopeObj[prefix] = {\n                    preventDefault: true,\n                    stopPropagation: false,\n                    run: [(view) => {\n                            let ourObj = storedPrefix = { view, prefix, scope };\n                            setTimeout(() => { if (storedPrefix == ourObj)\n                                storedPrefix = null; }, PrefixTimeout);\n                            return true;\n                        }]\n                };\n        }\n        let full = parts.join(\" \");\n        checkPrefix(full, false);\n        let binding = scopeObj[full] || (scopeObj[full] = {\n            preventDefault: false,\n            stopPropagation: false,\n            run: ((_b = (_a = scopeObj._any) === null || _a === void 0 ? void 0 : _a.run) === null || _b === void 0 ? void 0 : _b.slice()) || []\n        });\n        if (command)\n            binding.run.push(command);\n        if (preventDefault)\n            binding.preventDefault = true;\n        if (stopPropagation)\n            binding.stopPropagation = true;\n    };\n    for (let b of bindings) {\n        let scopes = b.scope ? b.scope.split(\" \") : [\"editor\"];\n        if (b.any)\n            for (let scope of scopes) {\n                let scopeObj = bound[scope] || (bound[scope] = Object.create(null));\n                if (!scopeObj._any)\n                    scopeObj._any = { preventDefault: false, stopPropagation: false, run: [] };\n                let { any } = b;\n                for (let key in scopeObj)\n                    scopeObj[key].run.push(view => any(view, currentKeyEvent));\n            }\n        let name = b[platform] || b.key;\n        if (!name)\n            continue;\n        for (let scope of scopes) {\n            add(scope, name, b.run, b.preventDefault, b.stopPropagation);\n            if (b.shift)\n                add(scope, \"Shift-\" + name, b.shift, b.preventDefault, b.stopPropagation);\n        }\n    }\n    return bound;\n}\nlet currentKeyEvent = null;\nfunction runHandlers(map, event, view, scope) {\n    currentKeyEvent = event;\n    let name = keyName(event);\n    let charCode = codePointAt(name, 0), isChar = codePointSize(charCode) == name.length && name != \" \";\n    let prefix = \"\", handled = false, prevented = false, stopPropagation = false;\n    if (storedPrefix && storedPrefix.view == view && storedPrefix.scope == scope) {\n        prefix = storedPrefix.prefix + \" \";\n        if (modifierCodes.indexOf(event.keyCode) < 0) {\n            prevented = true;\n            storedPrefix = null;\n        }\n    }\n    let ran = new Set;\n    let runFor = (binding) => {\n        if (binding) {\n            for (let cmd of binding.run)\n                if (!ran.has(cmd)) {\n                    ran.add(cmd);\n                    if (cmd(view)) {\n                        if (binding.stopPropagation)\n                            stopPropagation = true;\n                        return true;\n                    }\n                }\n            if (binding.preventDefault) {\n                if (binding.stopPropagation)\n                    stopPropagation = true;\n                prevented = true;\n            }\n        }\n        return false;\n    };\n    let scopeObj = map[scope], baseName, shiftName;\n    if (scopeObj) {\n        if (runFor(scopeObj[prefix + modifiers(name, event, !isChar)])) {\n            handled = true;\n        }\n        else if (isChar && (event.altKey || event.metaKey || event.ctrlKey) &&\n            // Ctrl-Alt may be used for AltGr on Windows\n            !(browser.windows && event.ctrlKey && event.altKey) &&\n            (baseName = base[event.keyCode]) && baseName != name) {\n            if (runFor(scopeObj[prefix + modifiers(baseName, event, true)])) {\n                handled = true;\n            }\n            else if (event.shiftKey && (shiftName = shift[event.keyCode]) != name && shiftName != baseName &&\n                runFor(scopeObj[prefix + modifiers(shiftName, event, false)])) {\n                handled = true;\n            }\n        }\n        else if (isChar && event.shiftKey &&\n            runFor(scopeObj[prefix + modifiers(name, event, true)])) {\n            handled = true;\n        }\n        if (!handled && runFor(scopeObj._any))\n            handled = true;\n    }\n    if (prevented)\n        handled = true;\n    if (handled && stopPropagation)\n        event.stopPropagation();\n    currentKeyEvent = null;\n    return handled;\n}\n\n/**\nImplementation of [`LayerMarker`](https://codemirror.net/6/docs/ref/#view.LayerMarker) that creates\na rectangle at a given set of coordinates.\n*/\nclass RectangleMarker {\n    /**\n    Create a marker with the given class and dimensions. If `width`\n    is null, the DOM element will get no width style.\n    */\n    constructor(className, \n    /**\n    The left position of the marker (in pixels, document-relative).\n    */\n    left, \n    /**\n    The top position of the marker.\n    */\n    top, \n    /**\n    The width of the marker, or null if it shouldn't get a width assigned.\n    */\n    width, \n    /**\n    The height of the marker.\n    */\n    height) {\n        this.className = className;\n        this.left = left;\n        this.top = top;\n        this.width = width;\n        this.height = height;\n    }\n    draw() {\n        let elt = document.createElement(\"div\");\n        elt.className = this.className;\n        this.adjust(elt);\n        return elt;\n    }\n    update(elt, prev) {\n        if (prev.className != this.className)\n            return false;\n        this.adjust(elt);\n        return true;\n    }\n    adjust(elt) {\n        elt.style.left = this.left + \"px\";\n        elt.style.top = this.top + \"px\";\n        if (this.width != null)\n            elt.style.width = this.width + \"px\";\n        elt.style.height = this.height + \"px\";\n    }\n    eq(p) {\n        return this.left == p.left && this.top == p.top && this.width == p.width && this.height == p.height &&\n            this.className == p.className;\n    }\n    /**\n    Create a set of rectangles for the given selection range,\n    assigning them theclass`className`. Will create a single\n    rectangle for empty ranges, and a set of selection-style\n    rectangles covering the range's content (in a bidi-aware\n    way) for non-empty ones.\n    */\n    static forRange(view, className, range) {\n        if (range.empty) {\n            let pos = view.coordsAtPos(range.head, range.assoc || 1);\n            if (!pos)\n                return [];\n            let base = getBase(view);\n            return [new RectangleMarker(className, pos.left - base.left, pos.top - base.top, null, pos.bottom - pos.top)];\n        }\n        else {\n            return rectanglesForRange(view, className, range);\n        }\n    }\n}\nfunction getBase(view) {\n    let rect = view.scrollDOM.getBoundingClientRect();\n    let left = view.textDirection == Direction.LTR ? rect.left : rect.right - view.scrollDOM.clientWidth * view.scaleX;\n    return { left: left - view.scrollDOM.scrollLeft * view.scaleX, top: rect.top - view.scrollDOM.scrollTop * view.scaleY };\n}\nfunction wrappedLine(view, pos, side, inside) {\n    let coords = view.coordsAtPos(pos, side * 2);\n    if (!coords)\n        return inside;\n    let editorRect = view.dom.getBoundingClientRect();\n    let y = (coords.top + coords.bottom) / 2;\n    let left = view.posAtCoords({ x: editorRect.left + 1, y });\n    let right = view.posAtCoords({ x: editorRect.right - 1, y });\n    if (left == null || right == null)\n        return inside;\n    return { from: Math.max(inside.from, Math.min(left, right)), to: Math.min(inside.to, Math.max(left, right)) };\n}\nfunction rectanglesForRange(view, className, range) {\n    if (range.to <= view.viewport.from || range.from >= view.viewport.to)\n        return [];\n    let from = Math.max(range.from, view.viewport.from), to = Math.min(range.to, view.viewport.to);\n    let ltr = view.textDirection == Direction.LTR;\n    let content = view.contentDOM, contentRect = content.getBoundingClientRect(), base = getBase(view);\n    let lineElt = content.querySelector(\".cm-line\"), lineStyle = lineElt && window.getComputedStyle(lineElt);\n    let leftSide = contentRect.left +\n        (lineStyle ? parseInt(lineStyle.paddingLeft) + Math.min(0, parseInt(lineStyle.textIndent)) : 0);\n    let rightSide = contentRect.right - (lineStyle ? parseInt(lineStyle.paddingRight) : 0);\n    let startBlock = blockAt(view, from), endBlock = blockAt(view, to);\n    let visualStart = startBlock.type == BlockType.Text ? startBlock : null;\n    let visualEnd = endBlock.type == BlockType.Text ? endBlock : null;\n    if (visualStart && (view.lineWrapping || startBlock.widgetLineBreaks))\n        visualStart = wrappedLine(view, from, 1, visualStart);\n    if (visualEnd && (view.lineWrapping || endBlock.widgetLineBreaks))\n        visualEnd = wrappedLine(view, to, -1, visualEnd);\n    if (visualStart && visualEnd && visualStart.from == visualEnd.from && visualStart.to == visualEnd.to) {\n        return pieces(drawForLine(range.from, range.to, visualStart));\n    }\n    else {\n        let top = visualStart ? drawForLine(range.from, null, visualStart) : drawForWidget(startBlock, false);\n        let bottom = visualEnd ? drawForLine(null, range.to, visualEnd) : drawForWidget(endBlock, true);\n        let between = [];\n        if ((visualStart || startBlock).to < (visualEnd || endBlock).from - (visualStart && visualEnd ? 1 : 0) ||\n            startBlock.widgetLineBreaks > 1 && top.bottom + view.defaultLineHeight / 2 < bottom.top)\n            between.push(piece(leftSide, top.bottom, rightSide, bottom.top));\n        else if (top.bottom < bottom.top && view.elementAtHeight((top.bottom + bottom.top) / 2).type == BlockType.Text)\n            top.bottom = bottom.top = (top.bottom + bottom.top) / 2;\n        return pieces(top).concat(between).concat(pieces(bottom));\n    }\n    function piece(left, top, right, bottom) {\n        return new RectangleMarker(className, left - base.left, top - base.top - 0.01 /* C.Epsilon */, right - left, bottom - top + 0.01 /* C.Epsilon */);\n    }\n    function pieces({ top, bottom, horizontal }) {\n        let pieces = [];\n        for (let i = 0; i < horizontal.length; i += 2)\n            pieces.push(piece(horizontal[i], top, horizontal[i + 1], bottom));\n        return pieces;\n    }\n    // Gets passed from/to in line-local positions\n    function drawForLine(from, to, line) {\n        let top = 1e9, bottom = -1e9, horizontal = [];\n        function addSpan(from, fromOpen, to, toOpen, dir) {\n            // Passing 2/-2 is a kludge to force the view to return\n            // coordinates on the proper side of block widgets, since\n            // normalizing the side there, though appropriate for most\n            // coordsAtPos queries, would break selection drawing.\n            let fromCoords = view.coordsAtPos(from, (from == line.to ? -2 : 2));\n            let toCoords = view.coordsAtPos(to, (to == line.from ? 2 : -2));\n            if (!fromCoords || !toCoords)\n                return;\n            top = Math.min(fromCoords.top, toCoords.top, top);\n            bottom = Math.max(fromCoords.bottom, toCoords.bottom, bottom);\n            if (dir == Direction.LTR)\n                horizontal.push(ltr && fromOpen ? leftSide : fromCoords.left, ltr && toOpen ? rightSide : toCoords.right);\n            else\n                horizontal.push(!ltr && toOpen ? leftSide : toCoords.left, !ltr && fromOpen ? rightSide : fromCoords.right);\n        }\n        let start = from !== null && from !== void 0 ? from : line.from, end = to !== null && to !== void 0 ? to : line.to;\n        // Split the range by visible range and document line\n        for (let r of view.visibleRanges)\n            if (r.to > start && r.from < end) {\n                for (let pos = Math.max(r.from, start), endPos = Math.min(r.to, end);;) {\n                    let docLine = view.state.doc.lineAt(pos);\n                    for (let span of view.bidiSpans(docLine)) {\n                        let spanFrom = span.from + docLine.from, spanTo = span.to + docLine.from;\n                        if (spanFrom >= endPos)\n                            break;\n                        if (spanTo > pos)\n                            addSpan(Math.max(spanFrom, pos), from == null && spanFrom <= start, Math.min(spanTo, endPos), to == null && spanTo >= end, span.dir);\n                    }\n                    pos = docLine.to + 1;\n                    if (pos >= endPos)\n                        break;\n                }\n            }\n        if (horizontal.length == 0)\n            addSpan(start, from == null, end, to == null, view.textDirection);\n        return { top, bottom, horizontal };\n    }\n    function drawForWidget(block, top) {\n        let y = contentRect.top + (top ? block.top : block.bottom);\n        return { top: y, bottom: y, horizontal: [] };\n    }\n}\nfunction sameMarker(a, b) {\n    return a.constructor == b.constructor && a.eq(b);\n}\nclass LayerView {\n    constructor(view, layer) {\n        this.view = view;\n        this.layer = layer;\n        this.drawn = [];\n        this.scaleX = 1;\n        this.scaleY = 1;\n        this.measureReq = { read: this.measure.bind(this), write: this.draw.bind(this) };\n        this.dom = view.scrollDOM.appendChild(document.createElement(\"div\"));\n        this.dom.classList.add(\"cm-layer\");\n        if (layer.above)\n            this.dom.classList.add(\"cm-layer-above\");\n        if (layer.class)\n            this.dom.classList.add(layer.class);\n        this.scale();\n        this.dom.setAttribute(\"aria-hidden\", \"true\");\n        this.setOrder(view.state);\n        view.requestMeasure(this.measureReq);\n        if (layer.mount)\n            layer.mount(this.dom, view);\n    }\n    update(update) {\n        if (update.startState.facet(layerOrder) != update.state.facet(layerOrder))\n            this.setOrder(update.state);\n        if (this.layer.update(update, this.dom) || update.geometryChanged) {\n            this.scale();\n            update.view.requestMeasure(this.measureReq);\n        }\n    }\n    docViewUpdate(view) {\n        if (this.layer.updateOnDocViewUpdate !== false)\n            view.requestMeasure(this.measureReq);\n    }\n    setOrder(state) {\n        let pos = 0, order = state.facet(layerOrder);\n        while (pos < order.length && order[pos] != this.layer)\n            pos++;\n        this.dom.style.zIndex = String((this.layer.above ? 150 : -1) - pos);\n    }\n    measure() {\n        return this.layer.markers(this.view);\n    }\n    scale() {\n        let { scaleX, scaleY } = this.view;\n        if (scaleX != this.scaleX || scaleY != this.scaleY) {\n            this.scaleX = scaleX;\n            this.scaleY = scaleY;\n            this.dom.style.transform = `scale(${1 / scaleX}, ${1 / scaleY})`;\n        }\n    }\n    draw(markers) {\n        if (markers.length != this.drawn.length || markers.some((p, i) => !sameMarker(p, this.drawn[i]))) {\n            let old = this.dom.firstChild, oldI = 0;\n            for (let marker of markers) {\n                if (marker.update && old && marker.constructor && this.drawn[oldI].constructor &&\n                    marker.update(old, this.drawn[oldI])) {\n                    old = old.nextSibling;\n                    oldI++;\n                }\n                else {\n                    this.dom.insertBefore(marker.draw(), old);\n                }\n            }\n            while (old) {\n                let next = old.nextSibling;\n                old.remove();\n                old = next;\n            }\n            this.drawn = markers;\n        }\n    }\n    destroy() {\n        if (this.layer.destroy)\n            this.layer.destroy(this.dom, this.view);\n        this.dom.remove();\n    }\n}\nconst layerOrder = /*@__PURE__*/Facet.define();\n/**\nDefine a layer.\n*/\nfunction layer(config) {\n    return [\n        ViewPlugin.define(v => new LayerView(v, config)),\n        layerOrder.of(config)\n    ];\n}\n\nconst CanHidePrimary = !browser.ios; // FIXME test IE\nconst selectionConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            cursorBlinkRate: 1200,\n            drawRangeCursor: true\n        }, {\n            cursorBlinkRate: (a, b) => Math.min(a, b),\n            drawRangeCursor: (a, b) => a || b\n        });\n    }\n});\n/**\nReturns an extension that hides the browser's native selection and\ncursor, replacing the selection with a background behind the text\n(with the `cm-selectionBackground` class), and the\ncursors with elements overlaid over the code (using\n`cm-cursor-primary` and `cm-cursor-secondary`).\n\nThis allows the editor to display secondary selection ranges, and\ntends to produce a type of selection more in line with that users\nexpect in a text editor (the native selection styling will often\nleave gaps between lines and won't fill the horizontal space after\na line when the selection continues past it).\n\nIt does have a performance cost, in that it requires an extra DOM\nlayout cycle for many updates (the selection is drawn based on DOM\nlayout information that's only available after laying out the\ncontent).\n*/\nfunction drawSelection(config = {}) {\n    return [\n        selectionConfig.of(config),\n        cursorLayer,\n        selectionLayer,\n        hideNativeSelection,\n        nativeSelectionHidden.of(true)\n    ];\n}\n/**\nRetrieve the [`drawSelection`](https://codemirror.net/6/docs/ref/#view.drawSelection) configuration\nfor this state. (Note that this will return a set of defaults even\nif `drawSelection` isn't enabled.)\n*/\nfunction getDrawSelectionConfig(state) {\n    return state.facet(selectionConfig);\n}\nfunction configChanged(update) {\n    return update.startState.facet(selectionConfig) != update.state.facet(selectionConfig);\n}\nconst cursorLayer = /*@__PURE__*/layer({\n    above: true,\n    markers(view) {\n        let { state } = view, conf = state.facet(selectionConfig);\n        let cursors = [];\n        for (let r of state.selection.ranges) {\n            let prim = r == state.selection.main;\n            if (r.empty ? !prim || CanHidePrimary : conf.drawRangeCursor) {\n                let className = prim ? \"cm-cursor cm-cursor-primary\" : \"cm-cursor cm-cursor-secondary\";\n                let cursor = r.empty ? r : EditorSelection.cursor(r.head, r.head > r.anchor ? -1 : 1);\n                for (let piece of RectangleMarker.forRange(view, className, cursor))\n                    cursors.push(piece);\n            }\n        }\n        return cursors;\n    },\n    update(update, dom) {\n        if (update.transactions.some(tr => tr.selection))\n            dom.style.animationName = dom.style.animationName == \"cm-blink\" ? \"cm-blink2\" : \"cm-blink\";\n        let confChange = configChanged(update);\n        if (confChange)\n            setBlinkRate(update.state, dom);\n        return update.docChanged || update.selectionSet || confChange;\n    },\n    mount(dom, view) {\n        setBlinkRate(view.state, dom);\n    },\n    class: \"cm-cursorLayer\"\n});\nfunction setBlinkRate(state, dom) {\n    dom.style.animationDuration = state.facet(selectionConfig).cursorBlinkRate + \"ms\";\n}\nconst selectionLayer = /*@__PURE__*/layer({\n    above: false,\n    markers(view) {\n        return view.state.selection.ranges.map(r => r.empty ? [] : RectangleMarker.forRange(view, \"cm-selectionBackground\", r))\n            .reduce((a, b) => a.concat(b));\n    },\n    update(update, dom) {\n        return update.docChanged || update.selectionSet || update.viewportChanged || configChanged(update);\n    },\n    class: \"cm-selectionLayer\"\n});\nconst themeSpec = {\n    \".cm-line\": {\n        \"& ::selection, &::selection\": { backgroundColor: \"transparent !important\" },\n    },\n    \".cm-content\": {\n        \"& :focus\": {\n            caretColor: \"initial !important\",\n            \"&::selection, & ::selection\": {\n                backgroundColor: \"Highlight !important\"\n            }\n        }\n    }\n};\nif (CanHidePrimary)\n    themeSpec[\".cm-line\"].caretColor = themeSpec[\".cm-content\"].caretColor = \"transparent !important\";\nconst hideNativeSelection = /*@__PURE__*/Prec.highest(/*@__PURE__*/EditorView.theme(themeSpec));\n\nconst setDropCursorPos = /*@__PURE__*/StateEffect.define({\n    map(pos, mapping) { return pos == null ? null : mapping.mapPos(pos); }\n});\nconst dropCursorPos = /*@__PURE__*/StateField.define({\n    create() { return null; },\n    update(pos, tr) {\n        if (pos != null)\n            pos = tr.changes.mapPos(pos);\n        return tr.effects.reduce((pos, e) => e.is(setDropCursorPos) ? e.value : pos, pos);\n    }\n});\nconst drawDropCursor = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.cursor = null;\n        this.measureReq = { read: this.readPos.bind(this), write: this.drawCursor.bind(this) };\n    }\n    update(update) {\n        var _a;\n        let cursorPos = update.state.field(dropCursorPos);\n        if (cursorPos == null) {\n            if (this.cursor != null) {\n                (_a = this.cursor) === null || _a === void 0 ? void 0 : _a.remove();\n                this.cursor = null;\n            }\n        }\n        else {\n            if (!this.cursor) {\n                this.cursor = this.view.scrollDOM.appendChild(document.createElement(\"div\"));\n                this.cursor.className = \"cm-dropCursor\";\n            }\n            if (update.startState.field(dropCursorPos) != cursorPos || update.docChanged || update.geometryChanged)\n                this.view.requestMeasure(this.measureReq);\n        }\n    }\n    readPos() {\n        let { view } = this;\n        let pos = view.state.field(dropCursorPos);\n        let rect = pos != null && view.coordsAtPos(pos);\n        if (!rect)\n            return null;\n        let outer = view.scrollDOM.getBoundingClientRect();\n        return {\n            left: rect.left - outer.left + view.scrollDOM.scrollLeft * view.scaleX,\n            top: rect.top - outer.top + view.scrollDOM.scrollTop * view.scaleY,\n            height: rect.bottom - rect.top\n        };\n    }\n    drawCursor(pos) {\n        if (this.cursor) {\n            let { scaleX, scaleY } = this.view;\n            if (pos) {\n                this.cursor.style.left = pos.left / scaleX + \"px\";\n                this.cursor.style.top = pos.top / scaleY + \"px\";\n                this.cursor.style.height = pos.height / scaleY + \"px\";\n            }\n            else {\n                this.cursor.style.left = \"-100000px\";\n            }\n        }\n    }\n    destroy() {\n        if (this.cursor)\n            this.cursor.remove();\n    }\n    setDropPos(pos) {\n        if (this.view.state.field(dropCursorPos) != pos)\n            this.view.dispatch({ effects: setDropCursorPos.of(pos) });\n    }\n}, {\n    eventObservers: {\n        dragover(event) {\n            this.setDropPos(this.view.posAtCoords({ x: event.clientX, y: event.clientY }));\n        },\n        dragleave(event) {\n            if (event.target == this.view.contentDOM || !this.view.contentDOM.contains(event.relatedTarget))\n                this.setDropPos(null);\n        },\n        dragend() {\n            this.setDropPos(null);\n        },\n        drop() {\n            this.setDropPos(null);\n        }\n    }\n});\n/**\nDraws a cursor at the current drop position when something is\ndragged over the editor.\n*/\nfunction dropCursor() {\n    return [dropCursorPos, drawDropCursor];\n}\n\nfunction iterMatches(doc, re, from, to, f) {\n    re.lastIndex = 0;\n    for (let cursor = doc.iterRange(from, to), pos = from, m; !cursor.next().done; pos += cursor.value.length) {\n        if (!cursor.lineBreak)\n            while (m = re.exec(cursor.value))\n                f(pos + m.index, m);\n    }\n}\nfunction matchRanges(view, maxLength) {\n    let visible = view.visibleRanges;\n    if (visible.length == 1 && visible[0].from == view.viewport.from &&\n        visible[0].to == view.viewport.to)\n        return visible;\n    let result = [];\n    for (let { from, to } of visible) {\n        from = Math.max(view.state.doc.lineAt(from).from, from - maxLength);\n        to = Math.min(view.state.doc.lineAt(to).to, to + maxLength);\n        if (result.length && result[result.length - 1].to >= from)\n            result[result.length - 1].to = to;\n        else\n            result.push({ from, to });\n    }\n    return result;\n}\n/**\nHelper class used to make it easier to maintain decorations on\nvisible code that matches a given regular expression. To be used\nin a [view plugin](https://codemirror.net/6/docs/ref/#view.ViewPlugin). Instances of this object\nrepresent a matching configuration.\n*/\nclass MatchDecorator {\n    /**\n    Create a decorator.\n    */\n    constructor(config) {\n        const { regexp, decoration, decorate, boundary, maxLength = 1000 } = config;\n        if (!regexp.global)\n            throw new RangeError(\"The regular expression given to MatchDecorator should have its 'g' flag set\");\n        this.regexp = regexp;\n        if (decorate) {\n            this.addMatch = (match, view, from, add) => decorate(add, from, from + match[0].length, match, view);\n        }\n        else if (typeof decoration == \"function\") {\n            this.addMatch = (match, view, from, add) => {\n                let deco = decoration(match, view, from);\n                if (deco)\n                    add(from, from + match[0].length, deco);\n            };\n        }\n        else if (decoration) {\n            this.addMatch = (match, _view, from, add) => add(from, from + match[0].length, decoration);\n        }\n        else {\n            throw new RangeError(\"Either 'decorate' or 'decoration' should be provided to MatchDecorator\");\n        }\n        this.boundary = boundary;\n        this.maxLength = maxLength;\n    }\n    /**\n    Compute the full set of decorations for matches in the given\n    view's viewport. You'll want to call this when initializing your\n    plugin.\n    */\n    createDeco(view) {\n        let build = new RangeSetBuilder(), add = build.add.bind(build);\n        for (let { from, to } of matchRanges(view, this.maxLength))\n            iterMatches(view.state.doc, this.regexp, from, to, (from, m) => this.addMatch(m, view, from, add));\n        return build.finish();\n    }\n    /**\n    Update a set of decorations for a view update. `deco` _must_ be\n    the set of decorations produced by _this_ `MatchDecorator` for\n    the view state before the update.\n    */\n    updateDeco(update, deco) {\n        let changeFrom = 1e9, changeTo = -1;\n        if (update.docChanged)\n            update.changes.iterChanges((_f, _t, from, to) => {\n                if (to > update.view.viewport.from && from < update.view.viewport.to) {\n                    changeFrom = Math.min(from, changeFrom);\n                    changeTo = Math.max(to, changeTo);\n                }\n            });\n        if (update.viewportChanged || changeTo - changeFrom > 1000)\n            return this.createDeco(update.view);\n        if (changeTo > -1)\n            return this.updateRange(update.view, deco.map(update.changes), changeFrom, changeTo);\n        return deco;\n    }\n    updateRange(view, deco, updateFrom, updateTo) {\n        for (let r of view.visibleRanges) {\n            let from = Math.max(r.from, updateFrom), to = Math.min(r.to, updateTo);\n            if (to > from) {\n                let fromLine = view.state.doc.lineAt(from), toLine = fromLine.to < to ? view.state.doc.lineAt(to) : fromLine;\n                let start = Math.max(r.from, fromLine.from), end = Math.min(r.to, toLine.to);\n                if (this.boundary) {\n                    for (; from > fromLine.from; from--)\n                        if (this.boundary.test(fromLine.text[from - 1 - fromLine.from])) {\n                            start = from;\n                            break;\n                        }\n                    for (; to < toLine.to; to++)\n                        if (this.boundary.test(toLine.text[to - toLine.from])) {\n                            end = to;\n                            break;\n                        }\n                }\n                let ranges = [], m;\n                let add = (from, to, deco) => ranges.push(deco.range(from, to));\n                if (fromLine == toLine) {\n                    this.regexp.lastIndex = start - fromLine.from;\n                    while ((m = this.regexp.exec(fromLine.text)) && m.index < end - fromLine.from)\n                        this.addMatch(m, view, m.index + fromLine.from, add);\n                }\n                else {\n                    iterMatches(view.state.doc, this.regexp, start, end, (from, m) => this.addMatch(m, view, from, add));\n                }\n                deco = deco.update({ filterFrom: start, filterTo: end, filter: (from, to) => from < start || to > end, add: ranges });\n            }\n        }\n        return deco;\n    }\n}\n\nconst UnicodeRegexpSupport = /x/.unicode != null ? \"gu\" : \"g\";\nconst Specials = /*@__PURE__*/new RegExp(\"[\\u0000-\\u0008\\u000a-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\u202d\\u202e\\u2066\\u2067\\u2069\\ufeff\\ufff9-\\ufffc]\", UnicodeRegexpSupport);\nconst Names = {\n    0: \"null\",\n    7: \"bell\",\n    8: \"backspace\",\n    10: \"newline\",\n    11: \"vertical tab\",\n    13: \"carriage return\",\n    27: \"escape\",\n    8203: \"zero width space\",\n    8204: \"zero width non-joiner\",\n    8205: \"zero width joiner\",\n    8206: \"left-to-right mark\",\n    8207: \"right-to-left mark\",\n    8232: \"line separator\",\n    8237: \"left-to-right override\",\n    8238: \"right-to-left override\",\n    8294: \"left-to-right isolate\",\n    8295: \"right-to-left isolate\",\n    8297: \"pop directional isolate\",\n    8233: \"paragraph separator\",\n    65279: \"zero width no-break space\",\n    65532: \"object replacement\"\n};\nlet _supportsTabSize = null;\nfunction supportsTabSize() {\n    var _a;\n    if (_supportsTabSize == null && typeof document != \"undefined\" && document.body) {\n        let styles = document.body.style;\n        _supportsTabSize = ((_a = styles.tabSize) !== null && _a !== void 0 ? _a : styles.MozTabSize) != null;\n    }\n    return _supportsTabSize || false;\n}\nconst specialCharConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        let config = combineConfig(configs, {\n            render: null,\n            specialChars: Specials,\n            addSpecialChars: null\n        });\n        if (config.replaceTabs = !supportsTabSize())\n            config.specialChars = new RegExp(\"\\t|\" + config.specialChars.source, UnicodeRegexpSupport);\n        if (config.addSpecialChars)\n            config.specialChars = new RegExp(config.specialChars.source + \"|\" + config.addSpecialChars.source, UnicodeRegexpSupport);\n        return config;\n    }\n});\n/**\nReturns an extension that installs highlighting of special\ncharacters.\n*/\nfunction highlightSpecialChars(\n/**\nConfiguration options.\n*/\nconfig = {}) {\n    return [specialCharConfig.of(config), specialCharPlugin()];\n}\nlet _plugin = null;\nfunction specialCharPlugin() {\n    return _plugin || (_plugin = ViewPlugin.fromClass(class {\n        constructor(view) {\n            this.view = view;\n            this.decorations = Decoration.none;\n            this.decorationCache = Object.create(null);\n            this.decorator = this.makeDecorator(view.state.facet(specialCharConfig));\n            this.decorations = this.decorator.createDeco(view);\n        }\n        makeDecorator(conf) {\n            return new MatchDecorator({\n                regexp: conf.specialChars,\n                decoration: (m, view, pos) => {\n                    let { doc } = view.state;\n                    let code = codePointAt(m[0], 0);\n                    if (code == 9) {\n                        let line = doc.lineAt(pos);\n                        let size = view.state.tabSize, col = countColumn(line.text, size, pos - line.from);\n                        return Decoration.replace({\n                            widget: new TabWidget((size - (col % size)) * this.view.defaultCharacterWidth / this.view.scaleX)\n                        });\n                    }\n                    return this.decorationCache[code] ||\n                        (this.decorationCache[code] = Decoration.replace({ widget: new SpecialCharWidget(conf, code) }));\n                },\n                boundary: conf.replaceTabs ? undefined : /[^]/\n            });\n        }\n        update(update) {\n            let conf = update.state.facet(specialCharConfig);\n            if (update.startState.facet(specialCharConfig) != conf) {\n                this.decorator = this.makeDecorator(conf);\n                this.decorations = this.decorator.createDeco(update.view);\n            }\n            else {\n                this.decorations = this.decorator.updateDeco(update, this.decorations);\n            }\n        }\n    }, {\n        decorations: v => v.decorations\n    }));\n}\nconst DefaultPlaceholder = \"\\u2022\";\n// Assigns placeholder characters from the Control Pictures block to\n// ASCII control characters\nfunction placeholder$1(code) {\n    if (code >= 32)\n        return DefaultPlaceholder;\n    if (code == 10)\n        return \"\\u2424\";\n    return String.fromCharCode(9216 + code);\n}\nclass SpecialCharWidget extends WidgetType {\n    constructor(options, code) {\n        super();\n        this.options = options;\n        this.code = code;\n    }\n    eq(other) { return other.code == this.code; }\n    toDOM(view) {\n        let ph = placeholder$1(this.code);\n        let desc = view.state.phrase(\"Control character\") + \" \" + (Names[this.code] || \"0x\" + this.code.toString(16));\n        let custom = this.options.render && this.options.render(this.code, desc, ph);\n        if (custom)\n            return custom;\n        let span = document.createElement(\"span\");\n        span.textContent = ph;\n        span.title = desc;\n        span.setAttribute(\"aria-label\", desc);\n        span.className = \"cm-specialChar\";\n        return span;\n    }\n    ignoreEvent() { return false; }\n}\nclass TabWidget extends WidgetType {\n    constructor(width) {\n        super();\n        this.width = width;\n    }\n    eq(other) { return other.width == this.width; }\n    toDOM() {\n        let span = document.createElement(\"span\");\n        span.textContent = \"\\t\";\n        span.className = \"cm-tab\";\n        span.style.width = this.width + \"px\";\n        return span;\n    }\n    ignoreEvent() { return false; }\n}\n\nconst plugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor() {\n        this.height = 1000;\n        this.attrs = { style: \"padding-bottom: 1000px\" };\n    }\n    update(update) {\n        let { view } = update;\n        let height = view.viewState.editorHeight -\n            view.defaultLineHeight - view.documentPadding.top - 0.5;\n        if (height >= 0 && height != this.height) {\n            this.height = height;\n            this.attrs = { style: `padding-bottom: ${height}px` };\n        }\n    }\n});\n/**\nReturns an extension that makes sure the content has a bottom\nmargin equivalent to the height of the editor, minus one line\nheight, so that every line in the document can be scrolled to the\ntop of the editor.\n\nThis is only meaningful when the editor is scrollable, and should\nnot be enabled in editors that take the size of their content.\n*/\nfunction scrollPastEnd() {\n    return [plugin, contentAttributes.of(view => { var _a; return ((_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.attrs) || null; })];\n}\n\n/**\nMark lines that have a cursor on them with the `\"cm-activeLine\"`\nDOM class.\n*/\nfunction highlightActiveLine() {\n    return activeLineHighlighter;\n}\nconst lineDeco = /*@__PURE__*/Decoration.line({ class: \"cm-activeLine\" });\nconst activeLineHighlighter = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.decorations = this.getDeco(view);\n    }\n    update(update) {\n        if (update.docChanged || update.selectionSet)\n            this.decorations = this.getDeco(update.view);\n    }\n    getDeco(view) {\n        let lastLineStart = -1, deco = [];\n        for (let r of view.state.selection.ranges) {\n            let line = view.lineBlockAt(r.head);\n            if (line.from > lastLineStart) {\n                deco.push(lineDeco.range(line.from));\n                lastLineStart = line.from;\n            }\n        }\n        return Decoration.set(deco);\n    }\n}, {\n    decorations: v => v.decorations\n});\n\nclass Placeholder extends WidgetType {\n    constructor(content) {\n        super();\n        this.content = content;\n    }\n    toDOM() {\n        let wrap = document.createElement(\"span\");\n        wrap.className = \"cm-placeholder\";\n        wrap.style.pointerEvents = \"none\";\n        wrap.appendChild(typeof this.content == \"string\" ? document.createTextNode(this.content) : this.content);\n        if (typeof this.content == \"string\")\n            wrap.setAttribute(\"aria-label\", \"placeholder \" + this.content);\n        else\n            wrap.setAttribute(\"aria-hidden\", \"true\");\n        return wrap;\n    }\n    coordsAt(dom) {\n        let rects = dom.firstChild ? clientRectsFor(dom.firstChild) : [];\n        if (!rects.length)\n            return null;\n        let style = window.getComputedStyle(dom.parentNode);\n        let rect = flattenRect(rects[0], style.direction != \"rtl\");\n        let lineHeight = parseInt(style.lineHeight);\n        if (rect.bottom - rect.top > lineHeight * 1.5)\n            return { left: rect.left, right: rect.right, top: rect.top, bottom: rect.top + lineHeight };\n        return rect;\n    }\n    ignoreEvent() { return false; }\n}\n/**\nExtension that enables a placeholder—a piece of example content\nto show when the editor is empty.\n*/\nfunction placeholder(content) {\n    return ViewPlugin.fromClass(class {\n        constructor(view) {\n            this.view = view;\n            this.placeholder = content\n                ? Decoration.set([Decoration.widget({ widget: new Placeholder(content), side: 1 }).range(0)])\n                : Decoration.none;\n        }\n        get decorations() { return this.view.state.doc.length ? Decoration.none : this.placeholder; }\n    }, { decorations: v => v.decorations });\n}\n\n// Don't compute precise column positions for line offsets above this\n// (since it could get expensive). Assume offset==column for them.\nconst MaxOff = 2000;\nfunction rectangleFor(state, a, b) {\n    let startLine = Math.min(a.line, b.line), endLine = Math.max(a.line, b.line);\n    let ranges = [];\n    if (a.off > MaxOff || b.off > MaxOff || a.col < 0 || b.col < 0) {\n        let startOff = Math.min(a.off, b.off), endOff = Math.max(a.off, b.off);\n        for (let i = startLine; i <= endLine; i++) {\n            let line = state.doc.line(i);\n            if (line.length <= endOff)\n                ranges.push(EditorSelection.range(line.from + startOff, line.to + endOff));\n        }\n    }\n    else {\n        let startCol = Math.min(a.col, b.col), endCol = Math.max(a.col, b.col);\n        for (let i = startLine; i <= endLine; i++) {\n            let line = state.doc.line(i);\n            let start = findColumn(line.text, startCol, state.tabSize, true);\n            if (start < 0) {\n                ranges.push(EditorSelection.cursor(line.to));\n            }\n            else {\n                let end = findColumn(line.text, endCol, state.tabSize);\n                ranges.push(EditorSelection.range(line.from + start, line.from + end));\n            }\n        }\n    }\n    return ranges;\n}\nfunction absoluteColumn(view, x) {\n    let ref = view.coordsAtPos(view.viewport.from);\n    return ref ? Math.round(Math.abs((ref.left - x) / view.defaultCharacterWidth)) : -1;\n}\nfunction getPos(view, event) {\n    let offset = view.posAtCoords({ x: event.clientX, y: event.clientY }, false);\n    let line = view.state.doc.lineAt(offset), off = offset - line.from;\n    let col = off > MaxOff ? -1\n        : off == line.length ? absoluteColumn(view, event.clientX)\n            : countColumn(line.text, view.state.tabSize, offset - line.from);\n    return { line: line.number, col, off };\n}\nfunction rectangleSelectionStyle(view, event) {\n    let start = getPos(view, event), startSel = view.state.selection;\n    if (!start)\n        return null;\n    return {\n        update(update) {\n            if (update.docChanged) {\n                let newStart = update.changes.mapPos(update.startState.doc.line(start.line).from);\n                let newLine = update.state.doc.lineAt(newStart);\n                start = { line: newLine.number, col: start.col, off: Math.min(start.off, newLine.length) };\n                startSel = startSel.map(update.changes);\n            }\n        },\n        get(event, _extend, multiple) {\n            let cur = getPos(view, event);\n            if (!cur)\n                return startSel;\n            let ranges = rectangleFor(view.state, start, cur);\n            if (!ranges.length)\n                return startSel;\n            if (multiple)\n                return EditorSelection.create(ranges.concat(startSel.ranges));\n            else\n                return EditorSelection.create(ranges);\n        }\n    };\n}\n/**\nCreate an extension that enables rectangular selections. By\ndefault, it will react to left mouse drag with the Alt key held\ndown. When such a selection occurs, the text within the rectangle\nthat was dragged over will be selected, as one selection\n[range](https://codemirror.net/6/docs/ref/#state.SelectionRange) per line.\n*/\nfunction rectangularSelection(options) {\n    let filter = (options === null || options === void 0 ? void 0 : options.eventFilter) || (e => e.altKey && e.button == 0);\n    return EditorView.mouseSelectionStyle.of((view, event) => filter(event) ? rectangleSelectionStyle(view, event) : null);\n}\nconst keys = {\n    Alt: [18, e => !!e.altKey],\n    Control: [17, e => !!e.ctrlKey],\n    Shift: [16, e => !!e.shiftKey],\n    Meta: [91, e => !!e.metaKey]\n};\nconst showCrosshair = { style: \"cursor: crosshair\" };\n/**\nReturns an extension that turns the pointer cursor into a\ncrosshair when a given modifier key, defaulting to Alt, is held\ndown. Can serve as a visual hint that rectangular selection is\ngoing to happen when paired with\n[`rectangularSelection`](https://codemirror.net/6/docs/ref/#view.rectangularSelection).\n*/\nfunction crosshairCursor(options = {}) {\n    let [code, getter] = keys[options.key || \"Alt\"];\n    let plugin = ViewPlugin.fromClass(class {\n        constructor(view) {\n            this.view = view;\n            this.isDown = false;\n        }\n        set(isDown) {\n            if (this.isDown != isDown) {\n                this.isDown = isDown;\n                this.view.update([]);\n            }\n        }\n    }, {\n        eventObservers: {\n            keydown(e) {\n                this.set(e.keyCode == code || getter(e));\n            },\n            keyup(e) {\n                if (e.keyCode == code || !getter(e))\n                    this.set(false);\n            },\n            mousemove(e) {\n                this.set(getter(e));\n            }\n        }\n    });\n    return [\n        plugin,\n        EditorView.contentAttributes.of(view => { var _a; return ((_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.isDown) ? showCrosshair : null; })\n    ];\n}\n\nconst Outside = \"-10000px\";\nclass TooltipViewManager {\n    constructor(view, facet, createTooltipView, removeTooltipView) {\n        this.facet = facet;\n        this.createTooltipView = createTooltipView;\n        this.removeTooltipView = removeTooltipView;\n        this.input = view.state.facet(facet);\n        this.tooltips = this.input.filter(t => t);\n        let prev = null;\n        this.tooltipViews = this.tooltips.map(t => prev = createTooltipView(t, prev));\n    }\n    update(update, above) {\n        var _a;\n        let input = update.state.facet(this.facet);\n        let tooltips = input.filter(x => x);\n        if (input === this.input) {\n            for (let t of this.tooltipViews)\n                if (t.update)\n                    t.update(update);\n            return false;\n        }\n        let tooltipViews = [], newAbove = above ? [] : null;\n        for (let i = 0; i < tooltips.length; i++) {\n            let tip = tooltips[i], known = -1;\n            if (!tip)\n                continue;\n            for (let i = 0; i < this.tooltips.length; i++) {\n                let other = this.tooltips[i];\n                if (other && other.create == tip.create)\n                    known = i;\n            }\n            if (known < 0) {\n                tooltipViews[i] = this.createTooltipView(tip, i ? tooltipViews[i - 1] : null);\n                if (newAbove)\n                    newAbove[i] = !!tip.above;\n            }\n            else {\n                let tooltipView = tooltipViews[i] = this.tooltipViews[known];\n                if (newAbove)\n                    newAbove[i] = above[known];\n                if (tooltipView.update)\n                    tooltipView.update(update);\n            }\n        }\n        for (let t of this.tooltipViews)\n            if (tooltipViews.indexOf(t) < 0) {\n                this.removeTooltipView(t);\n                (_a = t.destroy) === null || _a === void 0 ? void 0 : _a.call(t);\n            }\n        if (above) {\n            newAbove.forEach((val, i) => above[i] = val);\n            above.length = newAbove.length;\n        }\n        this.input = input;\n        this.tooltips = tooltips;\n        this.tooltipViews = tooltipViews;\n        return true;\n    }\n}\n/**\nCreates an extension that configures tooltip behavior.\n*/\nfunction tooltips(config = {}) {\n    return tooltipConfig.of(config);\n}\nfunction windowSpace(view) {\n    let { win } = view;\n    return { top: 0, left: 0, bottom: win.innerHeight, right: win.innerWidth };\n}\nconst tooltipConfig = /*@__PURE__*/Facet.define({\n    combine: values => {\n        var _a, _b, _c;\n        return ({\n            position: browser.ios ? \"absolute\" : ((_a = values.find(conf => conf.position)) === null || _a === void 0 ? void 0 : _a.position) || \"fixed\",\n            parent: ((_b = values.find(conf => conf.parent)) === null || _b === void 0 ? void 0 : _b.parent) || null,\n            tooltipSpace: ((_c = values.find(conf => conf.tooltipSpace)) === null || _c === void 0 ? void 0 : _c.tooltipSpace) || windowSpace,\n        });\n    }\n});\nconst knownHeight = /*@__PURE__*/new WeakMap();\nconst tooltipPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.above = [];\n        this.inView = true;\n        this.madeAbsolute = false;\n        this.lastTransaction = 0;\n        this.measureTimeout = -1;\n        let config = view.state.facet(tooltipConfig);\n        this.position = config.position;\n        this.parent = config.parent;\n        this.classes = view.themeClasses;\n        this.createContainer();\n        this.measureReq = { read: this.readMeasure.bind(this), write: this.writeMeasure.bind(this), key: this };\n        this.resizeObserver = typeof ResizeObserver == \"function\" ? new ResizeObserver(() => this.measureSoon()) : null;\n        this.manager = new TooltipViewManager(view, showTooltip, (t, p) => this.createTooltip(t, p), t => {\n            if (this.resizeObserver)\n                this.resizeObserver.unobserve(t.dom);\n            t.dom.remove();\n        });\n        this.above = this.manager.tooltips.map(t => !!t.above);\n        this.intersectionObserver = typeof IntersectionObserver == \"function\" ? new IntersectionObserver(entries => {\n            if (Date.now() > this.lastTransaction - 50 &&\n                entries.length > 0 && entries[entries.length - 1].intersectionRatio < 1)\n                this.measureSoon();\n        }, { threshold: [1] }) : null;\n        this.observeIntersection();\n        view.win.addEventListener(\"resize\", this.measureSoon = this.measureSoon.bind(this));\n        this.maybeMeasure();\n    }\n    createContainer() {\n        if (this.parent) {\n            this.container = document.createElement(\"div\");\n            this.container.style.position = \"relative\";\n            this.container.className = this.view.themeClasses;\n            this.parent.appendChild(this.container);\n        }\n        else {\n            this.container = this.view.dom;\n        }\n    }\n    observeIntersection() {\n        if (this.intersectionObserver) {\n            this.intersectionObserver.disconnect();\n            for (let tooltip of this.manager.tooltipViews)\n                this.intersectionObserver.observe(tooltip.dom);\n        }\n    }\n    measureSoon() {\n        if (this.measureTimeout < 0)\n            this.measureTimeout = setTimeout(() => {\n                this.measureTimeout = -1;\n                this.maybeMeasure();\n            }, 50);\n    }\n    update(update) {\n        if (update.transactions.length)\n            this.lastTransaction = Date.now();\n        let updated = this.manager.update(update, this.above);\n        if (updated)\n            this.observeIntersection();\n        let shouldMeasure = updated || update.geometryChanged;\n        let newConfig = update.state.facet(tooltipConfig);\n        if (newConfig.position != this.position && !this.madeAbsolute) {\n            this.position = newConfig.position;\n            for (let t of this.manager.tooltipViews)\n                t.dom.style.position = this.position;\n            shouldMeasure = true;\n        }\n        if (newConfig.parent != this.parent) {\n            if (this.parent)\n                this.container.remove();\n            this.parent = newConfig.parent;\n            this.createContainer();\n            for (let t of this.manager.tooltipViews)\n                this.container.appendChild(t.dom);\n            shouldMeasure = true;\n        }\n        else if (this.parent && this.view.themeClasses != this.classes) {\n            this.classes = this.container.className = this.view.themeClasses;\n        }\n        if (shouldMeasure)\n            this.maybeMeasure();\n    }\n    createTooltip(tooltip, prev) {\n        let tooltipView = tooltip.create(this.view);\n        let before = prev ? prev.dom : null;\n        tooltipView.dom.classList.add(\"cm-tooltip\");\n        if (tooltip.arrow && !tooltipView.dom.querySelector(\".cm-tooltip > .cm-tooltip-arrow\")) {\n            let arrow = document.createElement(\"div\");\n            arrow.className = \"cm-tooltip-arrow\";\n            tooltipView.dom.appendChild(arrow);\n        }\n        tooltipView.dom.style.position = this.position;\n        tooltipView.dom.style.top = Outside;\n        tooltipView.dom.style.left = \"0px\";\n        this.container.insertBefore(tooltipView.dom, before);\n        if (tooltipView.mount)\n            tooltipView.mount(this.view);\n        if (this.resizeObserver)\n            this.resizeObserver.observe(tooltipView.dom);\n        return tooltipView;\n    }\n    destroy() {\n        var _a, _b, _c;\n        this.view.win.removeEventListener(\"resize\", this.measureSoon);\n        for (let tooltipView of this.manager.tooltipViews) {\n            tooltipView.dom.remove();\n            (_a = tooltipView.destroy) === null || _a === void 0 ? void 0 : _a.call(tooltipView);\n        }\n        if (this.parent)\n            this.container.remove();\n        (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();\n        (_c = this.intersectionObserver) === null || _c === void 0 ? void 0 : _c.disconnect();\n        clearTimeout(this.measureTimeout);\n    }\n    readMeasure() {\n        let editor = this.view.dom.getBoundingClientRect();\n        let scaleX = 1, scaleY = 1, makeAbsolute = false;\n        if (this.position == \"fixed\" && this.manager.tooltipViews.length) {\n            let { dom } = this.manager.tooltipViews[0];\n            if (browser.gecko) {\n                // Firefox sets the element's `offsetParent` to the\n                // transformed element when a transform interferes with fixed\n                // positioning.\n                makeAbsolute = dom.offsetParent != this.container.ownerDocument.body;\n            }\n            else if (dom.style.top == Outside && dom.style.left == \"0px\") {\n                // On other browsers, we have to awkwardly try and use other\n                // information to detect a transform.\n                let rect = dom.getBoundingClientRect();\n                makeAbsolute = Math.abs(rect.top + 10000) > 1 || Math.abs(rect.left) > 1;\n            }\n        }\n        if (makeAbsolute || this.position == \"absolute\") {\n            if (this.parent) {\n                let rect = this.parent.getBoundingClientRect();\n                if (rect.width && rect.height) {\n                    scaleX = rect.width / this.parent.offsetWidth;\n                    scaleY = rect.height / this.parent.offsetHeight;\n                }\n            }\n            else {\n                ({ scaleX, scaleY } = this.view.viewState);\n            }\n        }\n        return {\n            editor,\n            parent: this.parent ? this.container.getBoundingClientRect() : editor,\n            pos: this.manager.tooltips.map((t, i) => {\n                let tv = this.manager.tooltipViews[i];\n                return tv.getCoords ? tv.getCoords(t.pos) : this.view.coordsAtPos(t.pos);\n            }),\n            size: this.manager.tooltipViews.map(({ dom }) => dom.getBoundingClientRect()),\n            space: this.view.state.facet(tooltipConfig).tooltipSpace(this.view),\n            scaleX, scaleY, makeAbsolute\n        };\n    }\n    writeMeasure(measured) {\n        var _a;\n        if (measured.makeAbsolute) {\n            this.madeAbsolute = true;\n            this.position = \"absolute\";\n            for (let t of this.manager.tooltipViews)\n                t.dom.style.position = \"absolute\";\n        }\n        let { editor, space, scaleX, scaleY } = measured;\n        let others = [];\n        for (let i = 0; i < this.manager.tooltips.length; i++) {\n            let tooltip = this.manager.tooltips[i], tView = this.manager.tooltipViews[i], { dom } = tView;\n            let pos = measured.pos[i], size = measured.size[i];\n            // Hide tooltips that are outside of the editor.\n            if (!pos || pos.bottom <= Math.max(editor.top, space.top) ||\n                pos.top >= Math.min(editor.bottom, space.bottom) ||\n                pos.right < Math.max(editor.left, space.left) - .1 ||\n                pos.left > Math.min(editor.right, space.right) + .1) {\n                dom.style.top = Outside;\n                continue;\n            }\n            let arrow = tooltip.arrow ? tView.dom.querySelector(\".cm-tooltip-arrow\") : null;\n            let arrowHeight = arrow ? 7 /* Arrow.Size */ : 0;\n            let width = size.right - size.left, height = (_a = knownHeight.get(tView)) !== null && _a !== void 0 ? _a : size.bottom - size.top;\n            let offset = tView.offset || noOffset, ltr = this.view.textDirection == Direction.LTR;\n            let left = size.width > space.right - space.left\n                ? (ltr ? space.left : space.right - size.width)\n                : ltr ? Math.max(space.left, Math.min(pos.left - (arrow ? 14 /* Arrow.Offset */ : 0) + offset.x, space.right - width))\n                    : Math.min(Math.max(space.left, pos.left - width + (arrow ? 14 /* Arrow.Offset */ : 0) - offset.x), space.right - width);\n            let above = this.above[i];\n            if (!tooltip.strictSide && (above\n                ? pos.top - (size.bottom - size.top) - offset.y < space.top\n                : pos.bottom + (size.bottom - size.top) + offset.y > space.bottom) &&\n                above == (space.bottom - pos.bottom > pos.top - space.top))\n                above = this.above[i] = !above;\n            let spaceVert = (above ? pos.top - space.top : space.bottom - pos.bottom) - arrowHeight;\n            if (spaceVert < height && tView.resize !== false) {\n                if (spaceVert < this.view.defaultLineHeight) {\n                    dom.style.top = Outside;\n                    continue;\n                }\n                knownHeight.set(tView, height);\n                dom.style.height = (height = spaceVert) / scaleY + \"px\";\n            }\n            else if (dom.style.height) {\n                dom.style.height = \"\";\n            }\n            let top = above ? pos.top - height - arrowHeight - offset.y : pos.bottom + arrowHeight + offset.y;\n            let right = left + width;\n            if (tView.overlap !== true)\n                for (let r of others)\n                    if (r.left < right && r.right > left && r.top < top + height && r.bottom > top)\n                        top = above ? r.top - height - 2 - arrowHeight : r.bottom + arrowHeight + 2;\n            if (this.position == \"absolute\") {\n                dom.style.top = (top - measured.parent.top) / scaleY + \"px\";\n                dom.style.left = (left - measured.parent.left) / scaleX + \"px\";\n            }\n            else {\n                dom.style.top = top / scaleY + \"px\";\n                dom.style.left = left / scaleX + \"px\";\n            }\n            if (arrow) {\n                let arrowLeft = pos.left + (ltr ? offset.x : -offset.x) - (left + 14 /* Arrow.Offset */ - 7 /* Arrow.Size */);\n                arrow.style.left = arrowLeft / scaleX + \"px\";\n            }\n            if (tView.overlap !== true)\n                others.push({ left, top, right, bottom: top + height });\n            dom.classList.toggle(\"cm-tooltip-above\", above);\n            dom.classList.toggle(\"cm-tooltip-below\", !above);\n            if (tView.positioned)\n                tView.positioned(measured.space);\n        }\n    }\n    maybeMeasure() {\n        if (this.manager.tooltips.length) {\n            if (this.view.inView)\n                this.view.requestMeasure(this.measureReq);\n            if (this.inView != this.view.inView) {\n                this.inView = this.view.inView;\n                if (!this.inView)\n                    for (let tv of this.manager.tooltipViews)\n                        tv.dom.style.top = Outside;\n            }\n        }\n    }\n}, {\n    eventObservers: {\n        scroll() { this.maybeMeasure(); }\n    }\n});\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-tooltip\": {\n        zIndex: 100,\n        boxSizing: \"border-box\"\n    },\n    \"&light .cm-tooltip\": {\n        border: \"1px solid #bbb\",\n        backgroundColor: \"#f5f5f5\"\n    },\n    \"&light .cm-tooltip-section:not(:first-child)\": {\n        borderTop: \"1px solid #bbb\",\n    },\n    \"&dark .cm-tooltip\": {\n        backgroundColor: \"#333338\",\n        color: \"white\"\n    },\n    \".cm-tooltip-arrow\": {\n        height: `${7 /* Arrow.Size */}px`,\n        width: `${7 /* Arrow.Size */ * 2}px`,\n        position: \"absolute\",\n        zIndex: -1,\n        overflow: \"hidden\",\n        \"&:before, &:after\": {\n            content: \"''\",\n            position: \"absolute\",\n            width: 0,\n            height: 0,\n            borderLeft: `${7 /* Arrow.Size */}px solid transparent`,\n            borderRight: `${7 /* Arrow.Size */}px solid transparent`,\n        },\n        \".cm-tooltip-above &\": {\n            bottom: `-${7 /* Arrow.Size */}px`,\n            \"&:before\": {\n                borderTop: `${7 /* Arrow.Size */}px solid #bbb`,\n            },\n            \"&:after\": {\n                borderTop: `${7 /* Arrow.Size */}px solid #f5f5f5`,\n                bottom: \"1px\"\n            }\n        },\n        \".cm-tooltip-below &\": {\n            top: `-${7 /* Arrow.Size */}px`,\n            \"&:before\": {\n                borderBottom: `${7 /* Arrow.Size */}px solid #bbb`,\n            },\n            \"&:after\": {\n                borderBottom: `${7 /* Arrow.Size */}px solid #f5f5f5`,\n                top: \"1px\"\n            }\n        },\n    },\n    \"&dark .cm-tooltip .cm-tooltip-arrow\": {\n        \"&:before\": {\n            borderTopColor: \"#333338\",\n            borderBottomColor: \"#333338\"\n        },\n        \"&:after\": {\n            borderTopColor: \"transparent\",\n            borderBottomColor: \"transparent\"\n        }\n    }\n});\nconst noOffset = { x: 0, y: 0 };\n/**\nFacet to which an extension can add a value to show a tooltip.\n*/\nconst showTooltip = /*@__PURE__*/Facet.define({\n    enables: [tooltipPlugin, baseTheme]\n});\nconst showHoverTooltip = /*@__PURE__*/Facet.define({\n    combine: inputs => inputs.reduce((a, i) => a.concat(i), [])\n});\nclass HoverTooltipHost {\n    // Needs to be static so that host tooltip instances always match\n    static create(view) {\n        return new HoverTooltipHost(view);\n    }\n    constructor(view) {\n        this.view = view;\n        this.mounted = false;\n        this.dom = document.createElement(\"div\");\n        this.dom.classList.add(\"cm-tooltip-hover\");\n        this.manager = new TooltipViewManager(view, showHoverTooltip, (t, p) => this.createHostedView(t, p), t => t.dom.remove());\n    }\n    createHostedView(tooltip, prev) {\n        let hostedView = tooltip.create(this.view);\n        hostedView.dom.classList.add(\"cm-tooltip-section\");\n        this.dom.insertBefore(hostedView.dom, prev ? prev.dom.nextSibling : this.dom.firstChild);\n        if (this.mounted && hostedView.mount)\n            hostedView.mount(this.view);\n        return hostedView;\n    }\n    mount(view) {\n        for (let hostedView of this.manager.tooltipViews) {\n            if (hostedView.mount)\n                hostedView.mount(view);\n        }\n        this.mounted = true;\n    }\n    positioned(space) {\n        for (let hostedView of this.manager.tooltipViews) {\n            if (hostedView.positioned)\n                hostedView.positioned(space);\n        }\n    }\n    update(update) {\n        this.manager.update(update);\n    }\n    destroy() {\n        var _a;\n        for (let t of this.manager.tooltipViews)\n            (_a = t.destroy) === null || _a === void 0 ? void 0 : _a.call(t);\n    }\n    passProp(name) {\n        let value = undefined;\n        for (let view of this.manager.tooltipViews) {\n            let given = view[name];\n            if (given !== undefined) {\n                if (value === undefined)\n                    value = given;\n                else if (value !== given)\n                    return undefined;\n            }\n        }\n        return value;\n    }\n    get offset() { return this.passProp(\"offset\"); }\n    get getCoords() { return this.passProp(\"getCoords\"); }\n    get overlap() { return this.passProp(\"overlap\"); }\n    get resize() { return this.passProp(\"resize\"); }\n}\nconst showHoverTooltipHost = /*@__PURE__*/showTooltip.compute([showHoverTooltip], state => {\n    let tooltips = state.facet(showHoverTooltip);\n    if (tooltips.length === 0)\n        return null;\n    return {\n        pos: Math.min(...tooltips.map(t => t.pos)),\n        end: Math.max(...tooltips.map(t => { var _a; return (_a = t.end) !== null && _a !== void 0 ? _a : t.pos; })),\n        create: HoverTooltipHost.create,\n        above: tooltips[0].above,\n        arrow: tooltips.some(t => t.arrow),\n    };\n});\nclass HoverPlugin {\n    constructor(view, source, field, setHover, hoverTime) {\n        this.view = view;\n        this.source = source;\n        this.field = field;\n        this.setHover = setHover;\n        this.hoverTime = hoverTime;\n        this.hoverTimeout = -1;\n        this.restartTimeout = -1;\n        this.pending = null;\n        this.lastMove = { x: 0, y: 0, target: view.dom, time: 0 };\n        this.checkHover = this.checkHover.bind(this);\n        view.dom.addEventListener(\"mouseleave\", this.mouseleave = this.mouseleave.bind(this));\n        view.dom.addEventListener(\"mousemove\", this.mousemove = this.mousemove.bind(this));\n    }\n    update() {\n        if (this.pending) {\n            this.pending = null;\n            clearTimeout(this.restartTimeout);\n            this.restartTimeout = setTimeout(() => this.startHover(), 20);\n        }\n    }\n    get active() {\n        return this.view.state.field(this.field);\n    }\n    checkHover() {\n        this.hoverTimeout = -1;\n        if (this.active.length)\n            return;\n        let hovered = Date.now() - this.lastMove.time;\n        if (hovered < this.hoverTime)\n            this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime - hovered);\n        else\n            this.startHover();\n    }\n    startHover() {\n        clearTimeout(this.restartTimeout);\n        let { view, lastMove } = this;\n        let desc = view.docView.nearest(lastMove.target);\n        if (!desc)\n            return;\n        let pos, side = 1;\n        if (desc instanceof WidgetView) {\n            pos = desc.posAtStart;\n        }\n        else {\n            pos = view.posAtCoords(lastMove);\n            if (pos == null)\n                return;\n            let posCoords = view.coordsAtPos(pos);\n            if (!posCoords ||\n                lastMove.y < posCoords.top || lastMove.y > posCoords.bottom ||\n                lastMove.x < posCoords.left - view.defaultCharacterWidth ||\n                lastMove.x > posCoords.right + view.defaultCharacterWidth)\n                return;\n            let bidi = view.bidiSpans(view.state.doc.lineAt(pos)).find(s => s.from <= pos && s.to >= pos);\n            let rtl = bidi && bidi.dir == Direction.RTL ? -1 : 1;\n            side = (lastMove.x < posCoords.left ? -rtl : rtl);\n        }\n        let open = this.source(view, pos, side);\n        if (open === null || open === void 0 ? void 0 : open.then) {\n            let pending = this.pending = { pos };\n            open.then(result => {\n                if (this.pending == pending) {\n                    this.pending = null;\n                    if (result && !(Array.isArray(result) && !result.length))\n                        view.dispatch({ effects: this.setHover.of(Array.isArray(result) ? result : [result]) });\n                }\n            }, e => logException(view.state, e, \"hover tooltip\"));\n        }\n        else if (open && !(Array.isArray(open) && !open.length)) {\n            view.dispatch({ effects: this.setHover.of(Array.isArray(open) ? open : [open]) });\n        }\n    }\n    get tooltip() {\n        let plugin = this.view.plugin(tooltipPlugin);\n        let index = plugin ? plugin.manager.tooltips.findIndex(t => t.create == HoverTooltipHost.create) : -1;\n        return index > -1 ? plugin.manager.tooltipViews[index] : null;\n    }\n    mousemove(event) {\n        var _a, _b;\n        this.lastMove = { x: event.clientX, y: event.clientY, target: event.target, time: Date.now() };\n        if (this.hoverTimeout < 0)\n            this.hoverTimeout = setTimeout(this.checkHover, this.hoverTime);\n        let { active, tooltip } = this;\n        if (active.length && tooltip && !isInTooltip(tooltip.dom, event) || this.pending) {\n            let { pos } = active[0] || this.pending, end = (_b = (_a = active[0]) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : pos;\n            if ((pos == end ? this.view.posAtCoords(this.lastMove) != pos\n                : !isOverRange(this.view, pos, end, event.clientX, event.clientY))) {\n                this.view.dispatch({ effects: this.setHover.of([]) });\n                this.pending = null;\n            }\n        }\n    }\n    mouseleave(event) {\n        clearTimeout(this.hoverTimeout);\n        this.hoverTimeout = -1;\n        let { active } = this;\n        if (active.length) {\n            let { tooltip } = this;\n            let inTooltip = tooltip && tooltip.dom.contains(event.relatedTarget);\n            if (!inTooltip)\n                this.view.dispatch({ effects: this.setHover.of([]) });\n            else\n                this.watchTooltipLeave(tooltip.dom);\n        }\n    }\n    watchTooltipLeave(tooltip) {\n        let watch = (event) => {\n            tooltip.removeEventListener(\"mouseleave\", watch);\n            if (this.active.length && !this.view.dom.contains(event.relatedTarget))\n                this.view.dispatch({ effects: this.setHover.of([]) });\n        };\n        tooltip.addEventListener(\"mouseleave\", watch);\n    }\n    destroy() {\n        clearTimeout(this.hoverTimeout);\n        this.view.dom.removeEventListener(\"mouseleave\", this.mouseleave);\n        this.view.dom.removeEventListener(\"mousemove\", this.mousemove);\n    }\n}\nconst tooltipMargin = 4;\nfunction isInTooltip(tooltip, event) {\n    let { left, right, top, bottom } = tooltip.getBoundingClientRect(), arrow;\n    if (arrow = tooltip.querySelector(\".cm-tooltip-arrow\")) {\n        let arrowRect = arrow.getBoundingClientRect();\n        top = Math.min(arrowRect.top, top);\n        bottom = Math.max(arrowRect.bottom, bottom);\n    }\n    return event.clientX >= left - tooltipMargin && event.clientX <= right + tooltipMargin &&\n        event.clientY >= top - tooltipMargin && event.clientY <= bottom + tooltipMargin;\n}\nfunction isOverRange(view, from, to, x, y, margin) {\n    let rect = view.scrollDOM.getBoundingClientRect();\n    let docBottom = view.documentTop + view.documentPadding.top + view.contentHeight;\n    if (rect.left > x || rect.right < x || rect.top > y || Math.min(rect.bottom, docBottom) < y)\n        return false;\n    let pos = view.posAtCoords({ x, y }, false);\n    return pos >= from && pos <= to;\n}\n/**\nSet up a hover tooltip, which shows up when the pointer hovers\nover ranges of text. The callback is called when the mouse hovers\nover the document text. It should, if there is a tooltip\nassociated with position `pos`, return the tooltip description\n(either directly or in a promise). The `side` argument indicates\non which side of the position the pointer is—it will be -1 if the\npointer is before the position, 1 if after the position.\n\nNote that all hover tooltips are hosted within a single tooltip\ncontainer element. This allows multiple tooltips over the same\nrange to be \"merged\" together without overlapping.\n\nThe return value is a valid [editor extension](https://codemirror.net/6/docs/ref/#state.Extension)\nbut also provides an `active` property holding a state field that\ncan be used to read the currently active tooltips produced by this\nextension.\n*/\nfunction hoverTooltip(source, options = {}) {\n    let setHover = StateEffect.define();\n    let hoverState = StateField.define({\n        create() { return []; },\n        update(value, tr) {\n            if (value.length) {\n                if (options.hideOnChange && (tr.docChanged || tr.selection))\n                    value = [];\n                else if (options.hideOn)\n                    value = value.filter(v => !options.hideOn(tr, v));\n                if (tr.docChanged) {\n                    let mapped = [];\n                    for (let tooltip of value) {\n                        let newPos = tr.changes.mapPos(tooltip.pos, -1, MapMode.TrackDel);\n                        if (newPos != null) {\n                            let copy = Object.assign(Object.create(null), tooltip);\n                            copy.pos = newPos;\n                            if (copy.end != null)\n                                copy.end = tr.changes.mapPos(copy.end);\n                            mapped.push(copy);\n                        }\n                    }\n                    value = mapped;\n                }\n            }\n            for (let effect of tr.effects) {\n                if (effect.is(setHover))\n                    value = effect.value;\n                if (effect.is(closeHoverTooltipEffect))\n                    value = [];\n            }\n            return value;\n        },\n        provide: f => showHoverTooltip.from(f)\n    });\n    return {\n        active: hoverState,\n        extension: [\n            hoverState,\n            ViewPlugin.define(view => new HoverPlugin(view, source, hoverState, setHover, options.hoverTime || 300 /* Hover.Time */)),\n            showHoverTooltipHost\n        ]\n    };\n}\n/**\nGet the active tooltip view for a given tooltip, if available.\n*/\nfunction getTooltip(view, tooltip) {\n    let plugin = view.plugin(tooltipPlugin);\n    if (!plugin)\n        return null;\n    let found = plugin.manager.tooltips.indexOf(tooltip);\n    return found < 0 ? null : plugin.manager.tooltipViews[found];\n}\n/**\nReturns true if any hover tooltips are currently active.\n*/\nfunction hasHoverTooltips(state) {\n    return state.facet(showHoverTooltip).some(x => x);\n}\nconst closeHoverTooltipEffect = /*@__PURE__*/StateEffect.define();\n/**\nTransaction effect that closes all hover tooltips.\n*/\nconst closeHoverTooltips = /*@__PURE__*/closeHoverTooltipEffect.of(null);\n/**\nTell the tooltip extension to recompute the position of the active\ntooltips. This can be useful when something happens (such as a\nre-positioning or CSS change affecting the editor) that could\ninvalidate the existing tooltip positions.\n*/\nfunction repositionTooltips(view) {\n    let plugin = view.plugin(tooltipPlugin);\n    if (plugin)\n        plugin.maybeMeasure();\n}\n\nconst panelConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        let topContainer, bottomContainer;\n        for (let c of configs) {\n            topContainer = topContainer || c.topContainer;\n            bottomContainer = bottomContainer || c.bottomContainer;\n        }\n        return { topContainer, bottomContainer };\n    }\n});\n/**\nConfigures the panel-managing extension.\n*/\nfunction panels(config) {\n    return config ? [panelConfig.of(config)] : [];\n}\n/**\nGet the active panel created by the given constructor, if any.\nThis can be useful when you need access to your panels' DOM\nstructure.\n*/\nfunction getPanel(view, panel) {\n    let plugin = view.plugin(panelPlugin);\n    let index = plugin ? plugin.specs.indexOf(panel) : -1;\n    return index > -1 ? plugin.panels[index] : null;\n}\nconst panelPlugin = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.input = view.state.facet(showPanel);\n        this.specs = this.input.filter(s => s);\n        this.panels = this.specs.map(spec => spec(view));\n        let conf = view.state.facet(panelConfig);\n        this.top = new PanelGroup(view, true, conf.topContainer);\n        this.bottom = new PanelGroup(view, false, conf.bottomContainer);\n        this.top.sync(this.panels.filter(p => p.top));\n        this.bottom.sync(this.panels.filter(p => !p.top));\n        for (let p of this.panels) {\n            p.dom.classList.add(\"cm-panel\");\n            if (p.mount)\n                p.mount();\n        }\n    }\n    update(update) {\n        let conf = update.state.facet(panelConfig);\n        if (this.top.container != conf.topContainer) {\n            this.top.sync([]);\n            this.top = new PanelGroup(update.view, true, conf.topContainer);\n        }\n        if (this.bottom.container != conf.bottomContainer) {\n            this.bottom.sync([]);\n            this.bottom = new PanelGroup(update.view, false, conf.bottomContainer);\n        }\n        this.top.syncClasses();\n        this.bottom.syncClasses();\n        let input = update.state.facet(showPanel);\n        if (input != this.input) {\n            let specs = input.filter(x => x);\n            let panels = [], top = [], bottom = [], mount = [];\n            for (let spec of specs) {\n                let known = this.specs.indexOf(spec), panel;\n                if (known < 0) {\n                    panel = spec(update.view);\n                    mount.push(panel);\n                }\n                else {\n                    panel = this.panels[known];\n                    if (panel.update)\n                        panel.update(update);\n                }\n                panels.push(panel);\n                (panel.top ? top : bottom).push(panel);\n            }\n            this.specs = specs;\n            this.panels = panels;\n            this.top.sync(top);\n            this.bottom.sync(bottom);\n            for (let p of mount) {\n                p.dom.classList.add(\"cm-panel\");\n                if (p.mount)\n                    p.mount();\n            }\n        }\n        else {\n            for (let p of this.panels)\n                if (p.update)\n                    p.update(update);\n        }\n    }\n    destroy() {\n        this.top.sync([]);\n        this.bottom.sync([]);\n    }\n}, {\n    provide: plugin => EditorView.scrollMargins.of(view => {\n        let value = view.plugin(plugin);\n        return value && { top: value.top.scrollMargin(), bottom: value.bottom.scrollMargin() };\n    })\n});\nclass PanelGroup {\n    constructor(view, top, container) {\n        this.view = view;\n        this.top = top;\n        this.container = container;\n        this.dom = undefined;\n        this.classes = \"\";\n        this.panels = [];\n        this.syncClasses();\n    }\n    sync(panels) {\n        for (let p of this.panels)\n            if (p.destroy && panels.indexOf(p) < 0)\n                p.destroy();\n        this.panels = panels;\n        this.syncDOM();\n    }\n    syncDOM() {\n        if (this.panels.length == 0) {\n            if (this.dom) {\n                this.dom.remove();\n                this.dom = undefined;\n            }\n            return;\n        }\n        if (!this.dom) {\n            this.dom = document.createElement(\"div\");\n            this.dom.className = this.top ? \"cm-panels cm-panels-top\" : \"cm-panels cm-panels-bottom\";\n            this.dom.style[this.top ? \"top\" : \"bottom\"] = \"0\";\n            let parent = this.container || this.view.dom;\n            parent.insertBefore(this.dom, this.top ? parent.firstChild : null);\n        }\n        let curDOM = this.dom.firstChild;\n        for (let panel of this.panels) {\n            if (panel.dom.parentNode == this.dom) {\n                while (curDOM != panel.dom)\n                    curDOM = rm(curDOM);\n                curDOM = curDOM.nextSibling;\n            }\n            else {\n                this.dom.insertBefore(panel.dom, curDOM);\n            }\n        }\n        while (curDOM)\n            curDOM = rm(curDOM);\n    }\n    scrollMargin() {\n        return !this.dom || this.container ? 0\n            : Math.max(0, this.top ?\n                this.dom.getBoundingClientRect().bottom - Math.max(0, this.view.scrollDOM.getBoundingClientRect().top) :\n                Math.min(innerHeight, this.view.scrollDOM.getBoundingClientRect().bottom) - this.dom.getBoundingClientRect().top);\n    }\n    syncClasses() {\n        if (!this.container || this.classes == this.view.themeClasses)\n            return;\n        for (let cls of this.classes.split(\" \"))\n            if (cls)\n                this.container.classList.remove(cls);\n        for (let cls of (this.classes = this.view.themeClasses).split(\" \"))\n            if (cls)\n                this.container.classList.add(cls);\n    }\n}\nfunction rm(node) {\n    let next = node.nextSibling;\n    node.remove();\n    return next;\n}\n/**\nOpening a panel is done by providing a constructor function for\nthe panel through this facet. (The panel is closed again when its\nconstructor is no longer provided.) Values of `null` are ignored.\n*/\nconst showPanel = /*@__PURE__*/Facet.define({\n    enables: panelPlugin\n});\n\n/**\nA gutter marker represents a bit of information attached to a line\nin a specific gutter. Your own custom markers have to extend this\nclass.\n*/\nclass GutterMarker extends RangeValue {\n    /**\n    @internal\n    */\n    compare(other) {\n        return this == other || this.constructor == other.constructor && this.eq(other);\n    }\n    /**\n    Compare this marker to another marker of the same type.\n    */\n    eq(other) { return false; }\n    /**\n    Called if the marker has a `toDOM` method and its representation\n    was removed from a gutter.\n    */\n    destroy(dom) { }\n}\nGutterMarker.prototype.elementClass = \"\";\nGutterMarker.prototype.toDOM = undefined;\nGutterMarker.prototype.mapMode = MapMode.TrackBefore;\nGutterMarker.prototype.startSide = GutterMarker.prototype.endSide = -1;\nGutterMarker.prototype.point = true;\n/**\nFacet used to add a class to all gutter elements for a given line.\nMarkers given to this facet should _only_ define an\n[`elementclass`](https://codemirror.net/6/docs/ref/#view.GutterMarker.elementClass), not a\n[`toDOM`](https://codemirror.net/6/docs/ref/#view.GutterMarker.toDOM) (or the marker will appear\nin all gutters for the line).\n*/\nconst gutterLineClass = /*@__PURE__*/Facet.define();\n/**\nFacet used to add a class to all gutter elements next to a widget.\nShould not provide widgets with a `toDOM` method.\n*/\nconst gutterWidgetClass = /*@__PURE__*/Facet.define();\nconst defaults = {\n    class: \"\",\n    renderEmptyElements: false,\n    elementStyle: \"\",\n    markers: () => RangeSet.empty,\n    lineMarker: () => null,\n    widgetMarker: () => null,\n    lineMarkerChange: null,\n    initialSpacer: null,\n    updateSpacer: null,\n    domEventHandlers: {}\n};\nconst activeGutters = /*@__PURE__*/Facet.define();\n/**\nDefine an editor gutter. The order in which the gutters appear is\ndetermined by their extension priority.\n*/\nfunction gutter(config) {\n    return [gutters(), activeGutters.of(Object.assign(Object.assign({}, defaults), config))];\n}\nconst unfixGutters = /*@__PURE__*/Facet.define({\n    combine: values => values.some(x => x)\n});\n/**\nThe gutter-drawing plugin is automatically enabled when you add a\ngutter, but you can use this function to explicitly configure it.\n\nUnless `fixed` is explicitly set to `false`, the gutters are\nfixed, meaning they don't scroll along with the content\nhorizontally (except on Internet Explorer, which doesn't support\nCSS [`position:\nsticky`](https://developer.mozilla.org/en-US/docs/Web/CSS/position#sticky)).\n*/\nfunction gutters(config) {\n    let result = [\n        gutterView,\n    ];\n    if (config && config.fixed === false)\n        result.push(unfixGutters.of(true));\n    return result;\n}\nconst gutterView = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.view = view;\n        this.prevViewport = view.viewport;\n        this.dom = document.createElement(\"div\");\n        this.dom.className = \"cm-gutters\";\n        this.dom.setAttribute(\"aria-hidden\", \"true\");\n        this.dom.style.minHeight = (this.view.contentHeight / this.view.scaleY) + \"px\";\n        this.gutters = view.state.facet(activeGutters).map(conf => new SingleGutterView(view, conf));\n        for (let gutter of this.gutters)\n            this.dom.appendChild(gutter.dom);\n        this.fixed = !view.state.facet(unfixGutters);\n        if (this.fixed) {\n            // FIXME IE11 fallback, which doesn't support position: sticky,\n            // by using position: relative + event handlers that realign the\n            // gutter (or just force fixed=false on IE11?)\n            this.dom.style.position = \"sticky\";\n        }\n        this.syncGutters(false);\n        view.scrollDOM.insertBefore(this.dom, view.contentDOM);\n    }\n    update(update) {\n        if (this.updateGutters(update)) {\n            // Detach during sync when the viewport changed significantly\n            // (such as during scrolling), since for large updates that is\n            // faster.\n            let vpA = this.prevViewport, vpB = update.view.viewport;\n            let vpOverlap = Math.min(vpA.to, vpB.to) - Math.max(vpA.from, vpB.from);\n            this.syncGutters(vpOverlap < (vpB.to - vpB.from) * 0.8);\n        }\n        if (update.geometryChanged) {\n            this.dom.style.minHeight = (this.view.contentHeight / this.view.scaleY) + \"px\";\n        }\n        if (this.view.state.facet(unfixGutters) != !this.fixed) {\n            this.fixed = !this.fixed;\n            this.dom.style.position = this.fixed ? \"sticky\" : \"\";\n        }\n        this.prevViewport = update.view.viewport;\n    }\n    syncGutters(detach) {\n        let after = this.dom.nextSibling;\n        if (detach)\n            this.dom.remove();\n        let lineClasses = RangeSet.iter(this.view.state.facet(gutterLineClass), this.view.viewport.from);\n        let classSet = [];\n        let contexts = this.gutters.map(gutter => new UpdateContext(gutter, this.view.viewport, -this.view.documentPadding.top));\n        for (let line of this.view.viewportLineBlocks) {\n            if (classSet.length)\n                classSet = [];\n            if (Array.isArray(line.type)) {\n                let first = true;\n                for (let b of line.type) {\n                    if (b.type == BlockType.Text && first) {\n                        advanceCursor(lineClasses, classSet, b.from);\n                        for (let cx of contexts)\n                            cx.line(this.view, b, classSet);\n                        first = false;\n                    }\n                    else if (b.widget) {\n                        for (let cx of contexts)\n                            cx.widget(this.view, b);\n                    }\n                }\n            }\n            else if (line.type == BlockType.Text) {\n                advanceCursor(lineClasses, classSet, line.from);\n                for (let cx of contexts)\n                    cx.line(this.view, line, classSet);\n            }\n            else if (line.widget) {\n                for (let cx of contexts)\n                    cx.widget(this.view, line);\n            }\n        }\n        for (let cx of contexts)\n            cx.finish();\n        if (detach)\n            this.view.scrollDOM.insertBefore(this.dom, after);\n    }\n    updateGutters(update) {\n        let prev = update.startState.facet(activeGutters), cur = update.state.facet(activeGutters);\n        let change = update.docChanged || update.heightChanged || update.viewportChanged ||\n            !RangeSet.eq(update.startState.facet(gutterLineClass), update.state.facet(gutterLineClass), update.view.viewport.from, update.view.viewport.to);\n        if (prev == cur) {\n            for (let gutter of this.gutters)\n                if (gutter.update(update))\n                    change = true;\n        }\n        else {\n            change = true;\n            let gutters = [];\n            for (let conf of cur) {\n                let known = prev.indexOf(conf);\n                if (known < 0) {\n                    gutters.push(new SingleGutterView(this.view, conf));\n                }\n                else {\n                    this.gutters[known].update(update);\n                    gutters.push(this.gutters[known]);\n                }\n            }\n            for (let g of this.gutters) {\n                g.dom.remove();\n                if (gutters.indexOf(g) < 0)\n                    g.destroy();\n            }\n            for (let g of gutters)\n                this.dom.appendChild(g.dom);\n            this.gutters = gutters;\n        }\n        return change;\n    }\n    destroy() {\n        for (let view of this.gutters)\n            view.destroy();\n        this.dom.remove();\n    }\n}, {\n    provide: plugin => EditorView.scrollMargins.of(view => {\n        let value = view.plugin(plugin);\n        if (!value || value.gutters.length == 0 || !value.fixed)\n            return null;\n        return view.textDirection == Direction.LTR\n            ? { left: value.dom.offsetWidth * view.scaleX }\n            : { right: value.dom.offsetWidth * view.scaleX };\n    })\n});\nfunction asArray(val) { return (Array.isArray(val) ? val : [val]); }\nfunction advanceCursor(cursor, collect, pos) {\n    while (cursor.value && cursor.from <= pos) {\n        if (cursor.from == pos)\n            collect.push(cursor.value);\n        cursor.next();\n    }\n}\nclass UpdateContext {\n    constructor(gutter, viewport, height) {\n        this.gutter = gutter;\n        this.height = height;\n        this.i = 0;\n        this.cursor = RangeSet.iter(gutter.markers, viewport.from);\n    }\n    addElement(view, block, markers) {\n        let { gutter } = this, above = (block.top - this.height) / view.scaleY, height = block.height / view.scaleY;\n        if (this.i == gutter.elements.length) {\n            let newElt = new GutterElement(view, height, above, markers);\n            gutter.elements.push(newElt);\n            gutter.dom.appendChild(newElt.dom);\n        }\n        else {\n            gutter.elements[this.i].update(view, height, above, markers);\n        }\n        this.height = block.bottom;\n        this.i++;\n    }\n    line(view, line, extraMarkers) {\n        let localMarkers = [];\n        advanceCursor(this.cursor, localMarkers, line.from);\n        if (extraMarkers.length)\n            localMarkers = localMarkers.concat(extraMarkers);\n        let forLine = this.gutter.config.lineMarker(view, line, localMarkers);\n        if (forLine)\n            localMarkers.unshift(forLine);\n        let gutter = this.gutter;\n        if (localMarkers.length == 0 && !gutter.config.renderEmptyElements)\n            return;\n        this.addElement(view, line, localMarkers);\n    }\n    widget(view, block) {\n        let marker = this.gutter.config.widgetMarker(view, block.widget, block), markers = marker ? [marker] : null;\n        for (let cls of view.state.facet(gutterWidgetClass)) {\n            let marker = cls(view, block.widget, block);\n            if (marker)\n                (markers || (markers = [])).push(marker);\n        }\n        if (markers)\n            this.addElement(view, block, markers);\n    }\n    finish() {\n        let gutter = this.gutter;\n        while (gutter.elements.length > this.i) {\n            let last = gutter.elements.pop();\n            gutter.dom.removeChild(last.dom);\n            last.destroy();\n        }\n    }\n}\nclass SingleGutterView {\n    constructor(view, config) {\n        this.view = view;\n        this.config = config;\n        this.elements = [];\n        this.spacer = null;\n        this.dom = document.createElement(\"div\");\n        this.dom.className = \"cm-gutter\" + (this.config.class ? \" \" + this.config.class : \"\");\n        for (let prop in config.domEventHandlers) {\n            this.dom.addEventListener(prop, (event) => {\n                let target = event.target, y;\n                if (target != this.dom && this.dom.contains(target)) {\n                    while (target.parentNode != this.dom)\n                        target = target.parentNode;\n                    let rect = target.getBoundingClientRect();\n                    y = (rect.top + rect.bottom) / 2;\n                }\n                else {\n                    y = event.clientY;\n                }\n                let line = view.lineBlockAtHeight(y - view.documentTop);\n                if (config.domEventHandlers[prop](view, line, event))\n                    event.preventDefault();\n            });\n        }\n        this.markers = asArray(config.markers(view));\n        if (config.initialSpacer) {\n            this.spacer = new GutterElement(view, 0, 0, [config.initialSpacer(view)]);\n            this.dom.appendChild(this.spacer.dom);\n            this.spacer.dom.style.cssText += \"visibility: hidden; pointer-events: none\";\n        }\n    }\n    update(update) {\n        let prevMarkers = this.markers;\n        this.markers = asArray(this.config.markers(update.view));\n        if (this.spacer && this.config.updateSpacer) {\n            let updated = this.config.updateSpacer(this.spacer.markers[0], update);\n            if (updated != this.spacer.markers[0])\n                this.spacer.update(update.view, 0, 0, [updated]);\n        }\n        let vp = update.view.viewport;\n        return !RangeSet.eq(this.markers, prevMarkers, vp.from, vp.to) ||\n            (this.config.lineMarkerChange ? this.config.lineMarkerChange(update) : false);\n    }\n    destroy() {\n        for (let elt of this.elements)\n            elt.destroy();\n    }\n}\nclass GutterElement {\n    constructor(view, height, above, markers) {\n        this.height = -1;\n        this.above = 0;\n        this.markers = [];\n        this.dom = document.createElement(\"div\");\n        this.dom.className = \"cm-gutterElement\";\n        this.update(view, height, above, markers);\n    }\n    update(view, height, above, markers) {\n        if (this.height != height) {\n            this.height = height;\n            this.dom.style.height = height + \"px\";\n        }\n        if (this.above != above)\n            this.dom.style.marginTop = (this.above = above) ? above + \"px\" : \"\";\n        if (!sameMarkers(this.markers, markers))\n            this.setMarkers(view, markers);\n    }\n    setMarkers(view, markers) {\n        let cls = \"cm-gutterElement\", domPos = this.dom.firstChild;\n        for (let iNew = 0, iOld = 0;;) {\n            let skipTo = iOld, marker = iNew < markers.length ? markers[iNew++] : null, matched = false;\n            if (marker) {\n                let c = marker.elementClass;\n                if (c)\n                    cls += \" \" + c;\n                for (let i = iOld; i < this.markers.length; i++)\n                    if (this.markers[i].compare(marker)) {\n                        skipTo = i;\n                        matched = true;\n                        break;\n                    }\n            }\n            else {\n                skipTo = this.markers.length;\n            }\n            while (iOld < skipTo) {\n                let next = this.markers[iOld++];\n                if (next.toDOM) {\n                    next.destroy(domPos);\n                    let after = domPos.nextSibling;\n                    domPos.remove();\n                    domPos = after;\n                }\n            }\n            if (!marker)\n                break;\n            if (marker.toDOM) {\n                if (matched)\n                    domPos = domPos.nextSibling;\n                else\n                    this.dom.insertBefore(marker.toDOM(view), domPos);\n            }\n            if (matched)\n                iOld++;\n        }\n        this.dom.className = cls;\n        this.markers = markers;\n    }\n    destroy() {\n        this.setMarkers(null, []); // First argument not used unless creating markers\n    }\n}\nfunction sameMarkers(a, b) {\n    if (a.length != b.length)\n        return false;\n    for (let i = 0; i < a.length; i++)\n        if (!a[i].compare(b[i]))\n            return false;\n    return true;\n}\n/**\nFacet used to provide markers to the line number gutter.\n*/\nconst lineNumberMarkers = /*@__PURE__*/Facet.define();\n/**\nFacet used to create markers in the line number gutter next to widgets.\n*/\nconst lineNumberWidgetMarker = /*@__PURE__*/Facet.define();\nconst lineNumberConfig = /*@__PURE__*/Facet.define({\n    combine(values) {\n        return combineConfig(values, { formatNumber: String, domEventHandlers: {} }, {\n            domEventHandlers(a, b) {\n                let result = Object.assign({}, a);\n                for (let event in b) {\n                    let exists = result[event], add = b[event];\n                    result[event] = exists ? (view, line, event) => exists(view, line, event) || add(view, line, event) : add;\n                }\n                return result;\n            }\n        });\n    }\n});\nclass NumberMarker extends GutterMarker {\n    constructor(number) {\n        super();\n        this.number = number;\n    }\n    eq(other) { return this.number == other.number; }\n    toDOM() { return document.createTextNode(this.number); }\n}\nfunction formatNumber(view, number) {\n    return view.state.facet(lineNumberConfig).formatNumber(number, view.state);\n}\nconst lineNumberGutter = /*@__PURE__*/activeGutters.compute([lineNumberConfig], state => ({\n    class: \"cm-lineNumbers\",\n    renderEmptyElements: false,\n    markers(view) { return view.state.facet(lineNumberMarkers); },\n    lineMarker(view, line, others) {\n        if (others.some(m => m.toDOM))\n            return null;\n        return new NumberMarker(formatNumber(view, view.state.doc.lineAt(line.from).number));\n    },\n    widgetMarker: (view, widget, block) => {\n        for (let m of view.state.facet(lineNumberWidgetMarker)) {\n            let result = m(view, widget, block);\n            if (result)\n                return result;\n        }\n        return null;\n    },\n    lineMarkerChange: update => update.startState.facet(lineNumberConfig) != update.state.facet(lineNumberConfig),\n    initialSpacer(view) {\n        return new NumberMarker(formatNumber(view, maxLineNumber(view.state.doc.lines)));\n    },\n    updateSpacer(spacer, update) {\n        let max = formatNumber(update.view, maxLineNumber(update.view.state.doc.lines));\n        return max == spacer.number ? spacer : new NumberMarker(max);\n    },\n    domEventHandlers: state.facet(lineNumberConfig).domEventHandlers\n}));\n/**\nCreate a line number gutter extension.\n*/\nfunction lineNumbers(config = {}) {\n    return [\n        lineNumberConfig.of(config),\n        gutters(),\n        lineNumberGutter\n    ];\n}\nfunction maxLineNumber(lines) {\n    let last = 9;\n    while (last < lines)\n        last = last * 10 + 9;\n    return last;\n}\nconst activeLineGutterMarker = /*@__PURE__*/new class extends GutterMarker {\n    constructor() {\n        super(...arguments);\n        this.elementClass = \"cm-activeLineGutter\";\n    }\n};\nconst activeLineGutterHighlighter = /*@__PURE__*/gutterLineClass.compute([\"selection\"], state => {\n    let marks = [], last = -1;\n    for (let range of state.selection.ranges) {\n        let linePos = state.doc.lineAt(range.head).from;\n        if (linePos > last) {\n            last = linePos;\n            marks.push(activeLineGutterMarker.range(linePos));\n        }\n    }\n    return RangeSet.of(marks);\n});\n/**\nReturns an extension that adds a `cm-activeLineGutter` class to\nall gutter elements on the [active\nline](https://codemirror.net/6/docs/ref/#view.highlightActiveLine).\n*/\nfunction highlightActiveLineGutter() {\n    return activeLineGutterHighlighter;\n}\n\nconst WhitespaceDeco = /*@__PURE__*/new Map();\nfunction getWhitespaceDeco(space) {\n    let deco = WhitespaceDeco.get(space);\n    if (!deco)\n        WhitespaceDeco.set(space, deco = Decoration.mark({\n            attributes: space === \"\\t\" ? {\n                class: \"cm-highlightTab\",\n            } : {\n                class: \"cm-highlightSpace\",\n                \"data-display\": space.replace(/ /g, \"·\")\n            }\n        }));\n    return deco;\n}\nfunction matcher(decorator) {\n    return ViewPlugin.define(view => ({\n        decorations: decorator.createDeco(view),\n        update(u) {\n            this.decorations = decorator.updateDeco(u, this.decorations);\n        },\n    }), {\n        decorations: v => v.decorations\n    });\n}\nconst whitespaceHighlighter = /*@__PURE__*/matcher(/*@__PURE__*/new MatchDecorator({\n    regexp: /\\t| +/g,\n    decoration: match => getWhitespaceDeco(match[0]),\n    boundary: /\\S/,\n}));\n/**\nReturns an extension that highlights whitespace, adding a\n`cm-highlightSpace` class to stretches of spaces, and a\n`cm-highlightTab` class to individual tab characters. By default,\nthe former are shown as faint dots, and the latter as arrows.\n*/\nfunction highlightWhitespace() {\n    return whitespaceHighlighter;\n}\nconst trailingHighlighter = /*@__PURE__*/matcher(/*@__PURE__*/new MatchDecorator({\n    regexp: /\\s+$/g,\n    decoration: /*@__PURE__*/Decoration.mark({ class: \"cm-trailingSpace\" }),\n    boundary: /\\S/,\n}));\n/**\nReturns an extension that adds a `cm-trailingSpace` class to all\ntrailing whitespace.\n*/\nfunction highlightTrailingWhitespace() {\n    return trailingHighlighter;\n}\n\n/**\n@internal\n*/\nconst __test = { HeightMap, HeightOracle, MeasuredHeights, QueryType, ChangedRange, computeOrder,\n    moveVisually, clearHeightChangeFlag, getHeightChangeFlag: () => heightChangeFlag };\n\nexport { BidiSpan, BlockInfo, BlockType, Decoration, Direction, EditorView, GutterMarker, MatchDecorator, RectangleMarker, ViewPlugin, ViewUpdate, WidgetType, __test, closeHoverTooltips, crosshairCursor, drawSelection, dropCursor, getDrawSelectionConfig, getPanel, getTooltip, gutter, gutterLineClass, gutterWidgetClass, gutters, hasHoverTooltips, highlightActiveLine, highlightActiveLineGutter, highlightSpecialChars, highlightTrailingWhitespace, highlightWhitespace, hoverTooltip, keymap, layer, lineNumberMarkers, lineNumberWidgetMarker, lineNumbers, logException, panels, placeholder, rectangularSelection, repositionTooltips, runScopeHandlers, scrollPastEnd, showPanel, showTooltip, tooltips };\n","var Cs = Object.defineProperty;\nvar qs = (r, t, e) => t in r ? Cs(r, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : r[t] = e;\nvar Vt = (r, t, e) => (qs(r, typeof t != \"symbol\" ? t + \"\" : t, e), e);\nimport { fromCodePoint as Se, StateField as Os, RangeSetBuilder as Te, Facet as Mt, EditorState as se, StateEffect as Es, Prec as ms } from \"@codemirror/state\";\nimport { ViewPlugin as Ht, EditorView as ht, Decoration as K, hoverTooltip as Gs, WidgetType as As, Direction as Nt, logException as Ns } from \"@codemirror/view\";\nconst Ss = 1024;\nlet Bs = 0;\nclass ie {\n  constructor(t, e) {\n    this.from = t, this.to = e;\n  }\n}\nclass x {\n  /**\n  Create a new node prop type.\n  */\n  constructor(t = {}) {\n    this.id = Bs++, this.perNode = !!t.perNode, this.deserialize = t.deserialize || (() => {\n      throw new Error(\"This node type doesn't define a deserialize function\");\n    });\n  }\n  /**\n  This is meant to be used with\n  [`NodeSet.extend`](#common.NodeSet.extend) or\n  [`LRParser.configure`](#lr.ParserConfig.props) to compute\n  prop values for each node type in the set. Takes a [match\n  object](#common.NodeType^match) or function that returns undefined\n  if the node type doesn't get this prop, and the prop's value if\n  it does.\n  */\n  add(t) {\n    if (this.perNode)\n      throw new RangeError(\"Can't add per-node props to node types\");\n    return typeof t != \"function\" && (t = P.match(t)), (e) => {\n      let s = t(e);\n      return s === void 0 ? null : [this, s];\n    };\n  }\n}\nx.closedBy = new x({ deserialize: (r) => r.split(\" \") });\nx.openedBy = new x({ deserialize: (r) => r.split(\" \") });\nx.group = new x({ deserialize: (r) => r.split(\" \") });\nx.isolate = new x({ deserialize: (r) => {\n  if (r && r != \"rtl\" && r != \"ltr\" && r != \"auto\")\n    throw new RangeError(\"Invalid value for isolate: \" + r);\n  return r || \"auto\";\n} });\nx.contextHash = new x({ perNode: !0 });\nx.lookAhead = new x({ perNode: !0 });\nx.mounted = new x({ perNode: !0 });\nclass Bt {\n  constructor(t, e, s) {\n    this.tree = t, this.overlay = e, this.parser = s;\n  }\n  /**\n  @internal\n  */\n  static get(t) {\n    return t && t.props && t.props[x.mounted.id];\n  }\n}\nconst Xs = /* @__PURE__ */ Object.create(null);\nclass P {\n  /**\n  @internal\n  */\n  constructor(t, e, s, i = 0) {\n    this.name = t, this.props = e, this.id = s, this.flags = i;\n  }\n  /**\n  Define a node type.\n  */\n  static define(t) {\n    let e = t.props && t.props.length ? /* @__PURE__ */ Object.create(null) : Xs, s = (t.top ? 1 : 0) | (t.skipped ? 2 : 0) | (t.error ? 4 : 0) | (t.name == null ? 8 : 0), i = new P(t.name || \"\", e, t.id, s);\n    if (t.props) {\n      for (let n of t.props)\n        if (Array.isArray(n) || (n = n(i)), n) {\n          if (n[0].perNode)\n            throw new RangeError(\"Can't store a per-node prop on a node type\");\n          e[n[0].id] = n[1];\n        }\n    }\n    return i;\n  }\n  /**\n  Retrieves a node prop for this type. Will return `undefined` if\n  the prop isn't present on this node.\n  */\n  prop(t) {\n    return this.props[t.id];\n  }\n  /**\n  True when this is the top node of a grammar.\n  */\n  get isTop() {\n    return (this.flags & 1) > 0;\n  }\n  /**\n  True when this node is produced by a skip rule.\n  */\n  get isSkipped() {\n    return (this.flags & 2) > 0;\n  }\n  /**\n  Indicates whether this is an error node.\n  */\n  get isError() {\n    return (this.flags & 4) > 0;\n  }\n  /**\n  When true, this node type doesn't correspond to a user-declared\n  named node, for example because it is used to cache repetition.\n  */\n  get isAnonymous() {\n    return (this.flags & 8) > 0;\n  }\n  /**\n  Returns true when this node's name or one of its\n  [groups](#common.NodeProp^group) matches the given string.\n  */\n  is(t) {\n    if (typeof t == \"string\") {\n      if (this.name == t)\n        return !0;\n      let e = this.prop(x.group);\n      return e ? e.indexOf(t) > -1 : !1;\n    }\n    return this.id == t;\n  }\n  /**\n  Create a function from node types to arbitrary values by\n  specifying an object whose property names are node or\n  [group](#common.NodeProp^group) names. Often useful with\n  [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n  names, separated by spaces, in a single property name to map\n  multiple node names to a single value.\n  */\n  static match(t) {\n    let e = /* @__PURE__ */ Object.create(null);\n    for (let s in t)\n      for (let i of s.split(\" \"))\n        e[i] = t[s];\n    return (s) => {\n      for (let i = s.prop(x.group), n = -1; n < (i ? i.length : 0); n++) {\n        let o = e[n < 0 ? s.name : i[n]];\n        if (o)\n          return o;\n      }\n    };\n  }\n}\nP.none = new P(\n  \"\",\n  /* @__PURE__ */ Object.create(null),\n  0,\n  8\n  /* NodeFlag.Anonymous */\n);\nclass Fe {\n  /**\n  Create a set with the given types. The `id` property of each\n  type should correspond to its position within the array.\n  */\n  constructor(t) {\n    this.types = t;\n    for (let e = 0; e < t.length; e++)\n      if (t[e].id != e)\n        throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n  }\n  /**\n  Create a copy of this set with some node properties added. The\n  arguments to this method can be created with\n  [`NodeProp.add`](#common.NodeProp.add).\n  */\n  extend(...t) {\n    let e = [];\n    for (let s of this.types) {\n      let i = null;\n      for (let n of t) {\n        let o = n(s);\n        o && (i || (i = Object.assign({}, s.props)), i[o[0].id] = o[1]);\n      }\n      e.push(i ? new P(s.name, i, s.id, s.flags) : s);\n    }\n    return new Fe(e);\n  }\n}\nconst vt = /* @__PURE__ */ new WeakMap(), We = /* @__PURE__ */ new WeakMap();\nvar v;\n(function(r) {\n  r[r.ExcludeBuffers = 1] = \"ExcludeBuffers\", r[r.IncludeAnonymous = 2] = \"IncludeAnonymous\", r[r.IgnoreMounts = 4] = \"IgnoreMounts\", r[r.IgnoreOverlays = 8] = \"IgnoreOverlays\";\n})(v || (v = {}));\nclass V {\n  /**\n  Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n  */\n  constructor(t, e, s, i, n) {\n    if (this.type = t, this.children = e, this.positions = s, this.length = i, this.props = null, n && n.length) {\n      this.props = /* @__PURE__ */ Object.create(null);\n      for (let [o, l] of n)\n        this.props[typeof o == \"number\" ? o : o.id] = l;\n    }\n  }\n  /**\n  @internal\n  */\n  toString() {\n    let t = Bt.get(this);\n    if (t && !t.overlay)\n      return t.tree.toString();\n    let e = \"\";\n    for (let s of this.children) {\n      let i = s.toString();\n      i && (e && (e += \",\"), e += i);\n    }\n    return this.type.name ? (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) + (e.length ? \"(\" + e + \")\" : \"\") : e;\n  }\n  /**\n  Get a [tree cursor](#common.TreeCursor) positioned at the top of\n  the tree. Mode can be used to [control](#common.IterMode) which\n  nodes the cursor visits.\n  */\n  cursor(t = 0) {\n    return new xe(this.topNode, t);\n  }\n  /**\n  Get a [tree cursor](#common.TreeCursor) pointing into this tree\n  at the given position and side (see\n  [`moveTo`](#common.TreeCursor.moveTo).\n  */\n  cursorAt(t, e = 0, s = 0) {\n    let i = vt.get(this) || this.topNode, n = new xe(i);\n    return n.moveTo(t, e), vt.set(this, n._tree), n;\n  }\n  /**\n  Get a [syntax node](#common.SyntaxNode) object for the top of the\n  tree.\n  */\n  get topNode() {\n    return new E(this, 0, 0, null);\n  }\n  /**\n  Get the [syntax node](#common.SyntaxNode) at the given position.\n  If `side` is -1, this will move into nodes that end at the\n  position. If 1, it'll move into nodes that start at the\n  position. With 0, it'll only enter nodes that cover the position\n  from both sides.\n  \n  Note that this will not enter\n  [overlays](#common.MountedTree.overlay), and you often want\n  [`resolveInner`](#common.Tree.resolveInner) instead.\n  */\n  resolve(t, e = 0) {\n    let s = Tt(vt.get(this) || this.topNode, t, e, !1);\n    return vt.set(this, s), s;\n  }\n  /**\n  Like [`resolve`](#common.Tree.resolve), but will enter\n  [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n  pointing into the innermost overlaid tree at the given position\n  (with parent links going through all parent structure, including\n  the host trees).\n  */\n  resolveInner(t, e = 0) {\n    let s = Tt(We.get(this) || this.topNode, t, e, !0);\n    return We.set(this, s), s;\n  }\n  /**\n  In some situations, it can be useful to iterate through all\n  nodes around a position, including those in overlays that don't\n  directly cover the position. This method gives you an iterator\n  that will produce all nodes, from small to big, around the given\n  position.\n  */\n  resolveStack(t, e = 0) {\n    return Qs(this, t, e);\n  }\n  /**\n  Iterate over the tree and its children, calling `enter` for any\n  node that touches the `from`/`to` region (if given) before\n  running over such a node's children, and `leave` (if given) when\n  leaving the node. When `enter` returns `false`, that node will\n  not have its children iterated over (or `leave` called).\n  */\n  iterate(t) {\n    let { enter: e, leave: s, from: i = 0, to: n = this.length } = t, o = t.mode || 0, l = (o & v.IncludeAnonymous) > 0;\n    for (let a = this.cursor(o | v.IncludeAnonymous); ; ) {\n      let h = !1;\n      if (a.from <= n && a.to >= i && (!l && a.type.isAnonymous || e(a) !== !1)) {\n        if (a.firstChild())\n          continue;\n        h = !0;\n      }\n      for (; h && s && (l || !a.type.isAnonymous) && s(a), !a.nextSibling(); ) {\n        if (!a.parent())\n          return;\n        h = !0;\n      }\n    }\n  }\n  /**\n  Get the value of the given [node prop](#common.NodeProp) for this\n  node. Works with both per-node and per-type props.\n  */\n  prop(t) {\n    return t.perNode ? this.props ? this.props[t.id] : void 0 : this.type.prop(t);\n  }\n  /**\n  Returns the node's [per-node props](#common.NodeProp.perNode) in a\n  format that can be passed to the [`Tree`](#common.Tree)\n  constructor.\n  */\n  get propValues() {\n    let t = [];\n    if (this.props)\n      for (let e in this.props)\n        t.push([+e, this.props[e]]);\n    return t;\n  }\n  /**\n  Balance the direct children of this tree, producing a copy of\n  which may have children grouped into subtrees with type\n  [`NodeType.none`](#common.NodeType^none).\n  */\n  balance(t = {}) {\n    return this.children.length <= 8 ? this : ve(P.none, this.children, this.positions, 0, this.children.length, 0, this.length, (e, s, i) => new V(this.type, e, s, i, this.propValues), t.makeTree || ((e, s, i) => new V(P.none, e, s, i)));\n  }\n  /**\n  Build a tree from a postfix-ordered buffer of node information,\n  or a cursor over such a buffer.\n  */\n  static build(t) {\n    return Ks(t);\n  }\n}\nV.empty = new V(P.none, [], [], 0);\nclass Re {\n  constructor(t, e) {\n    this.buffer = t, this.index = e;\n  }\n  get id() {\n    return this.buffer[this.index - 4];\n  }\n  get start() {\n    return this.buffer[this.index - 3];\n  }\n  get end() {\n    return this.buffer[this.index - 2];\n  }\n  get size() {\n    return this.buffer[this.index - 1];\n  }\n  get pos() {\n    return this.index;\n  }\n  next() {\n    this.index -= 4;\n  }\n  fork() {\n    return new Re(this.buffer, this.index);\n  }\n}\nclass st {\n  /**\n  Create a tree buffer.\n  */\n  constructor(t, e, s) {\n    this.buffer = t, this.length = e, this.set = s;\n  }\n  /**\n  @internal\n  */\n  get type() {\n    return P.none;\n  }\n  /**\n  @internal\n  */\n  toString() {\n    let t = [];\n    for (let e = 0; e < this.buffer.length; )\n      t.push(this.childString(e)), e = this.buffer[e + 3];\n    return t.join(\",\");\n  }\n  /**\n  @internal\n  */\n  childString(t) {\n    let e = this.buffer[t], s = this.buffer[t + 3], i = this.set.types[e], n = i.name;\n    if (/\\W/.test(n) && !i.isError && (n = JSON.stringify(n)), t += 4, s == t)\n      return n;\n    let o = [];\n    for (; t < s; )\n      o.push(this.childString(t)), t = this.buffer[t + 3];\n    return n + \"(\" + o.join(\",\") + \")\";\n  }\n  /**\n  @internal\n  */\n  findChild(t, e, s, i, n) {\n    let { buffer: o } = this, l = -1;\n    for (let a = t; a != e && !(bs(n, i, o[a + 1], o[a + 2]) && (l = a, s > 0)); a = o[a + 3])\n      ;\n    return l;\n  }\n  /**\n  @internal\n  */\n  slice(t, e, s) {\n    let i = this.buffer, n = new Uint16Array(e - t), o = 0;\n    for (let l = t, a = 0; l < e; ) {\n      n[a++] = i[l++], n[a++] = i[l++] - s;\n      let h = n[a++] = i[l++] - s;\n      n[a++] = i[l++] - t, o = Math.max(o, h);\n    }\n    return new st(n, o, this.set);\n  }\n}\nfunction bs(r, t, e, s) {\n  switch (r) {\n    case -2:\n      return e < t;\n    case -1:\n      return s >= t && e < t;\n    case 0:\n      return e < t && s > t;\n    case 1:\n      return e <= t && s > t;\n    case 2:\n      return s > t;\n    case 4:\n      return !0;\n  }\n}\nfunction Tt(r, t, e, s) {\n  for (var i; r.from == r.to || (e < 1 ? r.from >= t : r.from > t) || (e > -1 ? r.to <= t : r.to < t); ) {\n    let o = !s && r instanceof E && r.index < 0 ? null : r.parent;\n    if (!o)\n      return r;\n    r = o;\n  }\n  let n = s ? 0 : v.IgnoreOverlays;\n  if (s)\n    for (let o = r, l = o.parent; l; o = l, l = o.parent)\n      o instanceof E && o.index < 0 && ((i = l.enter(t, e, n)) === null || i === void 0 ? void 0 : i.from) != o.from && (r = l);\n  for (; ; ) {\n    let o = r.enter(t, e, n);\n    if (!o)\n      return r;\n    r = o;\n  }\n}\nclass xs {\n  cursor(t = 0) {\n    return new xe(this, t);\n  }\n  getChild(t, e = null, s = null) {\n    let i = Ce(this, t, e, s);\n    return i.length ? i[0] : null;\n  }\n  getChildren(t, e = null, s = null) {\n    return Ce(this, t, e, s);\n  }\n  resolve(t, e = 0) {\n    return Tt(this, t, e, !1);\n  }\n  resolveInner(t, e = 0) {\n    return Tt(this, t, e, !0);\n  }\n  matchContext(t) {\n    return be(this, t);\n  }\n  enterUnfinishedNodesBefore(t) {\n    let e = this.childBefore(t), s = this;\n    for (; e; ) {\n      let i = e.lastChild;\n      if (!i || i.to != e.to)\n        break;\n      i.type.isError && i.from == i.to ? (s = e, e = i.prevSibling) : e = i;\n    }\n    return s;\n  }\n  get node() {\n    return this;\n  }\n  get next() {\n    return this.parent;\n  }\n}\nclass E extends xs {\n  constructor(t, e, s, i) {\n    super(), this._tree = t, this.from = e, this.index = s, this._parent = i;\n  }\n  get type() {\n    return this._tree.type;\n  }\n  get name() {\n    return this._tree.type.name;\n  }\n  get to() {\n    return this.from + this._tree.length;\n  }\n  nextChild(t, e, s, i, n = 0) {\n    for (let o = this; ; ) {\n      for (let { children: l, positions: a } = o._tree, h = e > 0 ? l.length : -1; t != h; t += e) {\n        let u = l[t], $ = a[t] + o.from;\n        if (bs(i, s, $, $ + u.length)) {\n          if (u instanceof st) {\n            if (n & v.ExcludeBuffers)\n              continue;\n            let f = u.findChild(0, u.buffer.length, e, s - $, i);\n            if (f > -1)\n              return new et(new _s(o, u, t, $), null, f);\n          } else if (n & v.IncludeAnonymous || !u.type.isAnonymous || Ve(u)) {\n            let f;\n            if (!(n & v.IgnoreMounts) && (f = Bt.get(u)) && !f.overlay)\n              return new E(f.tree, $, t, o);\n            let c = new E(u, $, t, o);\n            return n & v.IncludeAnonymous || !c.type.isAnonymous ? c : c.nextChild(e < 0 ? u.children.length - 1 : 0, e, s, i);\n          }\n        }\n      }\n      if (n & v.IncludeAnonymous || !o.type.isAnonymous || (o.index >= 0 ? t = o.index + e : t = e < 0 ? -1 : o._parent._tree.children.length, o = o._parent, !o))\n        return null;\n    }\n  }\n  get firstChild() {\n    return this.nextChild(\n      0,\n      1,\n      0,\n      4\n      /* Side.DontCare */\n    );\n  }\n  get lastChild() {\n    return this.nextChild(\n      this._tree.children.length - 1,\n      -1,\n      0,\n      4\n      /* Side.DontCare */\n    );\n  }\n  childAfter(t) {\n    return this.nextChild(\n      0,\n      1,\n      t,\n      2\n      /* Side.After */\n    );\n  }\n  childBefore(t) {\n    return this.nextChild(\n      this._tree.children.length - 1,\n      -1,\n      t,\n      -2\n      /* Side.Before */\n    );\n  }\n  enter(t, e, s = 0) {\n    let i;\n    if (!(s & v.IgnoreOverlays) && (i = Bt.get(this._tree)) && i.overlay) {\n      let n = t - this.from;\n      for (let { from: o, to: l } of i.overlay)\n        if ((e > 0 ? o <= n : o < n) && (e < 0 ? l >= n : l > n))\n          return new E(i.tree, i.overlay[0].from + this.from, -1, this);\n    }\n    return this.nextChild(0, 1, t, e, s);\n  }\n  nextSignificantParent() {\n    let t = this;\n    for (; t.type.isAnonymous && t._parent; )\n      t = t._parent;\n    return t;\n  }\n  get parent() {\n    return this._parent ? this._parent.nextSignificantParent() : null;\n  }\n  get nextSibling() {\n    return this._parent && this.index >= 0 ? this._parent.nextChild(\n      this.index + 1,\n      1,\n      0,\n      4\n      /* Side.DontCare */\n    ) : null;\n  }\n  get prevSibling() {\n    return this._parent && this.index >= 0 ? this._parent.nextChild(\n      this.index - 1,\n      -1,\n      0,\n      4\n      /* Side.DontCare */\n    ) : null;\n  }\n  get tree() {\n    return this._tree;\n  }\n  toTree() {\n    return this._tree;\n  }\n  /**\n  @internal\n  */\n  toString() {\n    return this._tree.toString();\n  }\n}\nfunction Ce(r, t, e, s) {\n  let i = r.cursor(), n = [];\n  if (!i.firstChild())\n    return n;\n  if (e != null) {\n    for (; !i.type.is(e); )\n      if (!i.nextSibling())\n        return n;\n  }\n  for (; ; ) {\n    if (s != null && i.type.is(s))\n      return n;\n    if (i.type.is(t) && n.push(i.node), !i.nextSibling())\n      return s == null ? n : [];\n  }\n}\nfunction be(r, t, e = t.length - 1) {\n  for (let s = r.parent; e >= 0; s = s.parent) {\n    if (!s)\n      return !1;\n    if (!s.type.isAnonymous) {\n      if (t[e] && t[e] != s.name)\n        return !1;\n      e--;\n    }\n  }\n  return !0;\n}\nclass _s {\n  constructor(t, e, s, i) {\n    this.parent = t, this.buffer = e, this.index = s, this.start = i;\n  }\n}\nclass et extends xs {\n  get name() {\n    return this.type.name;\n  }\n  get from() {\n    return this.context.start + this.context.buffer.buffer[this.index + 1];\n  }\n  get to() {\n    return this.context.start + this.context.buffer.buffer[this.index + 2];\n  }\n  constructor(t, e, s) {\n    super(), this.context = t, this._parent = e, this.index = s, this.type = t.buffer.set.types[t.buffer.buffer[s]];\n  }\n  child(t, e, s) {\n    let { buffer: i } = this.context, n = i.findChild(this.index + 4, i.buffer[this.index + 3], t, e - this.context.start, s);\n    return n < 0 ? null : new et(this.context, this, n);\n  }\n  get firstChild() {\n    return this.child(\n      1,\n      0,\n      4\n      /* Side.DontCare */\n    );\n  }\n  get lastChild() {\n    return this.child(\n      -1,\n      0,\n      4\n      /* Side.DontCare */\n    );\n  }\n  childAfter(t) {\n    return this.child(\n      1,\n      t,\n      2\n      /* Side.After */\n    );\n  }\n  childBefore(t) {\n    return this.child(\n      -1,\n      t,\n      -2\n      /* Side.Before */\n    );\n  }\n  enter(t, e, s = 0) {\n    if (s & v.ExcludeBuffers)\n      return null;\n    let { buffer: i } = this.context, n = i.findChild(this.index + 4, i.buffer[this.index + 3], e > 0 ? 1 : -1, t - this.context.start, e);\n    return n < 0 ? null : new et(this.context, this, n);\n  }\n  get parent() {\n    return this._parent || this.context.parent.nextSignificantParent();\n  }\n  externalSibling(t) {\n    return this._parent ? null : this.context.parent.nextChild(\n      this.context.index + t,\n      t,\n      0,\n      4\n      /* Side.DontCare */\n    );\n  }\n  get nextSibling() {\n    let { buffer: t } = this.context, e = t.buffer[this.index + 3];\n    return e < (this._parent ? t.buffer[this._parent.index + 3] : t.buffer.length) ? new et(this.context, this._parent, e) : this.externalSibling(1);\n  }\n  get prevSibling() {\n    let { buffer: t } = this.context, e = this._parent ? this._parent.index + 4 : 0;\n    return this.index == e ? this.externalSibling(-1) : new et(this.context, this._parent, t.findChild(\n      e,\n      this.index,\n      -1,\n      0,\n      4\n      /* Side.DontCare */\n    ));\n  }\n  get tree() {\n    return null;\n  }\n  toTree() {\n    let t = [], e = [], { buffer: s } = this.context, i = this.index + 4, n = s.buffer[this.index + 3];\n    if (n > i) {\n      let o = s.buffer[this.index + 1];\n      t.push(s.slice(i, n, o)), e.push(0);\n    }\n    return new V(this.type, t, e, this.to - this.from);\n  }\n  /**\n  @internal\n  */\n  toString() {\n    return this.context.buffer.childString(this.index);\n  }\n}\nfunction ks(r) {\n  if (!r.length)\n    return null;\n  let t = 0, e = r[0];\n  for (let n = 1; n < r.length; n++) {\n    let o = r[n];\n    (o.from > e.from || o.to < e.to) && (e = o, t = n);\n  }\n  let s = e instanceof E && e.index < 0 ? null : e.parent, i = r.slice();\n  return s ? i[t] = s : i.splice(t, 1), new Ys(i, e);\n}\nclass Ys {\n  constructor(t, e) {\n    this.heads = t, this.node = e;\n  }\n  get next() {\n    return ks(this.heads);\n  }\n}\nfunction Qs(r, t, e) {\n  let s = r.resolveInner(t, e), i = null;\n  for (let n = s instanceof E ? s : s.context.parent; n; n = n.parent)\n    if (n.index < 0) {\n      let o = n.parent;\n      (i || (i = [s])).push(o.resolve(t, e)), n = o;\n    } else {\n      let o = Bt.get(n.tree);\n      if (o && o.overlay && o.overlay[0].from <= t && o.overlay[o.overlay.length - 1].to >= t) {\n        let l = new E(o.tree, o.overlay[0].from + n.from, -1, n);\n        (i || (i = [s])).push(Tt(l, t, e, !1));\n      }\n    }\n  return i ? ks(i) : s;\n}\nclass xe {\n  /**\n  Shorthand for `.type.name`.\n  */\n  get name() {\n    return this.type.name;\n  }\n  /**\n  @internal\n  */\n  constructor(t, e = 0) {\n    if (this.mode = e, this.buffer = null, this.stack = [], this.index = 0, this.bufferNode = null, t instanceof E)\n      this.yieldNode(t);\n    else {\n      this._tree = t.context.parent, this.buffer = t.context;\n      for (let s = t._parent; s; s = s._parent)\n        this.stack.unshift(s.index);\n      this.bufferNode = t, this.yieldBuf(t.index);\n    }\n  }\n  yieldNode(t) {\n    return t ? (this._tree = t, this.type = t.type, this.from = t.from, this.to = t.to, !0) : !1;\n  }\n  yieldBuf(t, e) {\n    this.index = t;\n    let { start: s, buffer: i } = this.buffer;\n    return this.type = e || i.set.types[i.buffer[t]], this.from = s + i.buffer[t + 1], this.to = s + i.buffer[t + 2], !0;\n  }\n  /**\n  @internal\n  */\n  yield(t) {\n    return t ? t instanceof E ? (this.buffer = null, this.yieldNode(t)) : (this.buffer = t.context, this.yieldBuf(t.index, t.type)) : !1;\n  }\n  /**\n  @internal\n  */\n  toString() {\n    return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n  }\n  /**\n  @internal\n  */\n  enterChild(t, e, s) {\n    if (!this.buffer)\n      return this.yield(this._tree.nextChild(t < 0 ? this._tree._tree.children.length - 1 : 0, t, e, s, this.mode));\n    let { buffer: i } = this.buffer, n = i.findChild(this.index + 4, i.buffer[this.index + 3], t, e - this.buffer.start, s);\n    return n < 0 ? !1 : (this.stack.push(this.index), this.yieldBuf(n));\n  }\n  /**\n  Move the cursor to this node's first child. When this returns\n  false, the node has no child, and the cursor has not been moved.\n  */\n  firstChild() {\n    return this.enterChild(\n      1,\n      0,\n      4\n      /* Side.DontCare */\n    );\n  }\n  /**\n  Move the cursor to this node's last child.\n  */\n  lastChild() {\n    return this.enterChild(\n      -1,\n      0,\n      4\n      /* Side.DontCare */\n    );\n  }\n  /**\n  Move the cursor to the first child that ends after `pos`.\n  */\n  childAfter(t) {\n    return this.enterChild(\n      1,\n      t,\n      2\n      /* Side.After */\n    );\n  }\n  /**\n  Move to the last child that starts before `pos`.\n  */\n  childBefore(t) {\n    return this.enterChild(\n      -1,\n      t,\n      -2\n      /* Side.Before */\n    );\n  }\n  /**\n  Move the cursor to the child around `pos`. If side is -1 the\n  child may end at that position, when 1 it may start there. This\n  will also enter [overlaid](#common.MountedTree.overlay)\n  [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n  set to false.\n  */\n  enter(t, e, s = this.mode) {\n    return this.buffer ? s & v.ExcludeBuffers ? !1 : this.enterChild(1, t, e) : this.yield(this._tree.enter(t, e, s));\n  }\n  /**\n  Move to the node's parent node, if this isn't the top node.\n  */\n  parent() {\n    if (!this.buffer)\n      return this.yieldNode(this.mode & v.IncludeAnonymous ? this._tree._parent : this._tree.parent);\n    if (this.stack.length)\n      return this.yieldBuf(this.stack.pop());\n    let t = this.mode & v.IncludeAnonymous ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n    return this.buffer = null, this.yieldNode(t);\n  }\n  /**\n  @internal\n  */\n  sibling(t) {\n    if (!this.buffer)\n      return this._tree._parent ? this.yield(this._tree.index < 0 ? null : this._tree._parent.nextChild(this._tree.index + t, t, 0, 4, this.mode)) : !1;\n    let { buffer: e } = this.buffer, s = this.stack.length - 1;\n    if (t < 0) {\n      let i = s < 0 ? 0 : this.stack[s] + 4;\n      if (this.index != i)\n        return this.yieldBuf(e.findChild(\n          i,\n          this.index,\n          -1,\n          0,\n          4\n          /* Side.DontCare */\n        ));\n    } else {\n      let i = e.buffer[this.index + 3];\n      if (i < (s < 0 ? e.buffer.length : e.buffer[this.stack[s] + 3]))\n        return this.yieldBuf(i);\n    }\n    return s < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + t, t, 0, 4, this.mode)) : !1;\n  }\n  /**\n  Move to this node's next sibling, if any.\n  */\n  nextSibling() {\n    return this.sibling(1);\n  }\n  /**\n  Move to this node's previous sibling, if any.\n  */\n  prevSibling() {\n    return this.sibling(-1);\n  }\n  atLastNode(t) {\n    let e, s, { buffer: i } = this;\n    if (i) {\n      if (t > 0) {\n        if (this.index < i.buffer.buffer.length)\n          return !1;\n      } else\n        for (let n = 0; n < this.index; n++)\n          if (i.buffer.buffer[n + 3] < this.index)\n            return !1;\n      ({ index: e, parent: s } = i);\n    } else\n      ({ index: e, _parent: s } = this._tree);\n    for (; s; { index: e, _parent: s } = s)\n      if (e > -1)\n        for (let n = e + t, o = t < 0 ? -1 : s._tree.children.length; n != o; n += t) {\n          let l = s._tree.children[n];\n          if (this.mode & v.IncludeAnonymous || l instanceof st || !l.type.isAnonymous || Ve(l))\n            return !1;\n        }\n    return !0;\n  }\n  move(t, e) {\n    if (e && this.enterChild(\n      t,\n      0,\n      4\n      /* Side.DontCare */\n    ))\n      return !0;\n    for (; ; ) {\n      if (this.sibling(t))\n        return !0;\n      if (this.atLastNode(t) || !this.parent())\n        return !1;\n    }\n  }\n  /**\n  Move to the next node in a\n  [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n  traversal, going from a node to its first child or, if the\n  current node is empty or `enter` is false, its next sibling or\n  the next sibling of the first parent node that has one.\n  */\n  next(t = !0) {\n    return this.move(1, t);\n  }\n  /**\n  Move to the next node in a last-to-first pre-order traveral. A\n  node is followed by its last child or, if it has none, its\n  previous sibling or the previous sibling of the first parent\n  node that has one.\n  */\n  prev(t = !0) {\n    return this.move(-1, t);\n  }\n  /**\n  Move the cursor to the innermost node that covers `pos`. If\n  `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n  it will enter nodes that start at `pos`.\n  */\n  moveTo(t, e = 0) {\n    for (; (this.from == this.to || (e < 1 ? this.from >= t : this.from > t) || (e > -1 ? this.to <= t : this.to < t)) && this.parent(); )\n      ;\n    for (; this.enterChild(1, t, e); )\n      ;\n    return this;\n  }\n  /**\n  Get a [syntax node](#common.SyntaxNode) at the cursor's current\n  position.\n  */\n  get node() {\n    if (!this.buffer)\n      return this._tree;\n    let t = this.bufferNode, e = null, s = 0;\n    if (t && t.context == this.buffer)\n      t:\n        for (let i = this.index, n = this.stack.length; n >= 0; ) {\n          for (let o = t; o; o = o._parent)\n            if (o.index == i) {\n              if (i == this.index)\n                return o;\n              e = o, s = n + 1;\n              break t;\n            }\n          i = this.stack[--n];\n        }\n    for (let i = s; i < this.stack.length; i++)\n      e = new et(this.buffer, e, this.stack[i]);\n    return this.bufferNode = new et(this.buffer, e, this.index);\n  }\n  /**\n  Get the [tree](#common.Tree) that represents the current node, if\n  any. Will return null when the node is in a [tree\n  buffer](#common.TreeBuffer).\n  */\n  get tree() {\n    return this.buffer ? null : this._tree._tree;\n  }\n  /**\n  Iterate over the current node and all its descendants, calling\n  `enter` when entering a node and `leave`, if given, when leaving\n  one. When `enter` returns `false`, any children of that node are\n  skipped, and `leave` isn't called for it.\n  */\n  iterate(t, e) {\n    for (let s = 0; ; ) {\n      let i = !1;\n      if (this.type.isAnonymous || t(this) !== !1) {\n        if (this.firstChild()) {\n          s++;\n          continue;\n        }\n        this.type.isAnonymous || (i = !0);\n      }\n      for (; i && e && e(this), i = this.type.isAnonymous, !this.nextSibling(); ) {\n        if (!s)\n          return;\n        this.parent(), s--, i = !0;\n      }\n    }\n  }\n  /**\n  Test whether the current node matches a given context—a sequence\n  of direct parent node names. Empty strings in the context array\n  are treated as wildcards.\n  */\n  matchContext(t) {\n    if (!this.buffer)\n      return be(this.node, t);\n    let { buffer: e } = this.buffer, { types: s } = e.set;\n    for (let i = t.length - 1, n = this.stack.length - 1; i >= 0; n--) {\n      if (n < 0)\n        return be(this.node, t, i);\n      let o = s[e.buffer[this.stack[n]]];\n      if (!o.isAnonymous) {\n        if (t[i] && t[i] != o.name)\n          return !1;\n        i--;\n      }\n    }\n    return !0;\n  }\n}\nfunction Ve(r) {\n  return r.children.some((t) => t instanceof st || !t.type.isAnonymous || Ve(t));\n}\nfunction Ks(r) {\n  var t;\n  let { buffer: e, nodeSet: s, maxBufferLength: i = Ss, reused: n = [], minRepeatType: o = s.types.length } = r, l = Array.isArray(e) ? new Re(e, e.length) : e, a = s.types, h = 0, u = 0;\n  function $(S, y, j, T, k, b) {\n    let { id: g, start: O, end: F, size: w } = l, D = u;\n    for (; w < 0; )\n      if (l.next(), w == -1) {\n        let Z = n[g];\n        j.push(Z), T.push(O - S);\n        return;\n      } else if (w == -3) {\n        h = g;\n        return;\n      } else if (w == -4) {\n        u = g;\n        return;\n      } else\n        throw new RangeError(`Unrecognized record size: ${w}`);\n    let it = a[g], $t, rt, De = O - S;\n    if (F - O <= i && (rt = R(l.pos - y, k))) {\n      let Z = new Uint16Array(rt.size - rt.skip), C = l.pos - rt.size, B = Z.length;\n      for (; l.pos > C; )\n        B = I(rt.start, Z, B);\n      $t = new st(Z, F - rt.start, s), De = rt.start - S;\n    } else {\n      let Z = l.pos - w;\n      l.next();\n      let C = [], B = [], nt = g >= o ? g : -1, ft = 0, Rt = F;\n      for (; l.pos > Z; )\n        nt >= 0 && l.id == nt && l.size >= 0 ? (l.end <= Rt - i && (d(C, B, O, ft, l.end, Rt, nt, D), ft = C.length, Rt = l.end), l.next()) : b > 2500 ? f(O, Z, C, B) : $(O, Z, C, B, nt, b + 1);\n      if (nt >= 0 && ft > 0 && ft < C.length && d(C, B, O, ft, O, Rt, nt, D), C.reverse(), B.reverse(), nt > -1 && ft > 0) {\n        let Pe = c(it);\n        $t = ve(it, C, B, 0, C.length, 0, F - O, Pe, Pe);\n      } else\n        $t = m(it, C, B, F - O, D - F);\n    }\n    j.push($t), T.push(De);\n  }\n  function f(S, y, j, T) {\n    let k = [], b = 0, g = -1;\n    for (; l.pos > y; ) {\n      let { id: O, start: F, end: w, size: D } = l;\n      if (D > 4)\n        l.next();\n      else {\n        if (g > -1 && F < g)\n          break;\n        g < 0 && (g = w - i), k.push(O, F, w), b++, l.next();\n      }\n    }\n    if (b) {\n      let O = new Uint16Array(b * 4), F = k[k.length - 2];\n      for (let w = k.length - 3, D = 0; w >= 0; w -= 3)\n        O[D++] = k[w], O[D++] = k[w + 1] - F, O[D++] = k[w + 2] - F, O[D++] = D;\n      j.push(new st(O, k[2] - F, s)), T.push(F - S);\n    }\n  }\n  function c(S) {\n    return (y, j, T) => {\n      let k = 0, b = y.length - 1, g, O;\n      if (b >= 0 && (g = y[b]) instanceof V) {\n        if (!b && g.type == S && g.length == T)\n          return g;\n        (O = g.prop(x.lookAhead)) && (k = j[b] + g.length + O);\n      }\n      return m(S, y, j, T, k);\n    };\n  }\n  function d(S, y, j, T, k, b, g, O) {\n    let F = [], w = [];\n    for (; S.length > T; )\n      F.push(S.pop()), w.push(y.pop() + j - k);\n    S.push(m(s.types[g], F, w, b - k, O - b)), y.push(k - j);\n  }\n  function m(S, y, j, T, k = 0, b) {\n    if (h) {\n      let g = [x.contextHash, h];\n      b = b ? [g].concat(b) : [g];\n    }\n    if (k > 25) {\n      let g = [x.lookAhead, k];\n      b = b ? [g].concat(b) : [g];\n    }\n    return new V(S, y, j, T, b);\n  }\n  function R(S, y) {\n    let j = l.fork(), T = 0, k = 0, b = 0, g = j.end - i, O = { size: 0, start: 0, skip: 0 };\n    t:\n      for (let F = j.pos - S; j.pos > F; ) {\n        let w = j.size;\n        if (j.id == y && w >= 0) {\n          O.size = T, O.start = k, O.skip = b, b += 4, T += 4, j.next();\n          continue;\n        }\n        let D = j.pos - w;\n        if (w < 0 || D < F || j.start < g)\n          break;\n        let it = j.id >= o ? 4 : 0, $t = j.start;\n        for (j.next(); j.pos > D; ) {\n          if (j.size < 0)\n            if (j.size == -3)\n              it += 4;\n            else\n              break t;\n          else\n            j.id >= o && (it += 4);\n          j.next();\n        }\n        k = $t, T += w, b += it;\n      }\n    return (y < 0 || T == S) && (O.size = T, O.start = k, O.skip = b), O.size > 4 ? O : void 0;\n  }\n  function I(S, y, j) {\n    let { id: T, start: k, end: b, size: g } = l;\n    if (l.next(), g >= 0 && T < o) {\n      let O = j;\n      if (g > 4) {\n        let F = l.pos - (g - 4);\n        for (; l.pos > F; )\n          j = I(S, y, j);\n      }\n      y[--j] = O, y[--j] = b - S, y[--j] = k - S, y[--j] = T;\n    } else\n      g == -3 ? h = T : g == -4 && (u = T);\n    return j;\n  }\n  let z = [], J = [];\n  for (; l.pos > 0; )\n    $(r.start || 0, r.bufferStart || 0, z, J, -1, 0);\n  let N = (t = r.length) !== null && t !== void 0 ? t : z.length ? J[0] + z[0].length : 0;\n  return new V(a[r.topID], z.reverse(), J.reverse(), N);\n}\nconst qe = /* @__PURE__ */ new WeakMap();\nfunction Gt(r, t) {\n  if (!r.isAnonymous || t instanceof st || t.type != r)\n    return 1;\n  let e = qe.get(t);\n  if (e == null) {\n    e = 1;\n    for (let s of t.children) {\n      if (s.type != r || !(s instanceof V)) {\n        e = 1;\n        break;\n      }\n      e += Gt(r, s);\n    }\n    qe.set(t, e);\n  }\n  return e;\n}\nfunction ve(r, t, e, s, i, n, o, l, a) {\n  let h = 0;\n  for (let d = s; d < i; d++)\n    h += Gt(r, t[d]);\n  let u = Math.ceil(\n    h * 1.5 / 8\n    /* Balance.BranchFactor */\n  ), $ = [], f = [];\n  function c(d, m, R, I, z) {\n    for (let J = R; J < I; ) {\n      let N = J, S = m[J], y = Gt(r, d[J]);\n      for (J++; J < I; J++) {\n        let j = Gt(r, d[J]);\n        if (y + j >= u)\n          break;\n        y += j;\n      }\n      if (J == N + 1) {\n        if (y > u) {\n          let j = d[N];\n          c(j.children, j.positions, 0, j.children.length, m[N] + z);\n          continue;\n        }\n        $.push(d[N]);\n      } else {\n        let j = m[J - 1] + d[J - 1].length - S;\n        $.push(ve(r, d, m, N, J, S, j, null, a));\n      }\n      f.push(S + z - n);\n    }\n  }\n  return c(t, e, s, i, 0), (l || a)($, f, o);\n}\nclass ut {\n  /**\n  Construct a tree fragment. You'll usually want to use\n  [`addTree`](#common.TreeFragment^addTree) and\n  [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n  calling this directly.\n  */\n  constructor(t, e, s, i, n = !1, o = !1) {\n    this.from = t, this.to = e, this.tree = s, this.offset = i, this.open = (n ? 1 : 0) | (o ? 2 : 0);\n  }\n  /**\n  Whether the start of the fragment represents the start of a\n  parse, or the end of a change. (In the second case, it may not\n  be safe to reuse some nodes at the start, depending on the\n  parsing algorithm.)\n  */\n  get openStart() {\n    return (this.open & 1) > 0;\n  }\n  /**\n  Whether the end of the fragment represents the end of a\n  full-document parse, or the start of a change.\n  */\n  get openEnd() {\n    return (this.open & 2) > 0;\n  }\n  /**\n  Create a set of fragments from a freshly parsed tree, or update\n  an existing set of fragments by replacing the ones that overlap\n  with a tree with content from the new tree. When `partial` is\n  true, the parse is treated as incomplete, and the resulting\n  fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n  true.\n  */\n  static addTree(t, e = [], s = !1) {\n    let i = [new ut(0, t.length, t, 0, !1, s)];\n    for (let n of e)\n      n.to > t.length && i.push(n);\n    return i;\n  }\n  /**\n  Apply a set of edits to an array of fragments, removing or\n  splitting fragments as necessary to remove edited ranges, and\n  adjusting offsets for fragments that moved.\n  */\n  static applyChanges(t, e, s = 128) {\n    if (!e.length)\n      return t;\n    let i = [], n = 1, o = t.length ? t[0] : null;\n    for (let l = 0, a = 0, h = 0; ; l++) {\n      let u = l < e.length ? e[l] : null, $ = u ? u.fromA : 1e9;\n      if ($ - a >= s)\n        for (; o && o.from < $; ) {\n          let f = o;\n          if (a >= f.from || $ <= f.to || h) {\n            let c = Math.max(f.from, a) - h, d = Math.min(f.to, $) - h;\n            f = c >= d ? null : new ut(c, d, f.tree, f.offset + h, l > 0, !!u);\n          }\n          if (f && i.push(f), o.to > $)\n            break;\n          o = n < t.length ? t[n++] : null;\n        }\n      if (!u)\n        break;\n      a = u.toA, h = u.toA - u.toB;\n    }\n    return i;\n  }\n}\nclass ys {\n  /**\n  Start a parse, returning a [partial parse](#common.PartialParse)\n  object. [`fragments`](#common.TreeFragment) can be passed in to\n  make the parse incremental.\n  \n  By default, the entire input is parsed. You can pass `ranges`,\n  which should be a sorted array of non-empty, non-overlapping\n  ranges, to parse only those ranges. The tree returned in that\n  case will start at `ranges[0].from`.\n  */\n  startParse(t, e, s) {\n    return typeof t == \"string\" && (t = new Zs(t)), s = s ? s.length ? s.map((i) => new ie(i.from, i.to)) : [new ie(0, 0)] : [new ie(0, t.length)], this.createParse(t, e || [], s);\n  }\n  /**\n  Run a full parse, returning the resulting tree.\n  */\n  parse(t, e, s) {\n    let i = this.startParse(t, e, s);\n    for (; ; ) {\n      let n = i.advance();\n      if (n)\n        return n;\n    }\n  }\n}\nclass Zs {\n  constructor(t) {\n    this.string = t;\n  }\n  get length() {\n    return this.string.length;\n  }\n  chunk(t) {\n    return this.string.slice(t);\n  }\n  get lineChunks() {\n    return !1;\n  }\n  read(t, e) {\n    return this.string.slice(t, e);\n  }\n}\nnew x({ perNode: !0 });\nclass Xt {\n  /**\n  @internal\n  */\n  constructor(t, e, s, i, n, o, l, a, h, u = 0, $) {\n    this.p = t, this.stack = e, this.state = s, this.reducePos = i, this.pos = n, this.score = o, this.buffer = l, this.bufferBase = a, this.curContext = h, this.lookAhead = u, this.parent = $;\n  }\n  /**\n  @internal\n  */\n  toString() {\n    return `[${this.stack.filter((t, e) => e % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n  }\n  // Start an empty stack\n  /**\n  @internal\n  */\n  static start(t, e, s = 0) {\n    let i = t.parser.context;\n    return new Xt(t, [], e, s, s, 0, [], 0, i ? new Ee(i, i.start) : null, 0, null);\n  }\n  /**\n  The stack's current [context](#lr.ContextTracker) value, if\n  any. Its type will depend on the context tracker's type\n  parameter, or it will be `null` if there is no context\n  tracker.\n  */\n  get context() {\n    return this.curContext ? this.curContext.context : null;\n  }\n  // Push a state onto the stack, tracking its start position as well\n  // as the buffer base at that point.\n  /**\n  @internal\n  */\n  pushState(t, e) {\n    this.stack.push(this.state, e, this.bufferBase + this.buffer.length), this.state = t;\n  }\n  // Apply a reduce action\n  /**\n  @internal\n  */\n  reduce(t) {\n    var e;\n    let s = t >> 19, i = t & 65535, { parser: n } = this.p, o = n.dynamicPrecedence(i);\n    if (o && (this.score += o), s == 0) {\n      this.pushState(n.getGoto(this.state, i, !0), this.reducePos), i < n.minRepeatTerm && this.storeNode(i, this.reducePos, this.reducePos, 4, !0), this.reduceContext(i, this.reducePos);\n      return;\n    }\n    let l = this.stack.length - (s - 1) * 3 - (t & 262144 ? 6 : 0), a = l ? this.stack[l - 2] : this.p.ranges[0].from, h = this.reducePos - a;\n    h >= 2e3 && !(!((e = this.p.parser.nodeSet.types[i]) === null || e === void 0) && e.isAnonymous) && (a == this.p.lastBigReductionStart ? (this.p.bigReductionCount++, this.p.lastBigReductionSize = h) : this.p.lastBigReductionSize < h && (this.p.bigReductionCount = 1, this.p.lastBigReductionStart = a, this.p.lastBigReductionSize = h));\n    let u = l ? this.stack[l - 1] : 0, $ = this.bufferBase + this.buffer.length - u;\n    if (i < n.minRepeatTerm || t & 131072) {\n      let f = n.stateFlag(\n        this.state,\n        1\n        /* StateFlag.Skipped */\n      ) ? this.pos : this.reducePos;\n      this.storeNode(i, a, f, $ + 4, !0);\n    }\n    if (t & 262144)\n      this.state = this.stack[l];\n    else {\n      let f = this.stack[l - 3];\n      this.state = n.getGoto(f, i, !0);\n    }\n    for (; this.stack.length > l; )\n      this.stack.pop();\n    this.reduceContext(i, a);\n  }\n  // Shift a value into the buffer\n  /**\n  @internal\n  */\n  storeNode(t, e, s, i = 4, n = !1) {\n    if (t == 0 && (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n      let o = this, l = this.buffer.length;\n      if (l == 0 && o.parent && (l = o.bufferBase - o.parent.bufferBase, o = o.parent), l > 0 && o.buffer[l - 4] == 0 && o.buffer[l - 1] > -1) {\n        if (e == s)\n          return;\n        if (o.buffer[l - 2] >= e) {\n          o.buffer[l - 2] = s;\n          return;\n        }\n      }\n    }\n    if (!n || this.pos == s)\n      this.buffer.push(t, e, s, i);\n    else {\n      let o = this.buffer.length;\n      if (o > 0 && this.buffer[o - 4] != 0)\n        for (; o > 0 && this.buffer[o - 2] > s; )\n          this.buffer[o] = this.buffer[o - 4], this.buffer[o + 1] = this.buffer[o - 3], this.buffer[o + 2] = this.buffer[o - 2], this.buffer[o + 3] = this.buffer[o - 1], o -= 4, i > 4 && (i -= 4);\n      this.buffer[o] = t, this.buffer[o + 1] = e, this.buffer[o + 2] = s, this.buffer[o + 3] = i;\n    }\n  }\n  // Apply a shift action\n  /**\n  @internal\n  */\n  shift(t, e, s, i) {\n    if (t & 131072)\n      this.pushState(t & 65535, this.pos);\n    else if (t & 262144)\n      this.pos = i, this.shiftContext(e, s), e <= this.p.parser.maxNode && this.buffer.push(e, s, i, 4);\n    else {\n      let n = t, { parser: o } = this.p;\n      (i > this.pos || e <= o.maxNode) && (this.pos = i, o.stateFlag(\n        n,\n        1\n        /* StateFlag.Skipped */\n      ) || (this.reducePos = i)), this.pushState(n, s), this.shiftContext(e, s), e <= o.maxNode && this.buffer.push(e, s, i, 4);\n    }\n  }\n  // Apply an action\n  /**\n  @internal\n  */\n  apply(t, e, s, i) {\n    t & 65536 ? this.reduce(t) : this.shift(t, e, s, i);\n  }\n  // Add a prebuilt (reused) node into the buffer.\n  /**\n  @internal\n  */\n  useNode(t, e) {\n    let s = this.p.reused.length - 1;\n    (s < 0 || this.p.reused[s] != t) && (this.p.reused.push(t), s++);\n    let i = this.pos;\n    this.reducePos = this.pos = i + t.length, this.pushState(e, i), this.buffer.push(\n      s,\n      i,\n      this.reducePos,\n      -1\n      /* size == -1 means this is a reused value */\n    ), this.curContext && this.updateContext(this.curContext.tracker.reuse(this.curContext.context, t, this, this.p.stream.reset(this.pos - t.length)));\n  }\n  // Split the stack. Due to the buffer sharing and the fact\n  // that `this.stack` tends to stay quite shallow, this isn't very\n  // expensive.\n  /**\n  @internal\n  */\n  split() {\n    let t = this, e = t.buffer.length;\n    for (; e > 0 && t.buffer[e - 2] > t.reducePos; )\n      e -= 4;\n    let s = t.buffer.slice(e), i = t.bufferBase + e;\n    for (; t && i == t.bufferBase; )\n      t = t.parent;\n    return new Xt(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, s, i, this.curContext, this.lookAhead, t);\n  }\n  // Try to recover from an error by 'deleting' (ignoring) one token.\n  /**\n  @internal\n  */\n  recoverByDelete(t, e) {\n    let s = t <= this.p.parser.maxNode;\n    s && this.storeNode(t, this.pos, e, 4), this.storeNode(0, this.pos, e, s ? 8 : 4), this.pos = this.reducePos = e, this.score -= 190;\n  }\n  /**\n  Check if the given term would be able to be shifted (optionally\n  after some reductions) on this stack. This can be useful for\n  external tokenizers that want to make sure they only provide a\n  given token when it applies.\n  */\n  canShift(t) {\n    for (let e = new Ls(this); ; ) {\n      let s = this.p.parser.stateSlot(\n        e.state,\n        4\n        /* ParseState.DefaultReduce */\n      ) || this.p.parser.hasAction(e.state, t);\n      if (s == 0)\n        return !1;\n      if (!(s & 65536))\n        return !0;\n      e.reduce(s);\n    }\n  }\n  // Apply up to Recover.MaxNext recovery actions that conceptually\n  // inserts some missing token or rule.\n  /**\n  @internal\n  */\n  recoverByInsert(t) {\n    if (this.stack.length >= 300)\n      return [];\n    let e = this.p.parser.nextStates(this.state);\n    if (e.length > 8 || this.stack.length >= 120) {\n      let i = [];\n      for (let n = 0, o; n < e.length; n += 2)\n        (o = e[n + 1]) != this.state && this.p.parser.hasAction(o, t) && i.push(e[n], o);\n      if (this.stack.length < 120)\n        for (let n = 0; i.length < 8 && n < e.length; n += 2) {\n          let o = e[n + 1];\n          i.some((l, a) => a & 1 && l == o) || i.push(e[n], o);\n        }\n      e = i;\n    }\n    let s = [];\n    for (let i = 0; i < e.length && s.length < 4; i += 2) {\n      let n = e[i + 1];\n      if (n == this.state)\n        continue;\n      let o = this.split();\n      o.pushState(n, this.pos), o.storeNode(0, o.pos, o.pos, 4, !0), o.shiftContext(e[i], this.pos), o.reducePos = this.pos, o.score -= 200, s.push(o);\n    }\n    return s;\n  }\n  // Force a reduce, if possible. Return false if that can't\n  // be done.\n  /**\n  @internal\n  */\n  forceReduce() {\n    let { parser: t } = this.p, e = t.stateSlot(\n      this.state,\n      5\n      /* ParseState.ForcedReduce */\n    );\n    if (!(e & 65536))\n      return !1;\n    if (!t.validAction(this.state, e)) {\n      let s = e >> 19, i = e & 65535, n = this.stack.length - s * 3;\n      if (n < 0 || t.getGoto(this.stack[n], i, !1) < 0) {\n        let o = this.findForcedReduction();\n        if (o == null)\n          return !1;\n        e = o;\n      }\n      this.storeNode(0, this.pos, this.pos, 4, !0), this.score -= 100;\n    }\n    return this.reducePos = this.pos, this.reduce(e), !0;\n  }\n  /**\n  Try to scan through the automaton to find some kind of reduction\n  that can be applied. Used when the regular ForcedReduce field\n  isn't a valid action. @internal\n  */\n  findForcedReduction() {\n    let { parser: t } = this.p, e = [], s = (i, n) => {\n      if (!e.includes(i))\n        return e.push(i), t.allActions(i, (o) => {\n          if (!(o & 393216))\n            if (o & 65536) {\n              let l = (o >> 19) - n;\n              if (l > 1) {\n                let a = o & 65535, h = this.stack.length - l * 3;\n                if (h >= 0 && t.getGoto(this.stack[h], a, !1) >= 0)\n                  return l << 19 | 65536 | a;\n              }\n            } else {\n              let l = s(o, n + 1);\n              if (l != null)\n                return l;\n            }\n        });\n    };\n    return s(this.state, 0);\n  }\n  /**\n  @internal\n  */\n  forceAll() {\n    for (; !this.p.parser.stateFlag(\n      this.state,\n      2\n      /* StateFlag.Accepting */\n    ); )\n      if (!this.forceReduce()) {\n        this.storeNode(0, this.pos, this.pos, 4, !0);\n        break;\n      }\n    return this;\n  }\n  /**\n  Check whether this state has no further actions (assumed to be a direct descendant of the\n  top state, since any other states must be able to continue\n  somehow). @internal\n  */\n  get deadEnd() {\n    if (this.stack.length != 3)\n      return !1;\n    let { parser: t } = this.p;\n    return t.data[t.stateSlot(\n      this.state,\n      1\n      /* ParseState.Actions */\n    )] == 65535 && !t.stateSlot(\n      this.state,\n      4\n      /* ParseState.DefaultReduce */\n    );\n  }\n  /**\n  Restart the stack (put it back in its start state). Only safe\n  when this.stack.length == 3 (state is directly below the top\n  state). @internal\n  */\n  restart() {\n    this.storeNode(0, this.pos, this.pos, 4, !0), this.state = this.stack[0], this.stack.length = 0;\n  }\n  /**\n  @internal\n  */\n  sameState(t) {\n    if (this.state != t.state || this.stack.length != t.stack.length)\n      return !1;\n    for (let e = 0; e < this.stack.length; e += 3)\n      if (this.stack[e] != t.stack[e])\n        return !1;\n    return !0;\n  }\n  /**\n  Get the parser used by this stack.\n  */\n  get parser() {\n    return this.p.parser;\n  }\n  /**\n  Test whether a given dialect (by numeric ID, as exported from\n  the terms file) is enabled.\n  */\n  dialectEnabled(t) {\n    return this.p.parser.dialect.flags[t];\n  }\n  shiftContext(t, e) {\n    this.curContext && this.updateContext(this.curContext.tracker.shift(this.curContext.context, t, this, this.p.stream.reset(e)));\n  }\n  reduceContext(t, e) {\n    this.curContext && this.updateContext(this.curContext.tracker.reduce(this.curContext.context, t, this, this.p.stream.reset(e)));\n  }\n  /**\n  @internal\n  */\n  emitContext() {\n    let t = this.buffer.length - 1;\n    (t < 0 || this.buffer[t] != -3) && this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n  }\n  /**\n  @internal\n  */\n  emitLookAhead() {\n    let t = this.buffer.length - 1;\n    (t < 0 || this.buffer[t] != -4) && this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n  }\n  updateContext(t) {\n    if (t != this.curContext.context) {\n      let e = new Ee(this.curContext.tracker, t);\n      e.hash != this.curContext.hash && this.emitContext(), this.curContext = e;\n    }\n  }\n  /**\n  @internal\n  */\n  setLookAhead(t) {\n    t > this.lookAhead && (this.emitLookAhead(), this.lookAhead = t);\n  }\n  /**\n  @internal\n  */\n  close() {\n    this.curContext && this.curContext.tracker.strict && this.emitContext(), this.lookAhead > 0 && this.emitLookAhead();\n  }\n}\nclass Ee {\n  constructor(t, e) {\n    this.tracker = t, this.context = e, this.hash = t.strict ? t.hash(e) : 0;\n  }\n}\nclass Ls {\n  constructor(t) {\n    this.start = t, this.state = t.state, this.stack = t.stack, this.base = this.stack.length;\n  }\n  reduce(t) {\n    let e = t & 65535, s = t >> 19;\n    s == 0 ? (this.stack == this.start.stack && (this.stack = this.stack.slice()), this.stack.push(this.state, 0, 0), this.base += 3) : this.base -= (s - 1) * 3;\n    let i = this.start.p.parser.getGoto(this.stack[this.base - 3], e, !0);\n    this.state = i;\n  }\n}\nclass _t {\n  constructor(t, e, s) {\n    this.stack = t, this.pos = e, this.index = s, this.buffer = t.buffer, this.index == 0 && this.maybeNext();\n  }\n  static create(t, e = t.bufferBase + t.buffer.length) {\n    return new _t(t, e, e - t.bufferBase);\n  }\n  maybeNext() {\n    let t = this.stack.parent;\n    t != null && (this.index = this.stack.bufferBase - t.bufferBase, this.stack = t, this.buffer = t.buffer);\n  }\n  get id() {\n    return this.buffer[this.index - 4];\n  }\n  get start() {\n    return this.buffer[this.index - 3];\n  }\n  get end() {\n    return this.buffer[this.index - 2];\n  }\n  get size() {\n    return this.buffer[this.index - 1];\n  }\n  next() {\n    this.index -= 4, this.pos -= 4, this.index == 0 && this.maybeNext();\n  }\n  fork() {\n    return new _t(this.stack, this.pos, this.index);\n  }\n}\nfunction It(r, t = Uint16Array) {\n  if (typeof r != \"string\")\n    return r;\n  let e = null;\n  for (let s = 0, i = 0; s < r.length; ) {\n    let n = 0;\n    for (; ; ) {\n      let o = r.charCodeAt(s++), l = !1;\n      if (o == 126) {\n        n = 65535;\n        break;\n      }\n      o >= 92 && o--, o >= 34 && o--;\n      let a = o - 32;\n      if (a >= 46 && (a -= 46, l = !0), n += a, l)\n        break;\n      n *= 46;\n    }\n    e ? e[i++] = n : e = new t(n);\n  }\n  return e;\n}\nclass At {\n  constructor() {\n    this.start = -1, this.value = -1, this.end = -1, this.extended = -1, this.lookAhead = 0, this.mask = 0, this.context = 0;\n  }\n}\nconst Ge = new At();\nclass Ms {\n  /**\n  @internal\n  */\n  constructor(t, e) {\n    this.input = t, this.ranges = e, this.chunk = \"\", this.chunkOff = 0, this.chunk2 = \"\", this.chunk2Pos = 0, this.next = -1, this.token = Ge, this.rangeIndex = 0, this.pos = this.chunkPos = e[0].from, this.range = e[0], this.end = e[e.length - 1].to, this.readNext();\n  }\n  /**\n  @internal\n  */\n  resolveOffset(t, e) {\n    let s = this.range, i = this.rangeIndex, n = this.pos + t;\n    for (; n < s.from; ) {\n      if (!i)\n        return null;\n      let o = this.ranges[--i];\n      n -= s.from - o.to, s = o;\n    }\n    for (; e < 0 ? n > s.to : n >= s.to; ) {\n      if (i == this.ranges.length - 1)\n        return null;\n      let o = this.ranges[++i];\n      n += o.from - s.to, s = o;\n    }\n    return n;\n  }\n  /**\n  @internal\n  */\n  clipPos(t) {\n    if (t >= this.range.from && t < this.range.to)\n      return t;\n    for (let e of this.ranges)\n      if (e.to > t)\n        return Math.max(t, e.from);\n    return this.end;\n  }\n  /**\n  Look at a code unit near the stream position. `.peek(0)` equals\n  `.next`, `.peek(-1)` gives you the previous character, and so\n  on.\n  \n  Note that looking around during tokenizing creates dependencies\n  on potentially far-away content, which may reduce the\n  effectiveness incremental parsing—when looking forward—or even\n  cause invalid reparses when looking backward more than 25 code\n  units, since the library does not track lookbehind.\n  */\n  peek(t) {\n    let e = this.chunkOff + t, s, i;\n    if (e >= 0 && e < this.chunk.length)\n      s = this.pos + t, i = this.chunk.charCodeAt(e);\n    else {\n      let n = this.resolveOffset(t, 1);\n      if (n == null)\n        return -1;\n      if (s = n, s >= this.chunk2Pos && s < this.chunk2Pos + this.chunk2.length)\n        i = this.chunk2.charCodeAt(s - this.chunk2Pos);\n      else {\n        let o = this.rangeIndex, l = this.range;\n        for (; l.to <= s; )\n          l = this.ranges[++o];\n        this.chunk2 = this.input.chunk(this.chunk2Pos = s), s + this.chunk2.length > l.to && (this.chunk2 = this.chunk2.slice(0, l.to - s)), i = this.chunk2.charCodeAt(0);\n      }\n    }\n    return s >= this.token.lookAhead && (this.token.lookAhead = s + 1), i;\n  }\n  /**\n  Accept a token. By default, the end of the token is set to the\n  current stream position, but you can pass an offset (relative to\n  the stream position) to change that.\n  */\n  acceptToken(t, e = 0) {\n    let s = e ? this.resolveOffset(e, -1) : this.pos;\n    if (s == null || s < this.token.start)\n      throw new RangeError(\"Token end out of bounds\");\n    this.token.value = t, this.token.end = s;\n  }\n  getChunk() {\n    if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n      let { chunk: t, chunkPos: e } = this;\n      this.chunk = this.chunk2, this.chunkPos = this.chunk2Pos, this.chunk2 = t, this.chunk2Pos = e, this.chunkOff = this.pos - this.chunkPos;\n    } else {\n      this.chunk2 = this.chunk, this.chunk2Pos = this.chunkPos;\n      let t = this.input.chunk(this.pos), e = this.pos + t.length;\n      this.chunk = e > this.range.to ? t.slice(0, this.range.to - this.pos) : t, this.chunkPos = this.pos, this.chunkOff = 0;\n    }\n  }\n  readNext() {\n    return this.chunkOff >= this.chunk.length && (this.getChunk(), this.chunkOff == this.chunk.length) ? this.next = -1 : this.next = this.chunk.charCodeAt(this.chunkOff);\n  }\n  /**\n  Move the stream forward N (defaults to 1) code units. Returns\n  the new value of [`next`](#lr.InputStream.next).\n  */\n  advance(t = 1) {\n    for (this.chunkOff += t; this.pos + t >= this.range.to; ) {\n      if (this.rangeIndex == this.ranges.length - 1)\n        return this.setDone();\n      t -= this.range.to - this.pos, this.range = this.ranges[++this.rangeIndex], this.pos = this.range.from;\n    }\n    return this.pos += t, this.pos >= this.token.lookAhead && (this.token.lookAhead = this.pos + 1), this.readNext();\n  }\n  setDone() {\n    return this.pos = this.chunkPos = this.end, this.range = this.ranges[this.rangeIndex = this.ranges.length - 1], this.chunk = \"\", this.next = -1;\n  }\n  /**\n  @internal\n  */\n  reset(t, e) {\n    if (e ? (this.token = e, e.start = t, e.lookAhead = t + 1, e.value = e.extended = -1) : this.token = Ge, this.pos != t) {\n      if (this.pos = t, t == this.end)\n        return this.setDone(), this;\n      for (; t < this.range.from; )\n        this.range = this.ranges[--this.rangeIndex];\n      for (; t >= this.range.to; )\n        this.range = this.ranges[++this.rangeIndex];\n      t >= this.chunkPos && t < this.chunkPos + this.chunk.length ? this.chunkOff = t - this.chunkPos : (this.chunk = \"\", this.chunkOff = 0), this.readNext();\n    }\n    return this;\n  }\n  /**\n  @internal\n  */\n  read(t, e) {\n    if (t >= this.chunkPos && e <= this.chunkPos + this.chunk.length)\n      return this.chunk.slice(t - this.chunkPos, e - this.chunkPos);\n    if (t >= this.chunk2Pos && e <= this.chunk2Pos + this.chunk2.length)\n      return this.chunk2.slice(t - this.chunk2Pos, e - this.chunk2Pos);\n    if (t >= this.range.from && e <= this.range.to)\n      return this.input.read(t, e);\n    let s = \"\";\n    for (let i of this.ranges) {\n      if (i.from >= e)\n        break;\n      i.to > t && (s += this.input.read(Math.max(i.from, t), Math.min(i.to, e)));\n    }\n    return s;\n  }\n}\nclass dt {\n  constructor(t, e) {\n    this.data = t, this.id = e;\n  }\n  token(t, e) {\n    let { parser: s } = e.p;\n    Hs(this.data, t, e, this.id, s.data, s.tokenPrecTable);\n  }\n}\ndt.prototype.contextual = dt.prototype.fallback = dt.prototype.extend = !1;\ndt.prototype.fallback = dt.prototype.extend = !1;\nclass Js {\n  /**\n  Create a tokenizer. The first argument is the function that,\n  given an input stream, scans for the types of tokens it\n  recognizes at the stream's position, and calls\n  [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n  one.\n  */\n  constructor(t, e = {}) {\n    this.token = t, this.contextual = !!e.contextual, this.fallback = !!e.fallback, this.extend = !!e.extend;\n  }\n}\nfunction Hs(r, t, e, s, i, n) {\n  let o = 0, l = 1 << s, { dialect: a } = e.p.parser;\n  t:\n    for (; l & r[o]; ) {\n      let h = r[o + 1];\n      for (let c = o + 3; c < h; c += 2)\n        if ((r[c + 1] & l) > 0) {\n          let d = r[c];\n          if (a.allows(d) && (t.token.value == -1 || t.token.value == d || ti(d, t.token.value, i, n))) {\n            t.acceptToken(d);\n            break;\n          }\n        }\n      let u = t.next, $ = 0, f = r[o + 2];\n      if (t.next < 0 && f > $ && r[h + f * 3 - 3] == 65535) {\n        o = r[h + f * 3 - 1];\n        continue t;\n      }\n      for (; $ < f; ) {\n        let c = $ + f >> 1, d = h + c + (c << 1), m = r[d], R = r[d + 1] || 65536;\n        if (u < m)\n          f = c;\n        else if (u >= R)\n          $ = c + 1;\n        else {\n          o = r[d + 2], t.advance();\n          continue t;\n        }\n      }\n      break;\n    }\n}\nfunction Ae(r, t, e) {\n  for (let s = t, i; (i = r[s]) != 65535; s++)\n    if (i == e)\n      return s - t;\n  return -1;\n}\nfunction ti(r, t, e, s) {\n  let i = Ae(e, s, t);\n  return i < 0 || Ae(e, s, r) < i;\n}\nconst W = typeof process < \"u\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet re = null;\nfunction Ne(r, t, e) {\n  let s = r.cursor(v.IncludeAnonymous);\n  for (s.moveTo(t); ; )\n    if (!(e < 0 ? s.childBefore(t) : s.childAfter(t)))\n      for (; ; ) {\n        if ((e < 0 ? s.to < t : s.from > t) && !s.type.isError)\n          return e < 0 ? Math.max(0, Math.min(\n            s.to - 1,\n            t - 25\n            /* Safety.Margin */\n          )) : Math.min(r.length, Math.max(\n            s.from + 1,\n            t + 25\n            /* Safety.Margin */\n          ));\n        if (e < 0 ? s.prevSibling() : s.nextSibling())\n          break;\n        if (!s.parent())\n          return e < 0 ? 0 : r.length;\n      }\n}\nclass ei {\n  constructor(t, e) {\n    this.fragments = t, this.nodeSet = e, this.i = 0, this.fragment = null, this.safeFrom = -1, this.safeTo = -1, this.trees = [], this.start = [], this.index = [], this.nextFragment();\n  }\n  nextFragment() {\n    let t = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n    if (t) {\n      for (this.safeFrom = t.openStart ? Ne(t.tree, t.from + t.offset, 1) - t.offset : t.from, this.safeTo = t.openEnd ? Ne(t.tree, t.to + t.offset, -1) - t.offset : t.to; this.trees.length; )\n        this.trees.pop(), this.start.pop(), this.index.pop();\n      this.trees.push(t.tree), this.start.push(-t.offset), this.index.push(0), this.nextStart = this.safeFrom;\n    } else\n      this.nextStart = 1e9;\n  }\n  // `pos` must be >= any previously given `pos` for this cursor\n  nodeAt(t) {\n    if (t < this.nextStart)\n      return null;\n    for (; this.fragment && this.safeTo <= t; )\n      this.nextFragment();\n    if (!this.fragment)\n      return null;\n    for (; ; ) {\n      let e = this.trees.length - 1;\n      if (e < 0)\n        return this.nextFragment(), null;\n      let s = this.trees[e], i = this.index[e];\n      if (i == s.children.length) {\n        this.trees.pop(), this.start.pop(), this.index.pop();\n        continue;\n      }\n      let n = s.children[i], o = this.start[e] + s.positions[i];\n      if (o > t)\n        return this.nextStart = o, null;\n      if (n instanceof V) {\n        if (o == t) {\n          if (o < this.safeFrom)\n            return null;\n          let l = o + n.length;\n          if (l <= this.safeTo) {\n            let a = n.prop(x.lookAhead);\n            if (!a || l + a < this.fragment.to)\n              return n;\n          }\n        }\n        this.index[e]++, o + n.length >= Math.max(this.safeFrom, t) && (this.trees.push(n), this.start.push(o), this.index.push(0));\n      } else\n        this.index[e]++, this.nextStart = o + n.length;\n    }\n  }\n}\nclass si {\n  constructor(t, e) {\n    this.stream = e, this.tokens = [], this.mainToken = null, this.actions = [], this.tokens = t.tokenizers.map((s) => new At());\n  }\n  getActions(t) {\n    let e = 0, s = null, { parser: i } = t.p, { tokenizers: n } = i, o = i.stateSlot(\n      t.state,\n      3\n      /* ParseState.TokenizerMask */\n    ), l = t.curContext ? t.curContext.hash : 0, a = 0;\n    for (let h = 0; h < n.length; h++) {\n      if (!(1 << h & o))\n        continue;\n      let u = n[h], $ = this.tokens[h];\n      if (!(s && !u.fallback) && ((u.contextual || $.start != t.pos || $.mask != o || $.context != l) && (this.updateCachedToken($, u, t), $.mask = o, $.context = l), $.lookAhead > $.end + 25 && (a = Math.max($.lookAhead, a)), $.value != 0)) {\n        let f = e;\n        if ($.extended > -1 && (e = this.addActions(t, $.extended, $.end, e)), e = this.addActions(t, $.value, $.end, e), !u.extend && (s = $, e > f))\n          break;\n      }\n    }\n    for (; this.actions.length > e; )\n      this.actions.pop();\n    return a && t.setLookAhead(a), !s && t.pos == this.stream.end && (s = new At(), s.value = t.p.parser.eofTerm, s.start = s.end = t.pos, e = this.addActions(t, s.value, s.end, e)), this.mainToken = s, this.actions;\n  }\n  getMainToken(t) {\n    if (this.mainToken)\n      return this.mainToken;\n    let e = new At(), { pos: s, p: i } = t;\n    return e.start = s, e.end = Math.min(s + 1, i.stream.end), e.value = s == i.stream.end ? i.parser.eofTerm : 0, e;\n  }\n  updateCachedToken(t, e, s) {\n    let i = this.stream.clipPos(s.pos);\n    if (e.token(this.stream.reset(i, t), s), t.value > -1) {\n      let { parser: n } = s.p;\n      for (let o = 0; o < n.specialized.length; o++)\n        if (n.specialized[o] == t.value) {\n          let l = n.specializers[o](this.stream.read(t.start, t.end), s);\n          if (l >= 0 && s.p.parser.dialect.allows(l >> 1)) {\n            l & 1 ? t.extended = l >> 1 : t.value = l >> 1;\n            break;\n          }\n        }\n    } else\n      t.value = 0, t.end = this.stream.clipPos(i + 1);\n  }\n  putAction(t, e, s, i) {\n    for (let n = 0; n < i; n += 3)\n      if (this.actions[n] == t)\n        return i;\n    return this.actions[i++] = t, this.actions[i++] = e, this.actions[i++] = s, i;\n  }\n  addActions(t, e, s, i) {\n    let { state: n } = t, { parser: o } = t.p, { data: l } = o;\n    for (let a = 0; a < 2; a++)\n      for (let h = o.stateSlot(\n        n,\n        a ? 2 : 1\n        /* ParseState.Actions */\n      ); ; h += 3) {\n        if (l[h] == 65535)\n          if (l[h + 1] == 1)\n            h = L(l, h + 2);\n          else {\n            i == 0 && l[h + 1] == 2 && (i = this.putAction(L(l, h + 2), e, s, i));\n            break;\n          }\n        l[h] == e && (i = this.putAction(L(l, h + 1), e, s, i));\n      }\n    return i;\n  }\n}\nclass ii {\n  constructor(t, e, s, i) {\n    this.parser = t, this.input = e, this.ranges = i, this.recovering = 0, this.nextStackID = 9812, this.minStackPos = 0, this.reused = [], this.stoppedAt = null, this.lastBigReductionStart = -1, this.lastBigReductionSize = 0, this.bigReductionCount = 0, this.stream = new Ms(e, i), this.tokens = new si(t, this.stream), this.topTerm = t.top[1];\n    let { from: n } = i[0];\n    this.stacks = [Xt.start(this, t.top[0], n)], this.fragments = s.length && this.stream.end - n > t.bufferLength * 4 ? new ei(s, t.nodeSet) : null;\n  }\n  get parsedPos() {\n    return this.minStackPos;\n  }\n  // Move the parser forward. This will process all parse stacks at\n  // `this.pos` and try to advance them to a further position. If no\n  // stack for such a position is found, it'll start error-recovery.\n  //\n  // When the parse is finished, this will return a syntax tree. When\n  // not, it returns `null`.\n  advance() {\n    let t = this.stacks, e = this.minStackPos, s = this.stacks = [], i, n;\n    if (this.bigReductionCount > 300 && t.length == 1) {\n      let [o] = t;\n      for (; o.forceReduce() && o.stack.length && o.stack[o.stack.length - 2] >= this.lastBigReductionStart; )\n        ;\n      this.bigReductionCount = this.lastBigReductionSize = 0;\n    }\n    for (let o = 0; o < t.length; o++) {\n      let l = t[o];\n      for (; ; ) {\n        if (this.tokens.mainToken = null, l.pos > e)\n          s.push(l);\n        else {\n          if (this.advanceStack(l, s, t))\n            continue;\n          {\n            i || (i = [], n = []), i.push(l);\n            let a = this.tokens.getMainToken(l);\n            n.push(a.value, a.end);\n          }\n        }\n        break;\n      }\n    }\n    if (!s.length) {\n      let o = i && ni(i);\n      if (o)\n        return W && console.log(\"Finish with \" + this.stackID(o)), this.stackToTree(o);\n      if (this.parser.strict)\n        throw W && i && console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\")), new SyntaxError(\"No parse at \" + e);\n      this.recovering || (this.recovering = 5);\n    }\n    if (this.recovering && i) {\n      let o = this.stoppedAt != null && i[0].pos > this.stoppedAt ? i[0] : this.runRecovery(i, n, s);\n      if (o)\n        return W && console.log(\"Force-finish \" + this.stackID(o)), this.stackToTree(o.forceAll());\n    }\n    if (this.recovering) {\n      let o = this.recovering == 1 ? 1 : this.recovering * 3;\n      if (s.length > o)\n        for (s.sort((l, a) => a.score - l.score); s.length > o; )\n          s.pop();\n      s.some((l) => l.reducePos > e) && this.recovering--;\n    } else if (s.length > 1) {\n      t:\n        for (let o = 0; o < s.length - 1; o++) {\n          let l = s[o];\n          for (let a = o + 1; a < s.length; a++) {\n            let h = s[a];\n            if (l.sameState(h) || l.buffer.length > 500 && h.buffer.length > 500)\n              if ((l.score - h.score || l.buffer.length - h.buffer.length) > 0)\n                s.splice(a--, 1);\n              else {\n                s.splice(o--, 1);\n                continue t;\n              }\n          }\n        }\n      s.length > 12 && s.splice(\n        12,\n        s.length - 12\n        /* Rec.MaxStackCount */\n      );\n    }\n    this.minStackPos = s[0].pos;\n    for (let o = 1; o < s.length; o++)\n      s[o].pos < this.minStackPos && (this.minStackPos = s[o].pos);\n    return null;\n  }\n  stopAt(t) {\n    if (this.stoppedAt != null && this.stoppedAt < t)\n      throw new RangeError(\"Can't move stoppedAt forward\");\n    this.stoppedAt = t;\n  }\n  // Returns an updated version of the given stack, or null if the\n  // stack can't advance normally. When `split` and `stacks` are\n  // given, stacks split off by ambiguous operations will be pushed to\n  // `split`, or added to `stacks` if they move `pos` forward.\n  advanceStack(t, e, s) {\n    let i = t.pos, { parser: n } = this, o = W ? this.stackID(t) + \" -> \" : \"\";\n    if (this.stoppedAt != null && i > this.stoppedAt)\n      return t.forceReduce() ? t : null;\n    if (this.fragments) {\n      let h = t.curContext && t.curContext.tracker.strict, u = h ? t.curContext.hash : 0;\n      for (let $ = this.fragments.nodeAt(i); $; ) {\n        let f = this.parser.nodeSet.types[$.type.id] == $.type ? n.getGoto(t.state, $.type.id) : -1;\n        if (f > -1 && $.length && (!h || ($.prop(x.contextHash) || 0) == u))\n          return t.useNode($, f), W && console.log(o + this.stackID(t) + ` (via reuse of ${n.getName($.type.id)})`), !0;\n        if (!($ instanceof V) || $.children.length == 0 || $.positions[0] > 0)\n          break;\n        let c = $.children[0];\n        if (c instanceof V && $.positions[0] == 0)\n          $ = c;\n        else\n          break;\n      }\n    }\n    let l = n.stateSlot(\n      t.state,\n      4\n      /* ParseState.DefaultReduce */\n    );\n    if (l > 0)\n      return t.reduce(l), W && console.log(o + this.stackID(t) + ` (via always-reduce ${n.getName(\n        l & 65535\n        /* Action.ValueMask */\n      )})`), !0;\n    if (t.stack.length >= 8400)\n      for (; t.stack.length > 6e3 && t.forceReduce(); )\n        ;\n    let a = this.tokens.getActions(t);\n    for (let h = 0; h < a.length; ) {\n      let u = a[h++], $ = a[h++], f = a[h++], c = h == a.length || !s, d = c ? t : t.split(), m = this.tokens.mainToken;\n      if (d.apply(u, $, m ? m.start : d.pos, f), W && console.log(o + this.stackID(d) + ` (via ${u & 65536 ? `reduce of ${n.getName(\n        u & 65535\n        /* Action.ValueMask */\n      )}` : \"shift\"} for ${n.getName($)} @ ${i}${d == t ? \"\" : \", split\"})`), c)\n        return !0;\n      d.pos > i ? e.push(d) : s.push(d);\n    }\n    return !1;\n  }\n  // Advance a given stack forward as far as it will go. Returns the\n  // (possibly updated) stack if it got stuck, or null if it moved\n  // forward and was given to `pushStackDedup`.\n  advanceFully(t, e) {\n    let s = t.pos;\n    for (; ; ) {\n      if (!this.advanceStack(t, null, null))\n        return !1;\n      if (t.pos > s)\n        return Be(t, e), !0;\n    }\n  }\n  runRecovery(t, e, s) {\n    let i = null, n = !1;\n    for (let o = 0; o < t.length; o++) {\n      let l = t[o], a = e[o << 1], h = e[(o << 1) + 1], u = W ? this.stackID(l) + \" -> \" : \"\";\n      if (l.deadEnd && (n || (n = !0, l.restart(), W && console.log(u + this.stackID(l) + \" (restarted)\"), this.advanceFully(l, s))))\n        continue;\n      let $ = l.split(), f = u;\n      for (let c = 0; $.forceReduce() && c < 10 && (W && console.log(f + this.stackID($) + \" (via force-reduce)\"), !this.advanceFully($, s)); c++)\n        W && (f = this.stackID($) + \" -> \");\n      for (let c of l.recoverByInsert(a))\n        W && console.log(u + this.stackID(c) + \" (via recover-insert)\"), this.advanceFully(c, s);\n      this.stream.end > l.pos ? (h == l.pos && (h++, a = 0), l.recoverByDelete(a, h), W && console.log(u + this.stackID(l) + ` (via recover-delete ${this.parser.getName(a)})`), Be(l, s)) : (!i || i.score < l.score) && (i = l);\n    }\n    return i;\n  }\n  // Convert the stack's buffer to a syntax tree.\n  stackToTree(t) {\n    return t.close(), V.build({\n      buffer: _t.create(t),\n      nodeSet: this.parser.nodeSet,\n      topID: this.topTerm,\n      maxBufferLength: this.parser.bufferLength,\n      reused: this.reused,\n      start: this.ranges[0].from,\n      length: t.pos - this.ranges[0].from,\n      minRepeatType: this.parser.minRepeatTerm\n    });\n  }\n  stackID(t) {\n    let e = (re || (re = /* @__PURE__ */ new WeakMap())).get(t);\n    return e || re.set(t, e = String.fromCodePoint(this.nextStackID++)), e + t;\n  }\n}\nfunction Be(r, t) {\n  for (let e = 0; e < t.length; e++) {\n    let s = t[e];\n    if (s.pos == r.pos && s.sameState(r)) {\n      t[e].score < r.score && (t[e] = r);\n      return;\n    }\n  }\n  t.push(r);\n}\nclass ri {\n  constructor(t, e, s) {\n    this.source = t, this.flags = e, this.disabled = s;\n  }\n  allows(t) {\n    return !this.disabled || this.disabled[t] == 0;\n  }\n}\nclass Yt extends ys {\n  /**\n  @internal\n  */\n  constructor(t) {\n    if (super(), this.wrappers = [], t.version != 14)\n      throw new RangeError(`Parser version (${t.version}) doesn't match runtime version (14)`);\n    let e = t.nodeNames.split(\" \");\n    this.minRepeatTerm = e.length;\n    for (let l = 0; l < t.repeatNodeCount; l++)\n      e.push(\"\");\n    let s = Object.keys(t.topRules).map((l) => t.topRules[l][1]), i = [];\n    for (let l = 0; l < e.length; l++)\n      i.push([]);\n    function n(l, a, h) {\n      i[l].push([a, a.deserialize(String(h))]);\n    }\n    if (t.nodeProps)\n      for (let l of t.nodeProps) {\n        let a = l[0];\n        typeof a == \"string\" && (a = x[a]);\n        for (let h = 1; h < l.length; ) {\n          let u = l[h++];\n          if (u >= 0)\n            n(u, a, l[h++]);\n          else {\n            let $ = l[h + -u];\n            for (let f = -u; f > 0; f--)\n              n(l[h++], a, $);\n            h++;\n          }\n        }\n      }\n    this.nodeSet = new Fe(e.map((l, a) => P.define({\n      name: a >= this.minRepeatTerm ? void 0 : l,\n      id: a,\n      props: i[a],\n      top: s.indexOf(a) > -1,\n      error: a == 0,\n      skipped: t.skippedNodes && t.skippedNodes.indexOf(a) > -1\n    }))), t.propSources && (this.nodeSet = this.nodeSet.extend(...t.propSources)), this.strict = !1, this.bufferLength = Ss;\n    let o = It(t.tokenData);\n    this.context = t.context, this.specializerSpecs = t.specialized || [], this.specialized = new Uint16Array(this.specializerSpecs.length);\n    for (let l = 0; l < this.specializerSpecs.length; l++)\n      this.specialized[l] = this.specializerSpecs[l].term;\n    this.specializers = this.specializerSpecs.map(Xe), this.states = It(t.states, Uint32Array), this.data = It(t.stateData), this.goto = It(t.goto), this.maxTerm = t.maxTerm, this.tokenizers = t.tokenizers.map((l) => typeof l == \"number\" ? new dt(o, l) : l), this.topRules = t.topRules, this.dialects = t.dialects || {}, this.dynamicPrecedences = t.dynamicPrecedences || null, this.tokenPrecTable = t.tokenPrec, this.termNames = t.termNames || null, this.maxNode = this.nodeSet.types.length - 1, this.dialect = this.parseDialect(), this.top = this.topRules[Object.keys(this.topRules)[0]];\n  }\n  createParse(t, e, s) {\n    let i = new ii(this, t, e, s);\n    for (let n of this.wrappers)\n      i = n(i, t, e, s);\n    return i;\n  }\n  /**\n  Get a goto table entry @internal\n  */\n  getGoto(t, e, s = !1) {\n    let i = this.goto;\n    if (e >= i[0])\n      return -1;\n    for (let n = i[e + 1]; ; ) {\n      let o = i[n++], l = o & 1, a = i[n++];\n      if (l && s)\n        return a;\n      for (let h = n + (o >> 1); n < h; n++)\n        if (i[n] == t)\n          return a;\n      if (l)\n        return -1;\n    }\n  }\n  /**\n  Check if this state has an action for a given terminal @internal\n  */\n  hasAction(t, e) {\n    let s = this.data;\n    for (let i = 0; i < 2; i++)\n      for (let n = this.stateSlot(\n        t,\n        i ? 2 : 1\n        /* ParseState.Actions */\n      ), o; ; n += 3) {\n        if ((o = s[n]) == 65535)\n          if (s[n + 1] == 1)\n            o = s[n = L(s, n + 2)];\n          else {\n            if (s[n + 1] == 2)\n              return L(s, n + 2);\n            break;\n          }\n        if (o == e || o == 0)\n          return L(s, n + 1);\n      }\n    return 0;\n  }\n  /**\n  @internal\n  */\n  stateSlot(t, e) {\n    return this.states[t * 6 + e];\n  }\n  /**\n  @internal\n  */\n  stateFlag(t, e) {\n    return (this.stateSlot(\n      t,\n      0\n      /* ParseState.Flags */\n    ) & e) > 0;\n  }\n  /**\n  @internal\n  */\n  validAction(t, e) {\n    return !!this.allActions(t, (s) => s == e ? !0 : null);\n  }\n  /**\n  @internal\n  */\n  allActions(t, e) {\n    let s = this.stateSlot(\n      t,\n      4\n      /* ParseState.DefaultReduce */\n    ), i = s ? e(s) : void 0;\n    for (let n = this.stateSlot(\n      t,\n      1\n      /* ParseState.Actions */\n    ); i == null; n += 3) {\n      if (this.data[n] == 65535)\n        if (this.data[n + 1] == 1)\n          n = L(this.data, n + 2);\n        else\n          break;\n      i = e(L(this.data, n + 1));\n    }\n    return i;\n  }\n  /**\n  Get the states that can follow this one through shift actions or\n  goto jumps. @internal\n  */\n  nextStates(t) {\n    let e = [];\n    for (let s = this.stateSlot(\n      t,\n      1\n      /* ParseState.Actions */\n    ); ; s += 3) {\n      if (this.data[s] == 65535)\n        if (this.data[s + 1] == 1)\n          s = L(this.data, s + 2);\n        else\n          break;\n      if (!(this.data[s + 2] & 1)) {\n        let i = this.data[s + 1];\n        e.some((n, o) => o & 1 && n == i) || e.push(this.data[s], i);\n      }\n    }\n    return e;\n  }\n  /**\n  Configure the parser. Returns a new parser instance that has the\n  given settings modified. Settings not provided in `config` are\n  kept from the original parser.\n  */\n  configure(t) {\n    let e = Object.assign(Object.create(Yt.prototype), this);\n    if (t.props && (e.nodeSet = this.nodeSet.extend(...t.props)), t.top) {\n      let s = this.topRules[t.top];\n      if (!s)\n        throw new RangeError(`Invalid top rule name ${t.top}`);\n      e.top = s;\n    }\n    return t.tokenizers && (e.tokenizers = this.tokenizers.map((s) => {\n      let i = t.tokenizers.find((n) => n.from == s);\n      return i ? i.to : s;\n    })), t.specializers && (e.specializers = this.specializers.slice(), e.specializerSpecs = this.specializerSpecs.map((s, i) => {\n      let n = t.specializers.find((l) => l.from == s.external);\n      if (!n)\n        return s;\n      let o = Object.assign(Object.assign({}, s), { external: n.to });\n      return e.specializers[i] = Xe(o), o;\n    })), t.contextTracker && (e.context = t.contextTracker), t.dialect && (e.dialect = this.parseDialect(t.dialect)), t.strict != null && (e.strict = t.strict), t.wrap && (e.wrappers = e.wrappers.concat(t.wrap)), t.bufferLength != null && (e.bufferLength = t.bufferLength), e;\n  }\n  /**\n  Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n  are registered for this parser.\n  */\n  hasWrappers() {\n    return this.wrappers.length > 0;\n  }\n  /**\n  Returns the name associated with a given term. This will only\n  work for all terms when the parser was generated with the\n  `--names` option. By default, only the names of tagged terms are\n  stored.\n  */\n  getName(t) {\n    return this.termNames ? this.termNames[t] : String(t <= this.maxNode && this.nodeSet.types[t].name || t);\n  }\n  /**\n  The eof term id is always allocated directly after the node\n  types. @internal\n  */\n  get eofTerm() {\n    return this.maxNode + 1;\n  }\n  /**\n  The type of top node produced by the parser.\n  */\n  get topNode() {\n    return this.nodeSet.types[this.top[1]];\n  }\n  /**\n  @internal\n  */\n  dynamicPrecedence(t) {\n    let e = this.dynamicPrecedences;\n    return e == null ? 0 : e[t] || 0;\n  }\n  /**\n  @internal\n  */\n  parseDialect(t) {\n    let e = Object.keys(this.dialects), s = e.map(() => !1);\n    if (t)\n      for (let n of t.split(\" \")) {\n        let o = e.indexOf(n);\n        o >= 0 && (s[o] = !0);\n      }\n    let i = null;\n    for (let n = 0; n < e.length; n++)\n      if (!s[n])\n        for (let o = this.dialects[e[n]], l; (l = this.data[o++]) != 65535; )\n          (i || (i = new Uint8Array(this.maxTerm + 1)))[l] = 1;\n    return new ri(t, s, i);\n  }\n  /**\n  Used by the output of the parser generator. Not available to\n  user code. @hide\n  */\n  static deserialize(t) {\n    return new Yt(t);\n  }\n}\nfunction L(r, t) {\n  return r[t] | r[t + 1] << 16;\n}\nfunction ni(r) {\n  let t = null;\n  for (let e of r) {\n    let s = e.p.stoppedAt;\n    (e.pos == e.p.stream.end || s != null && e.pos > s) && e.p.parser.stateFlag(\n      e.state,\n      2\n      /* StateFlag.Accepting */\n    ) && (!t || t.score < e.score) && (t = e);\n  }\n  return t;\n}\nfunction Xe(r) {\n  if (r.external) {\n    let t = r.extend ? 1 : 0;\n    return (e, s) => r.external(e, s) << 1 | t;\n  }\n  return r.get;\n}\nconst ws = 1, Ts = 2, Ie = 4, oi = 7, te = 8, li = 9, ai = 10, hi = 11, ze = 12, Fs = 14, ui = 16, $i = 17, zt = \"'\", Dt = 0, _e = 1, Ye = 2;\nfunction fi(r, t, e, s = Dt, i) {\n  let n = s;\n  const o = [];\n  let l;\n  t:\n    for (; (l = r.next) !== -1; ) {\n      const a = Se(l);\n      if (i != null && i.has(a))\n        break t;\n      switch (n) {\n        case Dt:\n          if (a === zt)\n            n = Ye;\n          else if (e.has(a))\n            break t;\n          o.push(a);\n          break;\n        case Ye:\n          t.has(a) ? n = _e : n = Dt, o.push(a);\n          break;\n        case _e:\n          a === zt && (Se(r.peek(1)) === zt ? (r.advance(), o.push(zt)) : n = Dt), o.push(a);\n          break;\n      }\n      r.advance();\n    }\n  return o.join(\"\");\n}\nfunction ci(r, t, e, s) {\n  const i = r.pos;\n  fi(r, t, e), i < r.pos && r.acceptToken(s);\n}\nfunction Rs(r) {\n  const t = /* @__PURE__ */ new Set([\"{\", \"}\"]);\n  return r && t.add(\"#\"), t;\n}\nfunction Vs(r) {\n  const t = /* @__PURE__ */ new Set([\"{\"]);\n  return r && (t.add(\"#\"), t.add(\"}\")), t;\n}\nfunction vs({ input: r, escapable: t, ending: e, textToken: s }) {\n  return ci(r, t, e, s);\n}\nconst pi = new Js((r) => vs({\n  input: r,\n  escapable: Rs(!1),\n  ending: Vs(!1),\n  textToken: ws\n})), di = new Js((r) => vs({\n  input: r,\n  escapable: Rs(!0),\n  ending: Vs(!0),\n  textToken: Ts\n})), Ft = Yt.deserialize({\n  version: 14,\n  states: \"/SQQOTOOQ]OUOOOOOO'#Ca'#CaOOOR'#Cm'#CmOhOSO'#C`OpOTO'#CtQOOOOOO!OOUO'#C}OOOO'#Cd'#CdO!aOSO'#CcOkOSO'#CcO!lOSO,58zOOOO,59`,59`OOOO,59i,59iO!qOWO,58}O!|OSO,58}O#UOSO,58}OOOR'#Co'#CoOOOR1G.f1G.fOOOO'#Ce'#CeO#aOSO1G.iO!tOWO1G.iOOOO'#Ch'#ChO#lOSO1G.mO#tOWO1G.iO$POSO1G.iO$XO`O7+$TO$aOSO7+$TO$iOSO7+$TO$tOSO7+$XO$|OpO7+$XO$wOSO7+$XO!tOWO7+$TO%XOWO7+$TOOOO'#Cf'#CfOOOO'#Cq'#CqO$[O`O'#CqO%dO`O<<GoO$XO`O<<GoO%oOSO<<GoO%wOpO<<GsO&SOSO<<GsOOOO'#Ci'#CiOOOO'#Ck'#CkO&XOSO'#CjOOOO'#Cr'#CrO%POpO<<GsO&aOpO<<GsO&lOpO<<GsO&tOSO<<GoO'POSO<<GsO!tOWO<<GoOOOO,59],59]O'XO`OAN=ZOOOO-E6o-E6oO'aO`OAN=ZO$XO`OAN=ZO%POpOAN=_O'lOpOAN=_O&lOpOAN=_O'wOpOAN=_O(SOUO,59UO(bOSO,59UOOOO,59^,59^O'oOpOAN=_OOOO-E6p-E6pO%SOpO'#CrO(gOSOAN=ZO(oOSOAN=_O(tOSOAN=ZO)POSOAN=_O)XO`OG22uO)aO`OG22uO&lOpOG22yO)lOpOG22yO)tOpOG22yO%POpOG22yOOOO'#Cl'#ClO*POSO1G.pO(SOUO1G.pO$XO`OG22uO*UOpOG22yO*aOSOG22uO*iOSOG22yO*nO`OLD(aO*vOpOLD(eO*yOpOLD(eO&lOpOLD(eOOOO7+$[7+$[O+ROSO7+$[O+WO`OLD(aO%POpOLD(eO$XO`OLD(aO+cOpOLD(eO+nOpO!$'LPO+vOpO!$'LPOOOO<<Gv<<GvO,RO`O!$'K{O&lOpO!$'LPO,ZO`O!$'K{O%POpO!$'LPO,fOpO!)9AkO,nOpO!)9AkO,yO`O!)9AgO&lOpO!)9AkO-ROpO!.K7VO-ZOpO!.K7VO-fOpO!4/,q\",\n  stateData: \"-q~OPTOUQOrRO~OQVOUQOrRO~OiYOjWO~OPTOUQOrROghX~OQVOUQOrROgqXbqX~Oi_Ok^ObVX~ObaO~OieOlcOnfO~OkhObVa~OiiOkhObVa~OikOkjObVi~OioOknO~OipOlcOnfO~OkqObVi~OitOmrO~OkvObVq~OiwOkvObVq~OiyOkxO~Oi!OOozOp{O~Oi!TOlcOnfO~Oi!VOmrObVy~Ok!YObVy~Oi!ZOozOp{O~Ok!^O~OU!_Oi!`O~Oi!bOp{ObZy~Oi!dOp{O~Oi!eOk!YObVy~Oi!fOk!^O~OmrObV!R~Oi!iOmrObV!R~Oi!lOp{ObZ!R~Oi!nOozOp{O~OQVOUQOrROb`P~OU!qO~Ok!rObV!R~Ok!sO~Oi!tOk!rObV!R~Oi!uOk!sO~OmrObV!Z~Oi!vOmrObV!Z~Op{ObZ!Z~Oi!xOp{ObZ!Z~Ob!zO~Oi!}OozOp{O~Ok#OObV!Z~Ok#PO~OmrObV!c~Oi#QOp{ObZ!c~Ob#SO~Oi#TOmrObV!c~Oi#WOozOp{O~Op{ObZ!k~Oi#XOp{ObZ!k~OmrObV!k~Oi#ZOmrObV!k~Op{ObZ!s~Oi#]Op{ObZ!s~OmrObV!s~Op{ObZ!{~Oi#_Op{ObZ!{~Op{ObZ#T~Oop~\",\n  goto: \"'TrPPPPs}P!V!Y!`!n!V#S#b#x$m%`sP%fP%i&PP&sPPPPPPPP&ySTOTXVPV!_!q]SOPTV!_!qRZSQXSR`YQd^SlehS!RpqR!g!Tdsjuv!X!Y!j!r!|#O#V]!Ut!V!i!v#T#ZQg^SmehS!SpqR!h!TQ!QnS!]x!OS!k!Z!^S!y!n!sS#U!}#PR#[#Wt}nx!P!Q![!]!^!k!m!s!w!y#P#R#U#Y#[#^k!a!O!Z!b!d!l!n!x!}#Q#W#X#]#_!a|nx!O!P!Q!Z![!]!^!b!d!k!l!m!n!s!w!x!y!}#P#Q#R#U#W#X#Y#[#]#^#_Q!p!_R!{!qRbZQujY!Wu!X!j!|#VQ!XvQ!j!YQ!|!rR#V#OQ!PnS![x!Q^!c!P![!m!w#R#Y#^S!m!]!^S!w!k!sS#R!y#PQ#Y#UR#^#[QUOR[TQUPQ]VT!o!_!q\",\n  nodeNames: \"⚠ Text TextNested Root Expression ExpressionOpen { FormatExpression Param FormatFunction FormatStyle SelectExpression SelectFunction Offset SelectVariant VariantDescriptor VariantContent PluralPlaceholder } ExpressionClose Nested\",\n  maxTerm: 34,\n  skippedNodes: [0],\n  repeatNodeCount: 2,\n  tokenData: \"$Mn~R#POX'UX^,z^p'Upq,zqs+jst-ot{+j{|.u|}7o}!O.u!O!Q+j!Q!['U![!_+j!_!`7t!`!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#W'U#W#X<[#X#b'U#b#cNa#c#d!7X#d#e#(`#e#g'U#g#h#Ck#h#i$C]#i#o'U#o#p$Lc#p#q+j#q#r$Mi#r#s+j#s#y'U#y#z,z#z$f'U$f$g,z$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BY#BZ,z#BZ$IS'U$IS$I_,z$I_$Id'U$Id$I|+j$I|$JO,z$JO$JT'U$JT$JU,z$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KV$KW,z$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FU&FV,z&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]'_!cmSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'US+o_mSOX+j^p+jq|+j}#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+jS,qP;=`<%l+j],wP;=`<%l'U~-PYi~X^,zpq,z#y#z,z$f$g,z#BY#BZ,z$IS$I_,z$I|$JO,z$JT$JU,z$KV$KW,z&FU&FV,zT-v_mSrPOX+j^p+jq|+j}#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j[.z!cmSOX3V^p3Vq|+j}!Q+j!Q![3V![!c+j!c!}3V!}#R+j#R#S3V#S#T+j#T#o3V#o#q+j#r#s+j#s#y3V#z$f3V$g$n+j$n$o3V$o$p+j$p$q3V$q$s+j$s$t3V$t$u+j$u$v3V$v$x+j$x$|3V$|$}+j$}%R3V%R%S+j%S%V3V%V%W+j%W%o3V%o%p+j%p&a3V&a&b+j&b#BY3V#BZ$IS3V$I_$Id3V$Id$I|+j$JO$JT3V$JU$Je+j$Je$Jg3V$Jg$Jz+j$Jz$J{3V$J{$KV+j$KW%#t3V%#t%3d+j%3d%6z3V%6z%Dl+j%Dl%E[3V%E[&/x+j&/x&;O3V&;O&=t+j&=t&FU3V&FV&FY+j&FY&F^3V&F^&Fw+j&Fw&GW3V&GW&GX+j&GX;'S3V;'S;=`7i<%l?>`3V?>`?>b+j?>b?DR3V?DR?DT+j?DTO3V[3^!cmSpWOX3V^p3Vq|+j}!Q+j!Q![3V![!c+j!c!}3V!}#R+j#R#S3V#S#T+j#T#o3V#o#q+j#r#s+j#s#y3V#z$f3V$g$n+j$n$o3V$o$p+j$p$q3V$q$s+j$s$t3V$t$u+j$u$v3V$v$x+j$x$|3V$|$}+j$}%R3V%R%S+j%S%V3V%V%W+j%W%o3V%o%p+j%p&a3V&a&b+j&b#BY3V#BZ$IS3V$I_$Id3V$Id$I|+j$JO$JT3V$JU$Je+j$Je$Jg3V$Jg$Jz+j$Jz$J{3V$J{$KV+j$KW%#t3V%#t%3d+j%3d%6z3V%6z%Dl+j%Dl%E[3V%E[&/x+j&/x&;O3V&;O&=t+j&=t&FU3V&FV&FY+j&FY&F^3V&F^&Fw+j&Fw&GW3V&GW&GX+j&GX;'S3V;'S;=`7i<%l?>`3V?>`?>b+j?>b?DR3V?DR?DT+j?DTO3V[7lP;=`<%l3V~7tOk~[7y!emSOX3V^p3Vq{+j{|.u}!O.u!O!Q+j!Q![3V![!c+j!c!}3V!}#R+j#R#S3V#S#T+j#T#o3V#o#q+j#r#s+j#s#y3V#z$f3V$g$n+j$n$o3V$o$p+j$p$q3V$q$s+j$s$t3V$t$u+j$u$v3V$v$x+j$x$|3V$|$}+j$}%R3V%R%S+j%S%V3V%V%W+j%W%o3V%o%p+j%p&a3V&a&b+j&b#BY3V#BZ$IS3V$I_$Id3V$Id$I|+j$JO$JT3V$JU$Je+j$Je$Jg3V$Jg$Jz+j$Jz$J{3V$J{$KV+j$KW%#t3V%#t%3d+j%3d%6z3V%6z%Dl+j%Dl%E[3V%E[&/x+j&/x&;O3V&;O&=t+j&=t&FU3V&FV&FY+j&FY&F^3V&F^&Fw+j&Fw&GW3V&GW&GX+j&GX;'S3V;'S;=`7i<%l?>`3V?>`?>b+j?>b?DR3V?DR?DT+j?DTO3V_<e!dmSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#U@s#U#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_@|!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#h'U#h#iE_#i#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_Eh!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#YIy#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_JU!clQmSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_Nj!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#i'U#i#j!${#j#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_!%U!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#a'U#a#b!)g#b#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_!)p!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#U'U#U#V!.R#V#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_!.[!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#Y!2m#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_!2v!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#f'U#f#gIy#g#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!7b!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#Y'U#Y#Z!;s#Z#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!;|!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#Y'U#Y#Z!@_#Z#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!@h!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#g'U#g#h!Dy#h#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!ES!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#Y!Ie#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!In!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#h'U#h#i!NP#i#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U]!NY!dmSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!]#$h!]!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U[#$mcmSOX+j^p+jq{+j{|#%x}!O#%x!O!Q+j!Q![#'S![#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j[#%}amSOX+j^p+jq|+j}!Q+j!Q![#'S![#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j[#'ZamSoWOX+j^p+jq|+j}!Q+j!Q![#'S![#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j_#(i!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#`'U#`#a#,z#a#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#-T!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#i'U#i#j#1f#j#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#1o!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#f'U#f#g#6Q#g#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#6Z!dmSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#U#:i#U#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#:r!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#`'U#`#a#?T#a#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#?`!cmSjPnQpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#Ct!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#Y#HV#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#H`!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#`'U#`#a#Lq#a#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_#Lz!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#X'U#X#Y$#]#Y#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$#f!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#V'U#V#W$'w#W#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$(Q!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#h'U#h#i$,c#i#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$,n!emSjPnQpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#c'U#c#d$1P#d#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$1Y!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#f'U#f#g$5k#g#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$5t!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#W'U#W#X$:V#X#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$:`!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#]'U#]#^$>q#^#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$>z!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#b'U#b#c#6Q#c#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$Cf!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#]'U#]#^$Gw#^#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'U_$HQ!emSjPpWOX'U^p'Uq|+j}!Q+j!Q!['U![!c+j!c!}'U!}#R+j#R#S'U#S#T+j#T#a'U#a#bE_#b#o'U#o#q+j#r#s+j#s#y'U#z$f'U$g$n+j$n$o'U$o$p+j$p$q'U$q$s+j$s$t'U$t$u+j$u$v'U$v$x+j$x$|'U$|$}+j$}%R'U%R%S+j%S%V'U%V%W+j%W%o'U%o%p+j%p&a'U&a&b+j&b#BY'U#BZ$IS'U$I_$Id'U$Id$I|+j$JO$JT'U$JU$Je+j$Je$Jg'U$Jg$Jz+j$Jz$J{'U$J{$KV+j$KW%#t'U%#t%3d+j%3d%6z'U%6z%Dl+j%Dl%E['U%E[&/x+j&/x&;O'U&;O&=t+j&=t&FU'U&FV&FY+j&FY&F^'U&F^&Fw+j&Fw&GW'U&GW&GX+j&GX;'S'U;'S;=`,t<%l?>`'U?>`?>b+j?>b?DR'U?DR?DT+j?DTO'UT$Lj_UPmSOX+j^p+jq|+j}#q+j#r#y+j#z$f+j$g#BY+j#BZ$IS+j$I_$I|+j$JO$JT+j$JU$KV+j$KW&FU+j&FV;'S+j;'S;=`,n<%lO+j~$MnOb~\",\n  tokenizers: [pi, di, 0, 1, 2, 3],\n  topRules: { Root: [0, 3], Nested: [1, 20] },\n  tokenPrec: 582\n}), Ui = (r) => {\n  const t = [...r].map((i) => i.charCodeAt(0));\n  let e = 0;\n  return {\n    get next() {\n      return t[e] ?? -1;\n    },\n    get pos() {\n      return e;\n    },\n    peek(i) {\n      return t[e + i] ?? -1;\n    },\n    advance(i = 1) {\n      e += i;\n    }\n  };\n};\nfunction gt(r) {\n  return r === 45 || r === 46 || r >= 48 && r <= 57 || r === 95 || r >= 97 && r <= 122 || r >= 65 && r <= 90 || r == 183 || r >= 192 && r <= 214 || r >= 216 && r <= 246 || r >= 248 && r <= 893 || r >= 895 && r <= 8191 || r >= 8204 && r <= 8205 || r >= 8255 && r <= 8256 || r >= 8304 && r <= 8591 || r >= 11264 && r <= 12271 || r >= 12289 && r <= 55295 || r >= 63744 && r <= 64975 || r >= 65008 && r <= 65533 || r >= 65536 && r <= 983039;\n}\nfunction Pt(r) {\n  return r >= 9 && r <= 13 || r === 32 || r === 133 || r >= 8206 && r <= 8207 || r === 8232 || r === 8233;\n}\nconst Qe = 0, Ke = 1, ne = 2, ot = 4, Ot = 5, oe = 6, le = 7, Ze = 8, ae = 9, Le = 10;\nfunction ji(r) {\n  let t = Qe, e = \"open\", s = \"\", i = \"\", n = \"\", o = \"'\", l;\n  const a = { start: 0, end: 0 }, h = {};\n  t:\n    for (; (l = r.next) !== -1; ) {\n      const u = Se(l);\n      switch (t) {\n        case Qe:\n          u === \"<\" && (t = Ke, a.start = r.pos);\n          break;\n        case Ke:\n          if (u === \"/\")\n            e = \"close\", t = ne;\n          else if (gt(l))\n            s += u, t = ne;\n          else\n            break t;\n          break;\n        case ne:\n          if (u === \">\") {\n            if (s === \"\")\n              break t;\n            t = ot;\n          } else if (u === \"/\") {\n            if (s === \"\")\n              break t;\n            e = \"self-closed\", t = Ot;\n          } else if (Pt(l)) {\n            if (s === \"\")\n              break t;\n            t = oe;\n          } else if (gt(l))\n            s += u;\n          else\n            break t;\n          break;\n        case oe:\n          gt(l) ? (i += u, t = le) : u === \"/\" ? (e = \"self-closed\", t = Ot) : u === \">\" && (t = ot);\n          break;\n        case le:\n          if (gt(l))\n            i += u;\n          else if (u === \">\" || u === \"/\" || u === \"=\" || Pt(l))\n            h[i] = !0, u === \">\" ? t = ot : u === \"/\" ? t = Ot : u === \"=\" ? t = ae : t = Ze;\n          else\n            break t;\n          break;\n        case Ze:\n          if (u === \">\")\n            t = ot;\n          else if (u === \"/\")\n            t = Ot;\n          else if (u === \"=\")\n            t = ae;\n          else if (gt(l))\n            t = le, i = u;\n          else if (!Pt(l))\n            break t;\n          break;\n        case ae:\n          if (u === \"'\" || u === '\"')\n            t = Le, o = u;\n          else if (!Pt(l))\n            break t;\n          break;\n        case Le:\n          u === o ? (h[i] = `${o}${n}${o}`, i = \"\", n = \"\", t = oe) : n += u;\n          break;\n        case Ot: {\n          if (u === \">\")\n            t = ot;\n          else\n            break t;\n          break;\n        }\n        case ot:\n          break t;\n      }\n      r.advance();\n    }\n  return t === ot && s ? (a.end = r.pos, {\n    isTag: !0,\n    type: e,\n    name: s,\n    params: h,\n    position: a\n  }) : null;\n}\nconst gi = (r) => {\n  const t = Ui(r), e = [];\n  for (; t.next !== -1; ) {\n    const s = ji(t);\n    s && e.push(s);\n  }\n  return e;\n};\nfunction Oi(r) {\n  const t = [];\n  let e = r.firstChild;\n  for (; e; )\n    t.push(e), e = e.nextSibling;\n  return t;\n}\nconst mi = (r, t) => {\n  let e;\n  try {\n    e = Ft.configure({\n      strict: !0,\n      top: t ? \"Nested\" : \"Root\"\n    }).parse(r);\n  } catch {\n    return null;\n  }\n  const s = [], i = /* @__PURE__ */ new Map();\n  function n(f) {\n    return r.substring(f.from, f.to);\n  }\n  function o(f) {\n    const c = f.parent;\n    let d = \"\", m;\n    const R = [];\n    Oi(f).forEach((z) => {\n      const J = n(z);\n      switch (z.type.id) {\n        case te:\n          d = J;\n          break;\n        case li:\n          m = J;\n          break;\n        case ai:\n          R.push(J);\n          break;\n      }\n    });\n    const I = [\"{\", d];\n    return m && (I.push(\", \"), I.push(m)), R.length && I.push(`, ${R.join(\" \")}`), I.push(\"}\"), {\n      position: { start: c.from, end: c.to },\n      type: \"variable\",\n      name: d,\n      normalizedValue: I.join(\"\")\n    };\n  }\n  function l(f) {\n    let c = \"<\";\n    return f.type === \"close\" && (c += \"/\"), c += f.name, Object.entries(f.params).forEach(([d, m]) => {\n      c += ` ${d}`, m !== !0 && (c += `=${m}`);\n    }), f.type === \"self-closed\" ? c += \" />\" : c += \">\", c;\n  }\n  function a(f) {\n    return {\n      position: f.position,\n      type: f.type === \"open\" ? \"tagOpen\" : f.type === \"close\" ? \"tagClose\" : \"tagSelfClosed\",\n      name: f.name,\n      normalizedValue: l(f)\n    };\n  }\n  function h(f) {\n    if (!r.substring(\n      f.position.start,\n      f.position.end\n    ).includes(`\n`)) {\n      if (f.type === \"tagOpen\") {\n        const d = i.get(f.name) ?? [];\n        d.push(f), i.set(f.name, d);\n      } else if (f.type === \"tagClose\") {\n        const d = i.get(f.name);\n        d ? (d.pop(), d.length === 0 && i.delete(f.name)) : f.error = \"missing_open_tag\";\n      }\n      s.push(f);\n    }\n  }\n  const u = e.cursor();\n  let $;\n  do {\n    const f = u.node;\n    switch ($ = !0, f.type.id) {\n      case $i:\n        h({\n          name: \"#\",\n          type: \"hash\",\n          position: { start: u.from, end: u.to },\n          normalizedValue: \"#\"\n        }), $ = !1;\n        break;\n      case Ie: {\n        const c = f.firstChild.nextSibling;\n        (c == null ? void 0 : c.type.id) === oi && h(o(c)), $ = !1;\n        break;\n      }\n      case ws:\n      case Ts: {\n        gi(n(f)).forEach((c) => h(\n          a({\n            ...c,\n            position: {\n              start: c.position.start + f.from,\n              end: c.position.end + f.from\n            }\n          })\n        )), $ = !1;\n        break;\n      }\n    }\n  } while (u.next($));\n  return i.forEach(\n    (f) => f.forEach((c) => {\n      c.error = \"missing_close_tag\";\n    })\n  ), s;\n};\nclass Si extends As {\n  constructor(t, e) {\n    super(), this.value = t, this.examplePluralNum = e;\n  }\n  toDOM() {\n    const t = document.createElement(\"span\");\n    let e = `placeholder-widget placeholder-${this.value.type}`;\n    this.value.error && (e = e + ` placeholder-error placeholder-error-${this.value.error}`), t.className = e;\n    const s = document.createElement(\"span\");\n    return s.textContent = this.value.type !== \"hash\" ? this.value.name : `#${this.examplePluralNum ?? \"\"}`, t.appendChild(s), t;\n  }\n}\nfunction Me(r, t, e) {\n  const s = mi(r, e);\n  return s === null ? null : s.filter((i) => {\n    if (t) {\n      const [n] = t;\n      if (n > i.position.start && n < i.position.end)\n        return !1;\n    }\n    return !0;\n  });\n}\nfunction He(r, t) {\n  const e = new Te();\n  return r.forEach((s) => {\n    e.add(\n      s.position.start,\n      s.position.end,\n      K.widget({\n        widget: new Si(s, t),\n        side: 1\n      })\n    );\n  }), e.finish();\n}\nfunction bi(r, t) {\n  return t.find((e) => e.name === r.name && e.type === e.type);\n}\nfunction xi(r, t) {\n  return t.find(\n    (e) => e.name === r.name && e.type === r.type && e.position.start === e.position.start && e.position.end === e.position.end\n  );\n}\nfunction ki(r, t, e) {\n  return t.filter((s) => !!(xi(s, r) || bi(s, e)));\n}\nfunction yi(r, t, e, s, i) {\n  const n = e - t, l = i - s - n;\n  return r.filter((a) => t < a.position.end && e > a.position.start ? !1 : (e < a.position.start && (a.position.start += l, a.position.end += l), !0));\n}\nfunction he(r, t) {\n  let e = r;\n  return t.iterChanges((s, i, n, o) => {\n    e = yi(e, s, i, n, o);\n  }), e;\n}\nconst pr = (r) => {\n  const { noUpdates: t, allowedNewPlaceholders: e, nested: s, tooltips: i } = r;\n  return Os.define({\n    create(n) {\n      try {\n        return Me(n.doc.toString(), void 0, s) || [];\n      } catch {\n        return [];\n      }\n    },\n    update(n, o) {\n      if (t)\n        return he(n, o.changes);\n      if (o.docChanged && !t) {\n        let l;\n        o.changes.iterChanges((h, u, $, f) => {\n          const c = u - h;\n          f - $ - c <= 1 && (l = [$, f]);\n        });\n        const a = Me(\n          o.state.doc.toString(),\n          l,\n          s\n        );\n        return a === null ? he(n, o.changes) : e ? ki(\n          n,\n          he(n, o.changes),\n          e\n        ) : a;\n      }\n      return n;\n    },\n    provide(n) {\n      const o = [\n        Ht.fromClass(\n          class {\n            constructor(l) {\n              Vt(this, \"decorationSet\");\n              this.decorationSet = He(\n                l.state.field(n),\n                r == null ? void 0 : r.examplePluralNum\n              );\n            }\n            update(l) {\n              this.decorationSet = He(\n                l.state.field(n),\n                r == null ? void 0 : r.examplePluralNum\n              );\n            }\n          },\n          {\n            decorations: (l) => l.decorationSet,\n            provide: (l) => ht.atomicRanges.of((a) => {\n              var h;\n              return ((h = a.plugin(l)) == null ? void 0 : h.decorationSet) || K.none;\n            })\n          }\n        )\n      ];\n      return i && o.push(\n        Gs((l, a, h) => {\n          const $ = l.state.field(n).find(({ position: f }) => a === f.start && h > 0);\n          return $ ? {\n            pos: $.position.start,\n            end: $.position.end,\n            create() {\n              const f = document.createElement(\"div\");\n              return f.textContent = $.normalizedValue, { dom: f };\n            }\n          } : null;\n        })\n      ), o;\n    }\n  });\n};\nlet Ji = 0;\nclass Q {\n  /**\n  @internal\n  */\n  constructor(t, e, s) {\n    this.set = t, this.base = e, this.modified = s, this.id = Ji++;\n  }\n  /**\n  Define a new tag. If `parent` is given, the tag is treated as a\n  sub-tag of that parent, and\n  [highlighters](#highlight.tagHighlighter) that don't mention\n  this tag will try to fall back to the parent tag (or grandparent\n  tag, etc).\n  */\n  static define(t) {\n    if (t != null && t.base)\n      throw new Error(\"Can not derive from a modified tag\");\n    let e = new Q([], null, []);\n    if (e.set.push(e), t)\n      for (let s of t.set)\n        e.set.push(s);\n    return e;\n  }\n  /**\n  Define a tag _modifier_, which is a function that, given a tag,\n  will return a tag that is a subtag of the original. Applying the\n  same modifier to a twice tag will return the same value (`m1(t1)\n  == m1(t1)`) and applying multiple modifiers will, regardless or\n  order, produce the same tag (`m1(m2(t1)) == m2(m1(t1))`).\n  \n  When multiple modifiers are applied to a given base tag, each\n  smaller set of modifiers is registered as a parent, so that for\n  example `m1(m2(m3(t1)))` is a subtype of `m1(m2(t1))`,\n  `m1(m3(t1)`, and so on.\n  */\n  static defineModifier() {\n    let t = new Qt();\n    return (e) => e.modified.indexOf(t) > -1 ? e : Qt.get(e.base || e, e.modified.concat(t).sort((s, i) => s.id - i.id));\n  }\n}\nlet wi = 0;\nclass Qt {\n  constructor() {\n    this.instances = [], this.id = wi++;\n  }\n  static get(t, e) {\n    if (!e.length)\n      return t;\n    let s = e[0].instances.find((l) => l.base == t && Ti(e, l.modified));\n    if (s)\n      return s;\n    let i = [], n = new Q(i, t, e);\n    for (let l of e)\n      l.instances.push(n);\n    let o = Fi(e);\n    for (let l of t.set)\n      if (!l.modified.length)\n        for (let a of o)\n          i.push(Qt.get(l, a));\n    return n;\n  }\n}\nfunction Ti(r, t) {\n  return r.length == t.length && r.every((e, s) => e == t[s]);\n}\nfunction Fi(r) {\n  let t = [[]];\n  for (let e = 0; e < r.length; e++)\n    for (let s = 0, i = t.length; s < i; s++)\n      t.push(t[s].concat(r[e]));\n  return t.sort((e, s) => s.length - e.length);\n}\nfunction Is(r) {\n  let t = /* @__PURE__ */ Object.create(null);\n  for (let e in r) {\n    let s = r[e];\n    Array.isArray(s) || (s = [s]);\n    for (let i of e.split(\" \"))\n      if (i) {\n        let n = [], o = 2, l = i;\n        for (let $ = 0; ; ) {\n          if (l == \"...\" && $ > 0 && $ + 3 == i.length) {\n            o = 1;\n            break;\n          }\n          let f = /^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(l);\n          if (!f)\n            throw new RangeError(\"Invalid path: \" + i);\n          if (n.push(f[0] == \"*\" ? \"\" : f[0][0] == '\"' ? JSON.parse(f[0]) : f[0]), $ += f[0].length, $ == i.length)\n            break;\n          let c = i[$++];\n          if ($ == i.length && c == \"!\") {\n            o = 0;\n            break;\n          }\n          if (c != \"/\")\n            throw new RangeError(\"Invalid path: \" + i);\n          l = i.slice($);\n        }\n        let a = n.length - 1, h = n[a];\n        if (!h)\n          throw new RangeError(\"Invalid path: \" + i);\n        let u = new Kt(s, o, a > 0 ? n.slice(0, a) : null);\n        t[h] = u.sort(t[h]);\n      }\n  }\n  return zs.add(t);\n}\nconst zs = new x();\nclass Kt {\n  constructor(t, e, s, i) {\n    this.tags = t, this.mode = e, this.context = s, this.next = i;\n  }\n  get opaque() {\n    return this.mode == 0;\n  }\n  get inherit() {\n    return this.mode == 1;\n  }\n  sort(t) {\n    return !t || t.depth < this.depth ? (this.next = t, this) : (t.next = this.sort(t.next), t);\n  }\n  get depth() {\n    return this.context ? this.context.length : 0;\n  }\n}\nKt.empty = new Kt([], 2, null);\nfunction Ds(r, t) {\n  let e = /* @__PURE__ */ Object.create(null);\n  for (let n of r)\n    if (!Array.isArray(n.tag))\n      e[n.tag.id] = n.class;\n    else\n      for (let o of n.tag)\n        e[o.id] = n.class;\n  let { scope: s, all: i = null } = t || {};\n  return {\n    style: (n) => {\n      let o = i;\n      for (let l of n)\n        for (let a of l.set) {\n          let h = e[a.id];\n          if (h) {\n            o = o ? o + \" \" + h : h;\n            break;\n          }\n        }\n      return o;\n    },\n    scope: s\n  };\n}\nfunction Ri(r, t) {\n  let e = null;\n  for (let s of r) {\n    let i = s.style(t);\n    i && (e = e ? e + \" \" + i : i);\n  }\n  return e;\n}\nfunction Vi(r, t, e, s = 0, i = r.length) {\n  let n = new vi(s, Array.isArray(t) ? t : [t], e);\n  n.highlightRange(r.cursor(), s, i, \"\", n.highlighters), n.flush(i);\n}\nclass vi {\n  constructor(t, e, s) {\n    this.at = t, this.highlighters = e, this.span = s, this.class = \"\";\n  }\n  startSpan(t, e) {\n    e != this.class && (this.flush(t), t > this.at && (this.at = t), this.class = e);\n  }\n  flush(t) {\n    t > this.at && this.class && this.span(this.at, t, this.class);\n  }\n  highlightRange(t, e, s, i, n) {\n    let { type: o, from: l, to: a } = t;\n    if (l >= s || a <= e)\n      return;\n    o.isTop && (n = this.highlighters.filter((c) => !c.scope || c.scope(o)));\n    let h = i, u = Ii(t) || Kt.empty, $ = Ri(n, u.tags);\n    if ($ && (h && (h += \" \"), h += $, u.mode == 1 && (i += (i ? \" \" : \"\") + $)), this.startSpan(Math.max(e, l), h), u.opaque)\n      return;\n    let f = t.tree && t.tree.prop(x.mounted);\n    if (f && f.overlay) {\n      let c = t.node.enter(f.overlay[0].from + l, 1), d = this.highlighters.filter((R) => !R.scope || R.scope(f.tree.type)), m = t.firstChild();\n      for (let R = 0, I = l; ; R++) {\n        let z = R < f.overlay.length ? f.overlay[R] : null, J = z ? z.from + l : a, N = Math.max(e, I), S = Math.min(s, J);\n        if (N < S && m)\n          for (; t.from < S && (this.highlightRange(t, N, S, i, n), this.startSpan(Math.min(S, t.to), h), !(t.to >= J || !t.nextSibling())); )\n            ;\n        if (!z || J > s)\n          break;\n        I = z.to + l, I > e && (this.highlightRange(c.cursor(), Math.max(e, z.from + l), Math.min(s, I), \"\", d), this.startSpan(Math.min(s, I), h));\n      }\n      m && t.parent();\n    } else if (t.firstChild()) {\n      f && (i = \"\");\n      do\n        if (!(t.to <= e)) {\n          if (t.from >= s)\n            break;\n          this.highlightRange(t, e, s, i, n), this.startSpan(Math.min(s, t.to), h);\n        }\n      while (t.nextSibling());\n      t.parent();\n    }\n  }\n}\nfunction Ii(r) {\n  let t = r.type.prop(zs);\n  for (; t && t.context && !r.matchContext(t.context); )\n    t = t.next;\n  return t || null;\n}\nconst p = Q.define, Wt = p(), H = p(), ts = p(H), es = p(H), tt = p(), Ct = p(tt), ue = p(tt), Y = p(), lt = p(Y), X = p(), _ = p(), ke = p(), mt = p(ke), qt = p(), U = {\n  /**\n  A comment.\n  */\n  comment: Wt,\n  /**\n  A line [comment](#highlight.tags.comment).\n  */\n  lineComment: p(Wt),\n  /**\n  A block [comment](#highlight.tags.comment).\n  */\n  blockComment: p(Wt),\n  /**\n  A documentation [comment](#highlight.tags.comment).\n  */\n  docComment: p(Wt),\n  /**\n  Any kind of identifier.\n  */\n  name: H,\n  /**\n  The [name](#highlight.tags.name) of a variable.\n  */\n  variableName: p(H),\n  /**\n  A type [name](#highlight.tags.name).\n  */\n  typeName: ts,\n  /**\n  A tag name (subtag of [`typeName`](#highlight.tags.typeName)).\n  */\n  tagName: p(ts),\n  /**\n  A property or field [name](#highlight.tags.name).\n  */\n  propertyName: es,\n  /**\n  An attribute name (subtag of [`propertyName`](#highlight.tags.propertyName)).\n  */\n  attributeName: p(es),\n  /**\n  The [name](#highlight.tags.name) of a class.\n  */\n  className: p(H),\n  /**\n  A label [name](#highlight.tags.name).\n  */\n  labelName: p(H),\n  /**\n  A namespace [name](#highlight.tags.name).\n  */\n  namespace: p(H),\n  /**\n  The [name](#highlight.tags.name) of a macro.\n  */\n  macroName: p(H),\n  /**\n  A literal value.\n  */\n  literal: tt,\n  /**\n  A string [literal](#highlight.tags.literal).\n  */\n  string: Ct,\n  /**\n  A documentation [string](#highlight.tags.string).\n  */\n  docString: p(Ct),\n  /**\n  A character literal (subtag of [string](#highlight.tags.string)).\n  */\n  character: p(Ct),\n  /**\n  An attribute value (subtag of [string](#highlight.tags.string)).\n  */\n  attributeValue: p(Ct),\n  /**\n  A number [literal](#highlight.tags.literal).\n  */\n  number: ue,\n  /**\n  An integer [number](#highlight.tags.number) literal.\n  */\n  integer: p(ue),\n  /**\n  A floating-point [number](#highlight.tags.number) literal.\n  */\n  float: p(ue),\n  /**\n  A boolean [literal](#highlight.tags.literal).\n  */\n  bool: p(tt),\n  /**\n  Regular expression [literal](#highlight.tags.literal).\n  */\n  regexp: p(tt),\n  /**\n  An escape [literal](#highlight.tags.literal), for example a\n  backslash escape in a string.\n  */\n  escape: p(tt),\n  /**\n  A color [literal](#highlight.tags.literal).\n  */\n  color: p(tt),\n  /**\n  A URL [literal](#highlight.tags.literal).\n  */\n  url: p(tt),\n  /**\n  A language keyword.\n  */\n  keyword: X,\n  /**\n  The [keyword](#highlight.tags.keyword) for the self or this\n  object.\n  */\n  self: p(X),\n  /**\n  The [keyword](#highlight.tags.keyword) for null.\n  */\n  null: p(X),\n  /**\n  A [keyword](#highlight.tags.keyword) denoting some atomic value.\n  */\n  atom: p(X),\n  /**\n  A [keyword](#highlight.tags.keyword) that represents a unit.\n  */\n  unit: p(X),\n  /**\n  A modifier [keyword](#highlight.tags.keyword).\n  */\n  modifier: p(X),\n  /**\n  A [keyword](#highlight.tags.keyword) that acts as an operator.\n  */\n  operatorKeyword: p(X),\n  /**\n  A control-flow related [keyword](#highlight.tags.keyword).\n  */\n  controlKeyword: p(X),\n  /**\n  A [keyword](#highlight.tags.keyword) that defines something.\n  */\n  definitionKeyword: p(X),\n  /**\n  A [keyword](#highlight.tags.keyword) related to defining or\n  interfacing with modules.\n  */\n  moduleKeyword: p(X),\n  /**\n  An operator.\n  */\n  operator: _,\n  /**\n  An [operator](#highlight.tags.operator) that dereferences something.\n  */\n  derefOperator: p(_),\n  /**\n  Arithmetic-related [operator](#highlight.tags.operator).\n  */\n  arithmeticOperator: p(_),\n  /**\n  Logical [operator](#highlight.tags.operator).\n  */\n  logicOperator: p(_),\n  /**\n  Bit [operator](#highlight.tags.operator).\n  */\n  bitwiseOperator: p(_),\n  /**\n  Comparison [operator](#highlight.tags.operator).\n  */\n  compareOperator: p(_),\n  /**\n  [Operator](#highlight.tags.operator) that updates its operand.\n  */\n  updateOperator: p(_),\n  /**\n  [Operator](#highlight.tags.operator) that defines something.\n  */\n  definitionOperator: p(_),\n  /**\n  Type-related [operator](#highlight.tags.operator).\n  */\n  typeOperator: p(_),\n  /**\n  Control-flow [operator](#highlight.tags.operator).\n  */\n  controlOperator: p(_),\n  /**\n  Program or markup punctuation.\n  */\n  punctuation: ke,\n  /**\n  [Punctuation](#highlight.tags.punctuation) that separates\n  things.\n  */\n  separator: p(ke),\n  /**\n  Bracket-style [punctuation](#highlight.tags.punctuation).\n  */\n  bracket: mt,\n  /**\n  Angle [brackets](#highlight.tags.bracket) (usually `<` and `>`\n  tokens).\n  */\n  angleBracket: p(mt),\n  /**\n  Square [brackets](#highlight.tags.bracket) (usually `[` and `]`\n  tokens).\n  */\n  squareBracket: p(mt),\n  /**\n  Parentheses (usually `(` and `)` tokens). Subtag of\n  [bracket](#highlight.tags.bracket).\n  */\n  paren: p(mt),\n  /**\n  Braces (usually `{` and `}` tokens). Subtag of\n  [bracket](#highlight.tags.bracket).\n  */\n  brace: p(mt),\n  /**\n  Content, for example plain text in XML or markup documents.\n  */\n  content: Y,\n  /**\n  [Content](#highlight.tags.content) that represents a heading.\n  */\n  heading: lt,\n  /**\n  A level 1 [heading](#highlight.tags.heading).\n  */\n  heading1: p(lt),\n  /**\n  A level 2 [heading](#highlight.tags.heading).\n  */\n  heading2: p(lt),\n  /**\n  A level 3 [heading](#highlight.tags.heading).\n  */\n  heading3: p(lt),\n  /**\n  A level 4 [heading](#highlight.tags.heading).\n  */\n  heading4: p(lt),\n  /**\n  A level 5 [heading](#highlight.tags.heading).\n  */\n  heading5: p(lt),\n  /**\n  A level 6 [heading](#highlight.tags.heading).\n  */\n  heading6: p(lt),\n  /**\n  A prose separator (such as a horizontal rule).\n  */\n  contentSeparator: p(Y),\n  /**\n  [Content](#highlight.tags.content) that represents a list.\n  */\n  list: p(Y),\n  /**\n  [Content](#highlight.tags.content) that represents a quote.\n  */\n  quote: p(Y),\n  /**\n  [Content](#highlight.tags.content) that is emphasized.\n  */\n  emphasis: p(Y),\n  /**\n  [Content](#highlight.tags.content) that is styled strong.\n  */\n  strong: p(Y),\n  /**\n  [Content](#highlight.tags.content) that is part of a link.\n  */\n  link: p(Y),\n  /**\n  [Content](#highlight.tags.content) that is styled as code or\n  monospace.\n  */\n  monospace: p(Y),\n  /**\n  [Content](#highlight.tags.content) that has a strike-through\n  style.\n  */\n  strikethrough: p(Y),\n  /**\n  Inserted text in a change-tracking format.\n  */\n  inserted: p(),\n  /**\n  Deleted text.\n  */\n  deleted: p(),\n  /**\n  Changed text.\n  */\n  changed: p(),\n  /**\n  An invalid or unsyntactic element.\n  */\n  invalid: p(),\n  /**\n  Metadata or meta-instruction.\n  */\n  meta: qt,\n  /**\n  [Metadata](#highlight.tags.meta) that applies to the entire\n  document.\n  */\n  documentMeta: p(qt),\n  /**\n  [Metadata](#highlight.tags.meta) that annotates or adds\n  attributes to a given syntactic element.\n  */\n  annotation: p(qt),\n  /**\n  Processing instruction or preprocessor directive. Subtag of\n  [meta](#highlight.tags.meta).\n  */\n  processingInstruction: p(qt),\n  /**\n  [Modifier](#highlight.Tag^defineModifier) that indicates that a\n  given element is being defined. Expected to be used with the\n  various [name](#highlight.tags.name) tags.\n  */\n  definition: Q.defineModifier(),\n  /**\n  [Modifier](#highlight.Tag^defineModifier) that indicates that\n  something is constant. Mostly expected to be used with\n  [variable names](#highlight.tags.variableName).\n  */\n  constant: Q.defineModifier(),\n  /**\n  [Modifier](#highlight.Tag^defineModifier) used to indicate that\n  a [variable](#highlight.tags.variableName) or [property\n  name](#highlight.tags.propertyName) is being called or defined\n  as a function.\n  */\n  function: Q.defineModifier(),\n  /**\n  [Modifier](#highlight.Tag^defineModifier) that can be applied to\n  [names](#highlight.tags.name) to indicate that they belong to\n  the language's standard environment.\n  */\n  standard: Q.defineModifier(),\n  /**\n  [Modifier](#highlight.Tag^defineModifier) that indicates a given\n  [names](#highlight.tags.name) is local to some scope.\n  */\n  local: Q.defineModifier(),\n  /**\n  A generic variant [modifier](#highlight.Tag^defineModifier) that\n  can be used to tag language-specific alternative variants of\n  some common tag. It is recommended for themes to define special\n  forms of at least the [string](#highlight.tags.string) and\n  [variable name](#highlight.tags.variableName) tags, since those\n  come up a lot.\n  */\n  special: Q.defineModifier()\n};\nDs([\n  { tag: U.link, class: \"tok-link\" },\n  { tag: U.heading, class: \"tok-heading\" },\n  { tag: U.emphasis, class: \"tok-emphasis\" },\n  { tag: U.strong, class: \"tok-strong\" },\n  { tag: U.keyword, class: \"tok-keyword\" },\n  { tag: U.atom, class: \"tok-atom\" },\n  { tag: U.bool, class: \"tok-bool\" },\n  { tag: U.url, class: \"tok-url\" },\n  { tag: U.labelName, class: \"tok-labelName\" },\n  { tag: U.inserted, class: \"tok-inserted\" },\n  { tag: U.deleted, class: \"tok-deleted\" },\n  { tag: U.literal, class: \"tok-literal\" },\n  { tag: U.string, class: \"tok-string\" },\n  { tag: U.number, class: \"tok-number\" },\n  { tag: [U.regexp, U.escape, U.special(U.string)], class: \"tok-string2\" },\n  { tag: U.variableName, class: \"tok-variableName\" },\n  { tag: U.local(U.variableName), class: \"tok-variableName tok-local\" },\n  { tag: U.definition(U.variableName), class: \"tok-variableName tok-definition\" },\n  { tag: U.special(U.variableName), class: \"tok-variableName2\" },\n  { tag: U.definition(U.propertyName), class: \"tok-propertyName tok-definition\" },\n  { tag: U.typeName, class: \"tok-typeName\" },\n  { tag: U.namespace, class: \"tok-namespace\" },\n  { tag: U.className, class: \"tok-className\" },\n  { tag: U.macroName, class: \"tok-macroName\" },\n  { tag: U.propertyName, class: \"tok-propertyName\" },\n  { tag: U.operator, class: \"tok-operator\" },\n  { tag: U.comment, class: \"tok-comment\" },\n  { tag: U.meta, class: \"tok-meta\" },\n  { tag: U.invalid, class: \"tok-invalid\" },\n  { tag: U.punctuation, class: \"tok-punctuation\" }\n]);\nconst ye = \"ͼ\", ss = typeof Symbol > \"u\" ? \"__\" + ye : Symbol.for(ye), Je = typeof Symbol > \"u\" ? \"__styleSet\" + Math.floor(Math.random() * 1e8) : Symbol(\"styleSet\"), is = typeof globalThis < \"u\" ? globalThis : typeof window < \"u\" ? window : {};\nclass rs {\n  // :: (Object<Style>, ?{finish: ?(string) → string})\n  // Create a style module from the given spec.\n  //\n  // When `finish` is given, it is called on regular (non-`@`)\n  // selectors (after `&` expansion) to compute the final selector.\n  constructor(t, e) {\n    this.rules = [];\n    let { finish: s } = e || {};\n    function i(o) {\n      return /^@/.test(o) ? [o] : o.split(/,\\s*/);\n    }\n    function n(o, l, a, h) {\n      let u = [], $ = /^@(\\w+)\\b/.exec(o[0]), f = $ && $[1] == \"keyframes\";\n      if ($ && l == null)\n        return a.push(o[0] + \";\");\n      for (let c in l) {\n        let d = l[c];\n        if (/&/.test(c))\n          n(\n            c.split(/,\\s*/).map((m) => o.map((R) => m.replace(/&/, R))).reduce((m, R) => m.concat(R)),\n            d,\n            a\n          );\n        else if (d && typeof d == \"object\") {\n          if (!$)\n            throw new RangeError(\"The value of a property (\" + c + \") should be a primitive value.\");\n          n(i(c), d, u, f);\n        } else\n          d != null && u.push(c.replace(/_.*/, \"\").replace(/[A-Z]/g, (m) => \"-\" + m.toLowerCase()) + \": \" + d + \";\");\n      }\n      (u.length || f) && a.push((s && !$ && !h ? o.map(s) : o).join(\", \") + \" {\" + u.join(\" \") + \"}\");\n    }\n    for (let o in t)\n      n(i(o), t[o], this.rules);\n  }\n  // :: () → string\n  // Returns a string containing the module's CSS rules.\n  getRules() {\n    return this.rules.join(`\n`);\n  }\n  // :: () → string\n  // Generate a new unique CSS class name.\n  static newName() {\n    let t = is[ss] || 1;\n    return is[ss] = t + 1, ye + t.toString(36);\n  }\n  // :: (union<Document, ShadowRoot>, union<[StyleModule], StyleModule>, ?{nonce: ?string})\n  //\n  // Mount the given set of modules in the given DOM root, which ensures\n  // that the CSS rules defined by the module are available in that\n  // context.\n  //\n  // Rules are only added to the document once per root.\n  //\n  // Rule order will follow the order of the modules, so that rules from\n  // modules later in the array take precedence of those from earlier\n  // modules. If you call this function multiple times for the same root\n  // in a way that changes the order of already mounted modules, the old\n  // order will be changed.\n  //\n  // If a Content Security Policy nonce is provided, it is added to\n  // the `<style>` tag generated by the library.\n  static mount(t, e, s) {\n    let i = t[Je], n = s && s.nonce;\n    i ? n && i.setNonce(n) : i = new zi(t, n), i.mount(Array.isArray(e) ? e : [e]);\n  }\n}\nlet ns = /* @__PURE__ */ new Map();\nclass zi {\n  constructor(t, e) {\n    let s = t.ownerDocument || t, i = s.defaultView;\n    if (!t.head && t.adoptedStyleSheets && i.CSSStyleSheet) {\n      let n = ns.get(s);\n      if (n)\n        return t.adoptedStyleSheets = [n.sheet, ...t.adoptedStyleSheets], t[Je] = n;\n      this.sheet = new i.CSSStyleSheet(), t.adoptedStyleSheets = [this.sheet, ...t.adoptedStyleSheets], ns.set(s, this);\n    } else {\n      this.styleTag = s.createElement(\"style\"), e && this.styleTag.setAttribute(\"nonce\", e);\n      let n = t.head || t;\n      n.insertBefore(this.styleTag, n.firstChild);\n    }\n    this.modules = [], t[Je] = this;\n  }\n  mount(t) {\n    let e = this.sheet, s = 0, i = 0;\n    for (let n = 0; n < t.length; n++) {\n      let o = t[n], l = this.modules.indexOf(o);\n      if (l < i && l > -1 && (this.modules.splice(l, 1), i--, l = -1), l == -1) {\n        if (this.modules.splice(i++, 0, o), e)\n          for (let a = 0; a < o.rules.length; a++)\n            e.insertRule(o.rules[a], s++);\n      } else {\n        for (; i < l; )\n          s += this.modules[i++].rules.length;\n        s += o.rules.length, i++;\n      }\n    }\n    if (!e) {\n      let n = \"\";\n      for (let o = 0; o < this.modules.length; o++)\n        n += this.modules[o].getRules() + `\n`;\n      this.styleTag.textContent = n;\n    }\n  }\n  setNonce(t) {\n    this.styleTag && this.styleTag.getAttribute(\"nonce\") != t && this.styleTag.setAttribute(\"nonce\", t);\n  }\n}\nvar $e;\nconst pt = /* @__PURE__ */ new x();\nfunction Di(r) {\n  return Mt.define({\n    combine: r ? (t) => t.concat(r) : void 0\n  });\n}\nconst Pi = /* @__PURE__ */ new x();\nclass A {\n  /**\n  Construct a language object. If you need to invoke this\n  directly, first define a data facet with\n  [`defineLanguageFacet`](https://codemirror.net/6/docs/ref/#language.defineLanguageFacet), and then\n  configure your parser to [attach](https://codemirror.net/6/docs/ref/#language.languageDataProp) it\n  to the language's outer syntax node.\n  */\n  constructor(t, e, s = [], i = \"\") {\n    this.data = t, this.name = i, se.prototype.hasOwnProperty(\"tree\") || Object.defineProperty(se.prototype, \"tree\", { get() {\n      return M(this);\n    } }), this.parser = e, this.extension = [\n      jt.of(this),\n      se.languageData.of((n, o, l) => {\n        let a = os(n, o, l), h = a.type.prop(pt);\n        if (!h)\n          return [];\n        let u = n.facet(h), $ = a.type.prop(Pi);\n        if ($) {\n          let f = a.resolve(o - a.from, l);\n          for (let c of $)\n            if (c.test(f, n)) {\n              let d = n.facet(c.facet);\n              return c.type == \"replace\" ? d : d.concat(u);\n            }\n        }\n        return u;\n      })\n    ].concat(s);\n  }\n  /**\n  Query whether this language is active at the given position.\n  */\n  isActiveAt(t, e, s = -1) {\n    return os(t, e, s).type.prop(pt) == this.data;\n  }\n  /**\n  Find the document regions that were parsed using this language.\n  The returned regions will _include_ any nested languages rooted\n  in this language, when those exist.\n  */\n  findRegions(t) {\n    let e = t.facet(jt);\n    if ((e == null ? void 0 : e.data) == this.data)\n      return [{ from: 0, to: t.doc.length }];\n    if (!e || !e.allowsNesting)\n      return [];\n    let s = [], i = (n, o) => {\n      if (n.prop(pt) == this.data) {\n        s.push({ from: o, to: o + n.length });\n        return;\n      }\n      let l = n.prop(x.mounted);\n      if (l) {\n        if (l.tree.prop(pt) == this.data) {\n          if (l.overlay)\n            for (let a of l.overlay)\n              s.push({ from: a.from + o, to: a.to + o });\n          else\n            s.push({ from: o, to: o + n.length });\n          return;\n        } else if (l.overlay) {\n          let a = s.length;\n          if (i(l.tree, l.overlay[0].from + o), s.length > a)\n            return;\n        }\n      }\n      for (let a = 0; a < n.children.length; a++) {\n        let h = n.children[a];\n        h instanceof V && i(h, n.positions[a] + o);\n      }\n    };\n    return i(M(t), 0), s;\n  }\n  /**\n  Indicates whether this language allows nested languages. The\n  default implementation returns true.\n  */\n  get allowsNesting() {\n    return !0;\n  }\n}\nA.setState = /* @__PURE__ */ Es.define();\nfunction os(r, t, e) {\n  let s = r.facet(jt), i = M(r).topNode;\n  if (!s || s.allowsNesting)\n    for (let n = i; n; n = n.enter(t, e, v.ExcludeBuffers))\n      n.type.isTop && (i = n);\n  return i;\n}\nclass Zt extends A {\n  constructor(t, e, s) {\n    super(t, e, [], s), this.parser = e;\n  }\n  /**\n  Define a language from a parser.\n  */\n  static define(t) {\n    let e = Di(t.languageData);\n    return new Zt(e, t.parser.configure({\n      props: [pt.add((s) => s.isTop ? e : void 0)]\n    }), t.name);\n  }\n  /**\n  Create a new instance of this language with a reconfigured\n  version of its parser and optionally a new name.\n  */\n  configure(t, e) {\n    return new Zt(this.data, this.parser.configure(t), e || this.name);\n  }\n  get allowsNesting() {\n    return this.parser.hasWrappers();\n  }\n}\nfunction M(r) {\n  let t = r.field(A.state, !1);\n  return t ? t.tree : V.empty;\n}\nclass Wi {\n  /**\n  Create an input object for the given document.\n  */\n  constructor(t) {\n    this.doc = t, this.cursorPos = 0, this.string = \"\", this.cursor = t.iter();\n  }\n  get length() {\n    return this.doc.length;\n  }\n  syncTo(t) {\n    return this.string = this.cursor.next(t - this.cursorPos).value, this.cursorPos = t + this.string.length, this.cursorPos - this.string.length;\n  }\n  chunk(t) {\n    return this.syncTo(t), this.string;\n  }\n  get lineChunks() {\n    return !0;\n  }\n  read(t, e) {\n    let s = this.cursorPos - this.string.length;\n    return t < s || e >= this.cursorPos ? this.doc.sliceString(t, e) : this.string.slice(t - s, e - s);\n  }\n}\nlet St = null;\nclass Lt {\n  constructor(t, e, s = [], i, n, o, l, a) {\n    this.parser = t, this.state = e, this.fragments = s, this.tree = i, this.treeLen = n, this.viewport = o, this.skipped = l, this.scheduleOn = a, this.parse = null, this.tempSkipped = [];\n  }\n  /**\n  @internal\n  */\n  static create(t, e, s) {\n    return new Lt(t, e, [], V.empty, 0, s, [], null);\n  }\n  startParse() {\n    return this.parser.startParse(new Wi(this.state.doc), this.fragments);\n  }\n  /**\n  @internal\n  */\n  work(t, e) {\n    return e != null && e >= this.state.doc.length && (e = void 0), this.tree != V.empty && this.isDone(e ?? this.state.doc.length) ? (this.takeTree(), !0) : this.withContext(() => {\n      var s;\n      if (typeof t == \"number\") {\n        let i = Date.now() + t;\n        t = () => Date.now() > i;\n      }\n      for (this.parse || (this.parse = this.startParse()), e != null && (this.parse.stoppedAt == null || this.parse.stoppedAt > e) && e < this.state.doc.length && this.parse.stopAt(e); ; ) {\n        let i = this.parse.advance();\n        if (i)\n          if (this.fragments = this.withoutTempSkipped(ut.addTree(i, this.fragments, this.parse.stoppedAt != null)), this.treeLen = (s = this.parse.stoppedAt) !== null && s !== void 0 ? s : this.state.doc.length, this.tree = i, this.parse = null, this.treeLen < (e ?? this.state.doc.length))\n            this.parse = this.startParse();\n          else\n            return !0;\n        if (t())\n          return !1;\n      }\n    });\n  }\n  /**\n  @internal\n  */\n  takeTree() {\n    let t, e;\n    this.parse && (t = this.parse.parsedPos) >= this.treeLen && ((this.parse.stoppedAt == null || this.parse.stoppedAt > t) && this.parse.stopAt(t), this.withContext(() => {\n      for (; !(e = this.parse.advance()); )\n        ;\n    }), this.treeLen = t, this.tree = e, this.fragments = this.withoutTempSkipped(ut.addTree(this.tree, this.fragments, !0)), this.parse = null);\n  }\n  withContext(t) {\n    let e = St;\n    St = this;\n    try {\n      return t();\n    } finally {\n      St = e;\n    }\n  }\n  withoutTempSkipped(t) {\n    for (let e; e = this.tempSkipped.pop(); )\n      t = ls(t, e.from, e.to);\n    return t;\n  }\n  /**\n  @internal\n  */\n  changes(t, e) {\n    let { fragments: s, tree: i, treeLen: n, viewport: o, skipped: l } = this;\n    if (this.takeTree(), !t.empty) {\n      let a = [];\n      if (t.iterChangedRanges((h, u, $, f) => a.push({ fromA: h, toA: u, fromB: $, toB: f })), s = ut.applyChanges(s, a), i = V.empty, n = 0, o = { from: t.mapPos(o.from, -1), to: t.mapPos(o.to, 1) }, this.skipped.length) {\n        l = [];\n        for (let h of this.skipped) {\n          let u = t.mapPos(h.from, 1), $ = t.mapPos(h.to, -1);\n          u < $ && l.push({ from: u, to: $ });\n        }\n      }\n    }\n    return new Lt(this.parser, e, s, i, n, o, l, this.scheduleOn);\n  }\n  /**\n  @internal\n  */\n  updateViewport(t) {\n    if (this.viewport.from == t.from && this.viewport.to == t.to)\n      return !1;\n    this.viewport = t;\n    let e = this.skipped.length;\n    for (let s = 0; s < this.skipped.length; s++) {\n      let { from: i, to: n } = this.skipped[s];\n      i < t.to && n > t.from && (this.fragments = ls(this.fragments, i, n), this.skipped.splice(s--, 1));\n    }\n    return this.skipped.length >= e ? !1 : (this.reset(), !0);\n  }\n  /**\n  @internal\n  */\n  reset() {\n    this.parse && (this.takeTree(), this.parse = null);\n  }\n  /**\n  Notify the parse scheduler that the given region was skipped\n  because it wasn't in view, and the parse should be restarted\n  when it comes into view.\n  */\n  skipUntilInView(t, e) {\n    this.skipped.push({ from: t, to: e });\n  }\n  /**\n  Returns a parser intended to be used as placeholder when\n  asynchronously loading a nested parser. It'll skip its input and\n  mark it as not-really-parsed, so that the next update will parse\n  it again.\n  \n  When `until` is given, a reparse will be scheduled when that\n  promise resolves.\n  */\n  static getSkippingParser(t) {\n    return new class extends ys {\n      createParse(e, s, i) {\n        let n = i[0].from, o = i[i.length - 1].to;\n        return {\n          parsedPos: n,\n          advance() {\n            let a = St;\n            if (a) {\n              for (let h of i)\n                a.tempSkipped.push(h);\n              t && (a.scheduleOn = a.scheduleOn ? Promise.all([a.scheduleOn, t]) : t);\n            }\n            return this.parsedPos = o, new V(P.none, [], [], o - n);\n          },\n          stoppedAt: null,\n          stopAt() {\n          }\n        };\n      }\n    }();\n  }\n  /**\n  @internal\n  */\n  isDone(t) {\n    t = Math.min(t, this.state.doc.length);\n    let e = this.fragments;\n    return this.treeLen >= t && e.length && e[0].from == 0 && e[0].to >= t;\n  }\n  /**\n  Get the context for the current parse, or `null` if no editor\n  parse is in progress.\n  */\n  static get() {\n    return St;\n  }\n}\nfunction ls(r, t, e) {\n  return ut.applyChanges(r, [{ fromA: t, toA: e, fromB: t, toB: e }]);\n}\nclass Ut {\n  constructor(t) {\n    this.context = t, this.tree = t.tree;\n  }\n  apply(t) {\n    if (!t.docChanged && this.tree == this.context.tree)\n      return this;\n    let e = this.context.changes(t.changes, t.state), s = this.context.treeLen == t.startState.doc.length ? void 0 : Math.max(t.changes.mapPos(this.context.treeLen), e.viewport.to);\n    return e.work(20, s) || e.takeTree(), new Ut(e);\n  }\n  static init(t) {\n    let e = Math.min(3e3, t.doc.length), s = Lt.create(t.facet(jt).parser, t, { from: 0, to: e });\n    return s.work(20, e) || s.takeTree(), new Ut(s);\n  }\n}\nA.state = /* @__PURE__ */ Os.define({\n  create: Ut.init,\n  update(r, t) {\n    for (let e of t.effects)\n      if (e.is(A.setState))\n        return e.value;\n    return t.startState.facet(jt) != t.state.facet(jt) ? Ut.init(t.state) : r.apply(t);\n  }\n});\nlet Ps = (r) => {\n  let t = setTimeout(\n    () => r(),\n    500\n    /* Work.MaxPause */\n  );\n  return () => clearTimeout(t);\n};\ntypeof requestIdleCallback < \"u\" && (Ps = (r) => {\n  let t = -1, e = setTimeout(\n    () => {\n      t = requestIdleCallback(r, {\n        timeout: 400\n        /* Work.MinPause */\n      });\n    },\n    100\n    /* Work.MinPause */\n  );\n  return () => t < 0 ? clearTimeout(e) : cancelIdleCallback(t);\n});\nconst fe = typeof navigator < \"u\" && (!(($e = navigator.scheduling) === null || $e === void 0) && $e.isInputPending) ? () => navigator.scheduling.isInputPending() : null, Ci = /* @__PURE__ */ Ht.fromClass(class {\n  constructor(t) {\n    this.view = t, this.working = null, this.workScheduled = 0, this.chunkEnd = -1, this.chunkBudget = -1, this.work = this.work.bind(this), this.scheduleWork();\n  }\n  update(t) {\n    let e = this.view.state.field(A.state).context;\n    (e.updateViewport(t.view.viewport) || this.view.viewport.to > e.treeLen) && this.scheduleWork(), (t.docChanged || t.selectionSet) && (this.view.hasFocus && (this.chunkBudget += 50), this.scheduleWork()), this.checkAsyncSchedule(e);\n  }\n  scheduleWork() {\n    if (this.working)\n      return;\n    let { state: t } = this.view, e = t.field(A.state);\n    (e.tree != e.context.tree || !e.context.isDone(t.doc.length)) && (this.working = Ps(this.work));\n  }\n  work(t) {\n    this.working = null;\n    let e = Date.now();\n    if (this.chunkEnd < e && (this.chunkEnd < 0 || this.view.hasFocus) && (this.chunkEnd = e + 3e4, this.chunkBudget = 3e3), this.chunkBudget <= 0)\n      return;\n    let { state: s, viewport: { to: i } } = this.view, n = s.field(A.state);\n    if (n.tree == n.context.tree && n.context.isDone(\n      i + 1e5\n      /* Work.MaxParseAhead */\n    ))\n      return;\n    let o = Date.now() + Math.min(this.chunkBudget, 100, t && !fe ? Math.max(25, t.timeRemaining() - 5) : 1e9), l = n.context.treeLen < i && s.doc.length > i + 1e3, a = n.context.work(() => fe && fe() || Date.now() > o, i + (l ? 0 : 1e5));\n    this.chunkBudget -= Date.now() - e, (a || this.chunkBudget <= 0) && (n.context.takeTree(), this.view.dispatch({ effects: A.setState.of(new Ut(n.context)) })), this.chunkBudget > 0 && !(a && !l) && this.scheduleWork(), this.checkAsyncSchedule(n.context);\n  }\n  checkAsyncSchedule(t) {\n    t.scheduleOn && (this.workScheduled++, t.scheduleOn.then(() => this.scheduleWork()).catch((e) => Ns(this.view.state, e)).then(() => this.workScheduled--), t.scheduleOn = null);\n  }\n  destroy() {\n    this.working && this.working();\n  }\n  isWorking() {\n    return !!(this.working || this.workScheduled > 0);\n  }\n}, {\n  eventHandlers: { focus() {\n    this.scheduleWork();\n  } }\n}), jt = /* @__PURE__ */ Mt.define({\n  combine(r) {\n    return r.length ? r[0] : null;\n  },\n  enables: (r) => [\n    A.state,\n    Ci,\n    ht.contentAttributes.compute([r], (t) => {\n      let e = t.facet(r);\n      return e && e.name ? { \"data-language\": e.name } : {};\n    })\n  ]\n});\nclass qi {\n  /**\n  Create a language support object.\n  */\n  constructor(t, e = []) {\n    this.language = t, this.support = e, this.extension = [t, e];\n  }\n}\nclass ee {\n  constructor(t, e) {\n    this.specs = t;\n    let s;\n    function i(l) {\n      let a = rs.newName();\n      return (s || (s = /* @__PURE__ */ Object.create(null)))[\".\" + a] = l, a;\n    }\n    const n = typeof e.all == \"string\" ? e.all : e.all ? i(e.all) : void 0, o = e.scope;\n    this.scope = o instanceof A ? (l) => l.prop(pt) == o.data : o ? (l) => l == o : void 0, this.style = Ds(t.map((l) => ({\n      tag: l.tag,\n      class: l.class || i(Object.assign({}, l, { tag: null }))\n    })), {\n      all: n\n    }).style, this.module = s ? new rs(s) : null, this.themeType = e.themeType;\n  }\n  /**\n  Create a highlighter style that associates the given styles to\n  the given tags. The specs must be objects that hold a style tag\n  or array of tags in their `tag` property, and either a single\n  `class` property providing a static CSS class (for highlighter\n  that rely on external styling), or a\n  [`style-mod`](https://github.com/marijnh/style-mod#documentation)-style\n  set of CSS properties (which define the styling for those tags).\n  \n  The CSS rules created for a highlighter will be emitted in the\n  order of the spec's properties. That means that for elements that\n  have multiple tags associated with them, styles defined further\n  down in the list will have a higher CSS precedence than styles\n  defined earlier.\n  */\n  static define(t, e) {\n    return new ee(t, e || {});\n  }\n}\nconst we = /* @__PURE__ */ Mt.define(), Ws = /* @__PURE__ */ Mt.define({\n  combine(r) {\n    return r.length ? [r[0]] : null;\n  }\n});\nfunction ce(r) {\n  let t = r.facet(we);\n  return t.length ? t : r.facet(Ws);\n}\nfunction Ei(r, t) {\n  let e = [Ai], s;\n  return r instanceof ee && (r.module && e.push(ht.styleModule.of(r.module)), s = r.themeType), t != null && t.fallback ? e.push(Ws.of(r)) : s ? e.push(we.computeN([ht.darkTheme], (i) => i.facet(ht.darkTheme) == (s == \"dark\") ? [r] : [])) : e.push(we.of(r)), e;\n}\nclass Gi {\n  constructor(t) {\n    this.markCache = /* @__PURE__ */ Object.create(null), this.tree = M(t.state), this.decorations = this.buildDeco(t, ce(t.state));\n  }\n  update(t) {\n    let e = M(t.state), s = ce(t.state), i = s != ce(t.startState);\n    e.length < t.view.viewport.to && !i && e.type == this.tree.type ? this.decorations = this.decorations.map(t.changes) : (e != this.tree || t.viewportChanged || i) && (this.tree = e, this.decorations = this.buildDeco(t.view, s));\n  }\n  buildDeco(t, e) {\n    if (!e || !this.tree.length)\n      return K.none;\n    let s = new Te();\n    for (let { from: i, to: n } of t.visibleRanges)\n      Vi(this.tree, e, (o, l, a) => {\n        s.add(o, l, this.markCache[a] || (this.markCache[a] = K.mark({ class: a })));\n      }, i, n);\n    return s.finish();\n  }\n}\nconst Ai = /* @__PURE__ */ ms.high(/* @__PURE__ */ Ht.fromClass(Gi, {\n  decorations: (r) => r.decorations\n})), Ni = /* @__PURE__ */ Object.create(null), as = [P.none], hs = [], us = /* @__PURE__ */ Object.create(null), Bi = /* @__PURE__ */ Object.create(null);\nfor (let [r, t] of [\n  [\"variable\", \"variableName\"],\n  [\"variable-2\", \"variableName.special\"],\n  [\"string-2\", \"string.special\"],\n  [\"def\", \"variableName.definition\"],\n  [\"tag\", \"tagName\"],\n  [\"attribute\", \"attributeName\"],\n  [\"type\", \"typeName\"],\n  [\"builtin\", \"variableName.standard\"],\n  [\"qualifier\", \"modifier\"],\n  [\"error\", \"invalid\"],\n  [\"header\", \"heading\"],\n  [\"property\", \"propertyName\"]\n])\n  Bi[r] = /* @__PURE__ */ Xi(Ni, t);\nfunction pe(r, t) {\n  hs.indexOf(r) > -1 || (hs.push(r), console.warn(t));\n}\nfunction Xi(r, t) {\n  let e = [];\n  for (let l of t.split(\" \")) {\n    let a = [];\n    for (let h of l.split(\".\")) {\n      let u = r[h] || U[h];\n      u ? typeof u == \"function\" ? a.length ? a = a.map(u) : pe(h, `Modifier ${h} used at start of tag`) : a.length ? pe(h, `Tag ${h} used as modifier`) : a = Array.isArray(u) ? u : [u] : pe(h, `Unknown highlighting tag ${h}`);\n    }\n    for (let h of a)\n      e.push(h);\n  }\n  if (!e.length)\n    return 0;\n  let s = t.replace(/ /g, \"_\"), i = s + \" \" + e.map((l) => l.id), n = us[i];\n  if (n)\n    return n.id;\n  let o = us[i] = P.define({\n    id: as.length,\n    name: s,\n    props: [Is({ [s]: e })]\n  });\n  return as.push(o), o.id;\n}\nNt.RTL, Nt.LTR;\nconst _i = (r) => Zt.define({\n  name: \"icu-tolgee\",\n  parser: Ft.configure({\n    top: r ? \"Nested\" : \"Root\",\n    props: [\n      Is({\n        TextRoot: U.string,\n        Text: U.string,\n        PluralPlaceholder: U.keyword,\n        VariantDescriptor: U.keyword,\n        FormatFunction: U.keyword,\n        SelectFunction: U.keyword,\n        Param: U.variableName,\n        FormatStyle: U.variableName,\n        \"{ }\": U.paren,\n        Sep: U.separator,\n        \"< >\": U.tagName,\n        Slash: U.tagName,\n        TagName: U.tagName\n      })\n    ]\n  })\n});\nfunction Ur(r) {\n  return new qi(_i(r));\n}\nconst jr = (r) => Ei(\n  ee.define([\n    { tag: U.variableName, color: r.other },\n    { tag: U.keyword, color: r.function },\n    { tag: U.bracket, color: r.other },\n    { tag: U.tagName, color: r.other },\n    { tag: U.content, color: r.main },\n    { tag: U.string, color: r.main }\n  ])\n), gr = Ht.fromClass(\n  class {\n    constructor(r) {\n      Vt(this, \"isolates\");\n      Vt(this, \"tree\");\n      this.isolates = $s(r), this.tree = M(r.state);\n    }\n    update(r) {\n      (r.docChanged || r.viewportChanged || M(r.state) != this.tree) && (this.isolates = $s(r.view), this.tree = M(r.state));\n    }\n  },\n  {\n    provide: (r) => {\n      function t(e) {\n        var s;\n        return ((s = e.plugin(r)) == null ? void 0 : s.isolates) ?? K.none;\n      }\n      return ms.lowest([\n        ht.decorations.of(t),\n        ht.bidiIsolatedRanges.of(t)\n      ]);\n    }\n  }\n), Yi = K.mark({\n  attributes: { style: \"direction: ltr; unicode-bidi: isolate\" },\n  bidiIsolate: Nt.LTR\n}), Qi = K.mark({\n  attributes: { style: \"direction: rtl; unicode-bidi: isolate\" },\n  bidiIsolate: Nt.RTL\n});\nfunction $s(r) {\n  const t = new Te();\n  for (const { from: e, to: s } of r.visibleRanges)\n    M(r.state).iterate({\n      from: e,\n      to: s,\n      enter(i) {\n        (i.name === \"HtmlTagOpen\" || i.name === \"HtmlTagClose\" || i.name === \"Expression\") && t.add(i.from, i.to, Yi), (i.name === \"TextRoot\" || i.name === \"Text\") && t.add(i.from, i.to, Qi);\n      }\n    });\n  return t.finish();\n}\nconst Ki = {\n  variable: {\n    border: \"#7AD3C1\",\n    background: \"#BEF3E9\",\n    text: \"#008371\"\n  },\n  tag: {\n    border: \"#F27FA6\",\n    background: \"#F9C4D6\",\n    text: \"#822343\"\n  },\n  variant: {\n    border: \"#BBC2CB\",\n    background: \"#F0F2F4\",\n    text: \"#4D5B6E\"\n  }\n}, Or = ({\n  styled: r,\n  colors: t = Ki,\n  component: e = \"div\"\n}) => r(e)`\n    white-space: pre-wrap;\n    & .placeholder-widget {\n      display: inline-flex;\n      vertical-align: text-top;\n      align-items: center;\n      justify-content: center;\n      min-width: 15px;\n      border: 1px solid ${t.variable.border};\n      background-color: ${t.variable.background};\n      color: ${t.variable.text};\n      border-radius: 10px;\n      padding: 0px 7px;\n      font-size: 12px;\n      user-select: none;\n      margin: 0px 1px;\n      overflow: hidden;\n\n      & > * {\n        display: grid;\n      }\n    }\n    & .placeholder-error {\n      background: #ff000054;\n    }\n\n    & .placeholder-tagOpen {\n      border: 1px solid ${t.tag.border};\n      background-color: ${t.tag.background};\n      color: ${t.tag.text};\n      border-radius: 10px 0px 0px 10px;\n      padding-right: 6px;\n    }\n\n    & .placeholder-tagClose {\n      border: 1px solid ${t.tag.border};\n      background-color: ${t.tag.background};\n      color: ${t.tag.text};\n      border-radius: 0px 10px 10px 0px;\n      padding-left: 6px;\n    }\n\n    & .placeholder-tagSelfClosed {\n      border: 1px solid ${t.tag.border};\n      background-color: ${t.tag.background};\n      color: ${t.tag.text};\n    }\n\n    // in rtl mode, revert the placeholders direction\n    &[dir=\"rtl\"] .placeholder-tagOpen {\n      border-radius: 0px 10px 10px 0px;\n      padding-left: 6px;\n    }\n    &[dir=\"rtl\"] .placeholder-tagClose {\n      border-radius: 10px 0px 0px 10px;\n      padding-right: 6px;\n    }\n  `, Zi = (r) => /^[^\\p{White_Space}\\p{Pattern_Syntax}]*$/uy.test(r), bt = 0, de = 1, Et = 2, Ue = /* @__PURE__ */ new Set([\"{\", \"}\", \"#\"]), q = \"'\", Li = (r) => {\n  let t = bt;\n  const e = [];\n  for (const s of r)\n    switch (t) {\n      case bt:\n        s === q ? (e.push(s), t = de) : Ue.has(s) ? (e.push(q), e.push(s), t = Et) : e.push(s);\n        break;\n      case de:\n        Ue.has(s) ? (e.push(q), e.push(q), e.push(s), t = Et) : s === q ? (e.push(q), e.push(s), e.push(q), t = bt) : (e.push(s), t = bt);\n        break;\n      case Et:\n        Ue.has(s) ? e.push(s) : s === q ? (e.push(q), e.push(q)) : (e.push(q), e.push(s), t = bt);\n    }\n  return [de, Et].includes(t) && e.push(q), e.join(\"\");\n}, xt = 0, kt = 1, je = 2, ge = 3, fs = 4, cs = 5, ps = /* @__PURE__ */ new Set([\"{\", \"}\", \"#\"]), ds = /* @__PURE__ */ new Set([\"{\", \"}\"]), G = \"'\", Mi = (r) => {\n  let t = xt;\n  const e = [];\n  let s;\n  for (const i of r)\n    switch (t) {\n      case xt:\n        i === G ? t = je : ds.has(i) && (e.push(G), s = e.length, t = ge), e.push(i);\n        break;\n      case je:\n        ps.has(i) ? (s = e.length, t = kt) : t = xt, e.push(i);\n        break;\n      case kt:\n        i === G ? t = fs : ps.has(i) && (s = e.length), e.push(i);\n        break;\n      case fs:\n        i === G ? (t = kt, e.push(G)) : (e.push(i), t = xt);\n        break;\n      case ge:\n        i === G ? t = cs : ds.has(i) && (s = e.length), e.push(i);\n        break;\n      case cs:\n        i === G ? (t = kt, e.push(G)) : (e.splice(s + 1, 0, G), e.push(i), t = xt);\n        break;\n    }\n  return [kt, ge].includes(t) ? e.splice(s + 1, 0, G) : t === je && e.push(G), e.join(\"\");\n};\nfunction Hi(r) {\n  return Ft.configure({ strict: !0 }).parse(r);\n}\nconst mr = (r, t) => {\n  const { parameter: e, variants: s } = r;\n  if (!e)\n    return s.other ?? \"\";\n  if (!Zi(e))\n    throw new Error(`Parameter name \"${e}\" is invalid`);\n  const i = [`{${e}, plural,`];\n  s.other || (s.other = \"\");\n  let n = !0;\n  for (const [o, l] of Object.entries(s)) {\n    const a = l || \"\";\n    if (n && a && (n = !1), t)\n      i.push(` ${o} {${Li(a)}}`);\n    else\n      try {\n        Hi(`{${e}, plural, other {${a}}}`), i.push(` ${o} {${a}}`);\n      } catch {\n        i.push(` ${o} {${Mi(a)}}`);\n      }\n  }\n  return n ? \"\" : (i.push(\"}\"), i.join(\"\"));\n}, yt = 0, Oe = 1, me = 2, Us = 3, tr = /* @__PURE__ */ new Set([\"{\", \"}\", \"#\"]), at = \"'\", er = (r) => {\n  let t = yt;\n  const e = [];\n  for (const s of r)\n    switch (t) {\n      case yt:\n        s === at ? t = Oe : e.push(s);\n        break;\n      case Oe:\n        tr.has(s) ? t = me : (s === at || e.push(at), t = yt), e.push(s);\n        break;\n      case me:\n        s === at ? t = Us : e.push(s);\n        break;\n      case Us:\n        s === at ? (t = me, e.push(at)) : (e.push(s), t = yt);\n    }\n  return t === Oe && e.push(at), e.join(\"\");\n}, js = {\n  0: Ie,\n  4: te,\n  5: ze,\n  // this also excludes 'offset:x'\n  6: Fs\n};\nfunction wt(r, t) {\n  return t.substring(r.from, r.to);\n}\nfunction sr(r, t, e) {\n  let s = r.firstChild;\n  do\n    if ((s == null ? void 0 : s.type.id) === ui)\n      return e ? er(wt(s, t)) : wt(s, t);\n  while (s = s == null ? void 0 : s.nextSibling);\n  return \"\";\n}\nfunction Jt(r) {\n  return { variants: { other: r } };\n}\nconst ir = (r, t) => {\n  let e;\n  try {\n    e = Ft.configure({ strict: !0 }).parse(r);\n  } catch {\n    return Jt(r);\n  }\n  const s = e.cursor(), i = {}, n = {}, o = Object.keys(js), l = Number(o[o.length - 1]);\n  for (let h = 0; h <= l; h++) {\n    s.next();\n    const u = s.node, $ = js[h];\n    if ($ !== void 0)\n      if ($ === u.type.id)\n        i[u.type.id] = u;\n      else\n        return Jt(r);\n  }\n  if (i[Ie].nextSibling || wt(i[ze], r) !== \"plural\")\n    return Jt(r);\n  let a = i[Fs];\n  do {\n    const h = wt(a.firstChild, r), u = sr(a, r, t);\n    if (n[h] !== void 0)\n      return Jt(r);\n    n[h] = u;\n  } while (a = a.nextSibling);\n  return {\n    parameter: wt(i[te], r),\n    variants: n\n  };\n}, Sr = (r, t, e) => t ? ir(r || \"\", e) : { variants: { other: r } };\nfunction gs(r) {\n  const t = [];\n  let e = r.firstChild;\n  for (; e; )\n    t.push(e), e = e.nextSibling;\n  return t;\n}\nconst br = (r) => {\n  let t;\n  try {\n    t = Ft.configure({ strict: !0 }).parse(r);\n  } catch {\n    return;\n  }\n  function e(l) {\n    return r.substring(l.from, l.to);\n  }\n  function s(l) {\n    const a = gs(l).find(\n      (h) => h.type.id === ze\n    );\n    return a ? e(a) : void 0;\n  }\n  function i(l) {\n    const a = gs(l).find((h) => h.type.id === te);\n    return a ? e(a) : void 0;\n  }\n  const n = t.cursor();\n  let o = !1;\n  do {\n    const l = n.node;\n    switch (l.type.id) {\n      case hi: {\n        if (s(l) === \"plural\")\n          return i(l);\n        o = !1;\n        break;\n      }\n      default:\n        o = !0;\n        break;\n    }\n  } while (n.next(o));\n}, rr = [\n  \"zero\",\n  \"one\",\n  \"two\",\n  \"few\",\n  \"many\",\n  \"other\"\n], nr = (r) => {\n  try {\n    return new Intl.PluralRules(r).resolvedOptions().pluralCategories;\n  } catch {\n    return rr;\n  }\n}, or = (r, t) => {\n  try {\n    return new Intl.PluralRules(r).select(t);\n  } catch {\n    return \"other\";\n  }\n}, lr = [6, 7, 8, 11, 20, 21, 1e6, 0.5, 0.1, 0], ar = [0, 2, 3, 4, 6], hr = [10, 11, 20, 100, 0, 0, 0.1, 2, 3, 4], ur = [\n  \"zero\",\n  \"one\",\n  \"two\",\n  \"few\",\n  \"many\",\n  \"other\"\n], xr = (r) => {\n  const t = new Set(nr(r));\n  return ur.filter((e) => t.has(e));\n}, ct = (r, t, e) => e.find((s) => or(t, s) === r), kr = (r, t) => {\n  switch (t) {\n    case \"zero\":\n      return ct(\"zero\", r, [0]);\n    case \"one\":\n      return ct(\"one\", r, [1]);\n    case \"two\":\n      return ct(\"two\", r, [2]);\n    case \"few\":\n      return ct(\"few\", r, ar);\n    case \"many\":\n      return ct(\"many\", r, lr);\n    case \"other\":\n      return ct(\"other\", r, hr);\n  }\n  const e = Number(t.substring(1));\n  return Number.isNaN(e) ? void 0 : e;\n}, yr = (r) => {\n  const t = [\n    \"ar\",\n    \"arc\",\n    \"dv\",\n    \"fa\",\n    \"ha\",\n    \"he\",\n    \"khw\",\n    \"ks\",\n    \"ku\",\n    \"ps\",\n    \"ur\",\n    \"yi\"\n  ], e = r.replace(/^([a-zA-Z]+)(.*?)$/, \"$1\");\n  return t.indexOf(e) > -1 ? \"rtl\" : \"ltr\";\n};\nexport {\n  pr as PlaceholderPlugin,\n  jr as TolgeeHighlight,\n  Zi as checkParamNameIsValid,\n  Or as generatePlaceholdersStyle,\n  br as getFirstPluralParameter,\n  yr as getLanguageDirection,\n  mi as getPlaceholders,\n  nr as getPluralRules,\n  xr as getPluralVariants,\n  Sr as getTolgeeFormat,\n  ir as getTolgeePlurals,\n  kr as getVariantExample,\n  gr as htmlIsolatesPlugin,\n  or as selectPluralRule,\n  mr as tolgeeFormatGenerateIcu,\n  Ft as tolgeeParser,\n  Ur as tolgeeSyntax\n};\n","export const sleep = (ms: number) =>\n  new Promise((resolve) => setTimeout(resolve, ms));\n","import { createContext as createContext$1, useContext as useContext$1, useReducer, createElement, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { unstable_runWithPriority, unstable_NormalPriority } from 'scheduler';\nimport { unstable_batchedUpdates } from 'react-dom';\n\nconst CONTEXT_VALUE = Symbol();\nconst ORIGINAL_PROVIDER = Symbol();\nconst isSSR = typeof window === 'undefined' || /ServerSideRendering/.test(window.navigator && window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\n// for preact that doesn't have runWithPriority\nconst runWithNormalPriority = unstable_runWithPriority ? thunk => {\n  try {\n    unstable_runWithPriority(unstable_NormalPriority, thunk);\n  } catch (e) {\n    if (e.message === 'Not implemented.') {\n      thunk();\n    } else {\n      throw e;\n    }\n  }\n} : thunk => thunk();\nconst createProvider = ProviderOrig => {\n  const ContextProvider = ({\n    value,\n    children\n  }) => {\n    const valueRef = useRef(value);\n    const versionRef = useRef(0);\n    const [resolve, setResolve] = useState(null);\n    if (resolve) {\n      resolve(value);\n      setResolve(null);\n    }\n    const contextValue = useRef();\n    if (!contextValue.current) {\n      const listeners = new Set();\n      const update = (thunk, options) => {\n        unstable_batchedUpdates(() => {\n          versionRef.current += 1;\n          const action = {\n            n: versionRef.current\n          };\n          if (options != null && options.suspense) {\n            action.n *= -1; // this is intentional to make it temporary version\n            action.p = new Promise(r => {\n              setResolve(() => v => {\n                action.v = v;\n                delete action.p;\n                r(v);\n              });\n            });\n          }\n          listeners.forEach(listener => listener(action));\n          thunk();\n        });\n      };\n      contextValue.current = {\n        [CONTEXT_VALUE]: {\n          /* \"v\"alue     */v: valueRef,\n          /* versio\"n\"   */n: versionRef,\n          /* \"l\"isteners */l: listeners,\n          /* \"u\"pdate    */u: update\n        }\n      };\n    }\n    useIsomorphicLayoutEffect(() => {\n      valueRef.current = value;\n      versionRef.current += 1;\n      runWithNormalPriority(() => {\n        contextValue.current[CONTEXT_VALUE].l.forEach(listener => {\n          listener({\n            n: versionRef.current,\n            v: value\n          });\n        });\n      });\n    }, [value]);\n    return createElement(ProviderOrig, {\n      value: contextValue.current\n    }, children);\n  };\n  return ContextProvider;\n};\nconst identity = x => x;\n/**\n * This creates a special context for `useContextSelector`.\n *\n * @example\n * import { createContext } from 'use-context-selector';\n *\n * const PersonContext = createContext({ firstName: '', familyName: '' });\n */\nfunction createContext(defaultValue) {\n  const context = createContext$1({\n    [CONTEXT_VALUE]: {\n      /* \"v\"alue     */v: {\n        current: defaultValue\n      },\n      /* versio\"n\"   */n: {\n        current: -1\n      },\n      /* \"l\"isteners */l: new Set(),\n      /* \"u\"pdate    */u: f => f()\n    }\n  });\n  context[ORIGINAL_PROVIDER] = context.Provider;\n  context.Provider = createProvider(context.Provider);\n  delete context.Consumer; // no support for Consumer\n  return context;\n}\n/**\n * This hook returns context selected value by selector.\n *\n * It will only accept context created by `createContext`.\n * It will trigger re-render if only the selected value is referentially changed.\n *\n * The selector should return referentially equal result for same input for better performance.\n *\n * @example\n * import { useContextSelector } from 'use-context-selector';\n *\n * const firstName = useContextSelector(PersonContext, state => state.firstName);\n */\nfunction useContextSelector(context, selector) {\n  const contextValue = useContext$1(context)[CONTEXT_VALUE];\n  if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n    if (!contextValue) {\n      throw new Error('useContextSelector requires special context');\n    }\n  }\n  const {\n    /* \"v\"alue     */v: {\n      current: value\n    },\n    /* versio\"n\"   */n: {\n      current: version\n    },\n    /* \"l\"isteners */l: listeners\n  } = contextValue;\n  const selected = selector(value);\n  const [state, dispatch] = useReducer((prev, action) => {\n    if (!action) {\n      // case for `dispatch()` below\n      return [value, selected];\n    }\n    if ('p' in action) {\n      throw action.p;\n    }\n    if (action.n === version) {\n      if (Object.is(prev[1], selected)) {\n        return prev; // bail out\n      }\n      return [value, selected];\n    }\n    try {\n      if ('v' in action) {\n        if (Object.is(prev[0], action.v)) {\n          return prev; // do not update\n        }\n        const nextSelected = selector(action.v);\n        if (Object.is(prev[1], nextSelected)) {\n          return prev; // do not update\n        }\n        return [action.v, nextSelected];\n      }\n    } catch (e) {\n      // ignored (stale props or some other reason)\n    }\n    return [...prev]; // schedule update\n  }, [value, selected]);\n  if (!Object.is(state[1], selected)) {\n    // schedule re-render\n    // this is safe because it's self contained\n    dispatch();\n  }\n  useIsomorphicLayoutEffect(() => {\n    listeners.add(dispatch);\n    return () => {\n      listeners.delete(dispatch);\n    };\n  }, [listeners]);\n  return state[1];\n}\n/**\n * This hook returns the entire context value.\n * Use this instead of React.useContext for consistent behavior.\n *\n * @example\n * import { useContext } from 'use-context-selector';\n *\n * const person = useContext(PersonContext);\n */\nfunction useContext(context) {\n  return useContextSelector(context, identity);\n}\n/**\n * This hook returns an update function that accepts a thunk function\n *\n * Use this for a function that will change a value in\n * concurrent rendering in React 18.\n * Otherwise, there's no need to use this hook.\n *\n * @example\n * import { useContextUpdate } from 'use-context-selector';\n *\n * const update = useContextUpdate();\n *\n * // Wrap set state function\n * update(() => setState(...));\n *\n * // Experimental suspense mode\n * update(() => setState(...), { suspense: true });\n */\nfunction useContextUpdate(context) {\n  const contextValue = useContext$1(context)[CONTEXT_VALUE];\n  if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n    if (!contextValue) {\n      throw new Error('useContextUpdate requires special context');\n    }\n  }\n  const {\n    u: update\n  } = contextValue;\n  return update;\n}\n/**\n * This is a Provider component for bridging multiple react roots\n *\n * @example\n * const valueToBridge = useBridgeValue(PersonContext);\n * return (\n *   <Renderer>\n *     <BridgeProvider context={PersonContext} value={valueToBridge}>\n *       {children}\n *     </BridgeProvider>\n *   </Renderer>\n * );\n */\nconst BridgeProvider = ({\n  context,\n  value,\n  children\n}) => {\n  const {\n    [ORIGINAL_PROVIDER]: ProviderOrig\n  } = context;\n  if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n    if (!ProviderOrig) {\n      throw new Error('BridgeProvider requires special context');\n    }\n  }\n  return createElement(ProviderOrig, {\n    value\n  }, children);\n};\n/**\n * This hook return a value for BridgeProvider\n */\nconst useBridgeValue = context => {\n  const bridgeValue = useContext$1(context);\n  if (typeof process === 'object' && process.env.NODE_ENV !== 'production') {\n    if (!bridgeValue[CONTEXT_VALUE]) {\n      throw new Error('useBridgeValue requires special context');\n    }\n  }\n  return bridgeValue;\n};\n\nexport { BridgeProvider, createContext, useBridgeValue, useContext, useContextSelector, useContextUpdate };\n//# sourceMappingURL=index.modern.mjs.map\n","import {\n  useMemo,\n  useRef,\n  createContext as createRegularContext,\n  useContext,\n} from 'react';\nimport { createContext, useContextSelector } from 'use-context-selector';\n\ntype SelectorType<StateType, ReturnType> = (state: StateType) => ReturnType;\n\nexport const createProvider = <StateType, Actions, ProviderProps>(\n  controller: (props: ProviderProps) => [state: StateType, actions: Actions]\n) => {\n  const StateContext = createContext<StateType>(null as any);\n  const DispatchContext = createRegularContext<Actions>(null as any);\n\n  const Provider = ({\n    children,\n    ...props\n  }: React.PropsWithChildren<ProviderProps>) => {\n    const [state, _actions] = controller(props as any);\n    const actionsRef = useRef(_actions);\n\n    actionsRef.current = _actions;\n\n    // stable actions\n    const actions = useMemo(() => {\n      const result = {};\n      Object.keys(actionsRef.current as any).map((key) => {\n        // @ts-ignore\n        result[key] = (...args) => actionsRef.current[key]?.(...args);\n      });\n      return result as Actions;\n    }, [actionsRef]);\n\n    return (\n      <StateContext.Provider value={state}>\n        <DispatchContext.Provider value={actions}>\n          {children}\n        </DispatchContext.Provider>\n      </StateContext.Provider>\n    );\n  };\n\n  const useActions = () => useContext(DispatchContext);\n  const useStateContext = function <SelectorReturn>(\n    selector: SelectorType<StateType, SelectorReturn>\n  ) {\n    return useContextSelector(StateContext, selector);\n  };\n\n  return [Provider, useActions, useStateContext] as const;\n};\n","import { components } from '../client/apiSchema.generated';\n\ntype LanguageModel = components['schemas']['LanguageModel'];\n\nexport const putBaseLangFirst = (languages: LanguageModel[] | undefined) => {\n  const base = languages?.find((l) => l.base);\n  if (base) {\n    return [base, ...(languages || []).filter((val) => val !== base)];\n  }\n  return languages;\n};\n\nexport const putBaseLangFirstTags = (strings: Array<string>, base?: string) => {\n  if (base && strings.includes(base)) {\n    return [base, ...strings.filter((val) => val !== base)];\n  }\n  return strings;\n};\n","import { components } from './apiSchema.generated';\n\ntype ErrorResponseTypedCode =\n  components['schemas']['ErrorResponseTyped']['code'];\n\ntype ErrorCustomStatus =\n  | 'fetch_error'\n  | 'api_url_not_specified'\n  | 'api_key_not_specified'\n  | 'api_url_not_valid'\n  | 'permissions_not_sufficient_to_edit';\n\nexport type ErrorStatusCode = ErrorResponseTypedCode | ErrorCustomStatus;\n\nfunction getErrorMessage(\n  code: ErrorStatusCode,\n  status?: number | undefined,\n  params?: string[] | undefined\n) {\n  if (status) {\n    return `${status}: ${code}`;\n  }\n  return code;\n}\n\nexport class HttpError extends Error {\n  constructor(\n    public code: ErrorStatusCode,\n    public status?: number,\n    public params?: string[]\n  ) {\n    super(getErrorMessage(code, status, params));\n\n    // Set the prototype explicitly.\n    Object.setPrototypeOf(this, HttpError.prototype);\n  }\n}\n","export function isUrlValid(url: string) {\n  try {\n    const result = new URL(url);\n    return result instanceof URL;\n  } catch (e) {\n    return false;\n  }\n}\n","import { createFetchFunction } from '@jiotranslate/core-beta';\nimport { getProjectIdFromApiKey } from '../../tools/decodeApiKey';\nimport { paths } from './apiSchema.generated';\nimport { GlobalOptions } from './QueryProvider';\nimport { RequestParamsType, ResponseContent } from './types';\nimport { HttpError } from './HttpError';\nimport { isUrlValid } from '../tools/validateUrl';\n\nconst errorFromResponse = (status: number, body: any) => {\n  if (body?.code) {\n    return new HttpError(body.code, status, body.params);\n  } else {\n    return new HttpError('fetch_error', status);\n  }\n};\n\nconst fetchFn = createFetchFunction();\n\ntype Params = {\n  [k: string]: string | string[] | null | undefined | Params;\n};\n\nasync function getResObject(r: Response) {\n  const textBody = await r.text();\n  try {\n    return JSON.parse(textBody);\n  } catch (e) {\n    throw new HttpError('fetch_error');\n  }\n}\n\nconst flattenParams = (\n  params: Params | null | undefined\n): Record<string, string | string[]> => {\n  if (params) {\n    return Object.entries(params).reduce(\n      (acc, [key, value]) =>\n        Array.isArray(value) || typeof value !== 'object'\n          ? { ...acc, [key]: value }\n          : { ...acc, ...flattenParams(value) },\n      {}\n    );\n  } else {\n    return {};\n  }\n};\n\nfunction buildQuery(object: { [key: string]: any }): string {\n  return Object.keys(object)\n    .filter((k) => !!object[k])\n    .map((k) => {\n      if (Array.isArray(object[k])) {\n        return object[k]\n          .map((v: any) => encodeURIComponent(k) + '=' + encodeURIComponent(v))\n          .join('&');\n      } else {\n        return encodeURIComponent(k) + '=' + encodeURIComponent(object[k]);\n      }\n    })\n    .join('&');\n}\n\nasync function customFetch(\n  input: RequestInfo,\n  options: GlobalOptions,\n  init?: RequestInit\n) {\n  if (options.apiUrl === undefined) {\n    throw new HttpError('api_url_not_specified');\n  }\n  if (!isUrlValid(options.apiUrl)) {\n    throw new HttpError('api_url_not_valid');\n  }\n  if (options.apiKey === undefined) {\n    throw new HttpError('api_key_not_specified');\n  }\n\n  init = init || {};\n  init.headers = init.headers || {};\n  init.headers = {\n    ...init.headers,\n    'X-API-Key': options.apiKey,\n  };\n\n  return fetchFn(options.apiUrl + input, init).then(async (r) => {\n    if (!r.ok) {\n      const data = await getResObject(r);\n      throw errorFromResponse(r.status, data);\n    }\n    const result = await getResObject(r);\n    if (typeof result === 'object' && result !== null) {\n      result._internal = {\n        version: r.headers.get('X-Tolgee-Version'),\n      };\n    }\n    return result;\n  });\n}\n\nexport const addProjectIdToUrl = (url: string) => {\n  return url.replace('/projects/', '/projects/{projectId}/');\n};\n\nexport async function client<\n  Url extends keyof Paths,\n  Method extends keyof Paths[Url],\n  Paths = paths,\n>(\n  url: Url,\n  method: Method,\n  request: RequestParamsType<Url, Method, Paths>,\n  options: GlobalOptions\n) {\n  const pathParams = (request as any)?.path || {};\n  let urlResult = url as string;\n\n  const projectId = getProjectIdFromApiKey(options.apiKey) || options.projectId;\n  if (projectId !== undefined) {\n    pathParams.projectId = projectId;\n    urlResult = addProjectIdToUrl(urlResult);\n  }\n\n  if (pathParams) {\n    Object.entries(pathParams).forEach(([key, value]) => {\n      urlResult = urlResult.replace(`{${key}}`, value as any);\n    });\n  }\n\n  const formData = request?.content?.['multipart/form-data'] as Record<\n    string,\n    unknown\n  >;\n  let body: FormData | undefined = undefined;\n  if (formData) {\n    body = new FormData();\n    Object.entries(formData).forEach(([key, value]) => {\n      if (Array.isArray(value)) {\n        let fileName: undefined | string = undefined;\n        if (Object.prototype.toString.call(value) === '[object File]') {\n          fileName = (value as any as File).name;\n        }\n\n        value.forEach((item) => body?.append(key, item as any, fileName));\n        return;\n      }\n      body?.append(key, value as any);\n    });\n  }\n\n  const jsonBody = JSON.stringify(request?.content?.['application/json']);\n\n  const queryParams = request?.query as any;\n  let queryString = '';\n\n  const params = flattenParams(queryParams);\n  const query = buildQuery(params);\n  if (query) {\n    queryString = '?' + query;\n  }\n\n  return customFetch(urlResult + queryString, options, {\n    method: method as string,\n    body: body || jsonBody,\n    headers: jsonBody\n      ? {\n          'Content-Type': 'application/json',\n        }\n      : undefined,\n  }) as Promise<ResponseContent<Url, Method, Paths>>;\n}\n","import { useCallback, useContext } from 'react';\nimport {\n  UseQueryOptions,\n  useQuery,\n  useQueryClient,\n  useMutation,\n  Query,\n  QueryClient,\n  UseMutationOptions,\n  MutationOptions,\n} from 'react-query';\nimport { paths } from './apiSchema.generated';\nimport { client } from './client';\nimport { QueryContext } from './QueryProvider';\nimport { RequestParamsType, ResponseContent } from './types';\nimport { HttpError } from './HttpError';\n\nexport type QueryProps<\n  Url extends keyof Paths,\n  Method extends keyof Paths[Url],\n  Paths = paths,\n> = {\n  url: Url;\n  method: Method;\n  fetchOptions?: IdleRequestOptions;\n  options?: UseQueryOptions<ResponseContent<Url, Method, Paths>>;\n} & RequestParamsType<Url, Method, Paths>;\n\nexport const useApiQuery = <\n  Url extends keyof Paths,\n  Method extends keyof Paths[Url],\n  Paths = paths,\n>(\n  props: QueryProps<Url, Method, Paths>\n) => {\n  const { url, method, options, ...request } = props;\n\n  const globalOptions = useContext(QueryContext);\n\n  return useQuery<ResponseContent<Url, Method, Paths>, HttpError>(\n    [url, (request as any)?.path, (request as any)?.query],\n    () => client(url, method, request as any, globalOptions),\n    options\n  );\n};\n\nexport type MutationProps<\n  Url extends keyof Paths,\n  Method extends keyof Paths[Url],\n  Paths = paths,\n> = {\n  url: Url;\n  method: Method;\n  fetchOptions?: IdleRequestOptions;\n  options?: UseMutationOptions<\n    ResponseContent<Url, Method, Paths>,\n    any,\n    RequestParamsType<Url, Method, Paths>\n  >;\n  invalidatePrefix?: string;\n};\n\nexport const useApiMutation = <\n  Url extends keyof Paths,\n  Method extends keyof Paths[Url],\n  Paths = paths,\n>(\n  props: MutationProps<Url, Method, Paths>\n) => {\n  const queryClient = useQueryClient();\n  const { url, method, options, invalidatePrefix } = props;\n  const globalOptions = useContext(QueryContext);\n  const mutation = useMutation<\n    ResponseContent<Url, Method, Paths>,\n    HttpError,\n    RequestParamsType<Url, Method, Paths>\n  >(\n    (request) =>\n      client<Url, Method, Paths>(url, method, request, globalOptions),\n    options\n  );\n\n  // inject custom onSuccess\n  const customOptions = (options: MutationOptions<any, any, any, any>) => ({\n    ...options,\n    onSuccess: (...args: any) => {\n      if (invalidatePrefix !== undefined) {\n        invalidateUrlPrefix(queryClient, invalidatePrefix);\n      }\n      // @ts-ignore\n      options?.onSuccess?.(...args);\n    },\n  });\n\n  const mutate = useCallback<typeof mutation.mutate>(\n    (variables, options) => {\n      return mutation.mutate(variables, customOptions(options as any));\n    },\n    [mutation.mutate]\n  );\n\n  const mutateAsync = useCallback<typeof mutation.mutateAsync>(\n    (variables, options) => {\n      return mutation.mutateAsync(variables, customOptions(options as any));\n    },\n    [mutation.mutateAsync]\n  );\n\n  return { ...mutation, mutate, mutateAsync };\n};\n\nexport const matchUrlPrefix = (prefix: string) => {\n  return {\n    predicate: (query: Query) => {\n      return (query.queryKey[0] as string)?.startsWith(prefix);\n    },\n  };\n};\n\nexport const invalidateUrlPrefix = (queryClient: QueryClient, prefix: string) =>\n  queryClient.invalidateQueries(matchUrlPrefix(prefix));\n","import {\n  ChangeTranslationInterface,\n  KeyPosition,\n} from '@jiotranslate/core-beta';\n\nimport { KeyInScreenshot } from './useGallery';\nimport {\n  MAX_LANGUAGES_SELECTED,\n  PREFERRED_LANGUAGES_LOCAL_STORAGE_KEY,\n} from '../../../constants';\n\nexport function getPreferredLanguages(): string[] {\n  try {\n    return JSON.parse(\n      localStorage.getItem(PREFERRED_LANGUAGES_LOCAL_STORAGE_KEY) || ''\n    );\n  } catch {\n    return [];\n  }\n}\n\nexport function setPreferredLanguages(languages: string[]) {\n  localStorage.setItem(\n    PREFERRED_LANGUAGES_LOCAL_STORAGE_KEY,\n    JSON.stringify(languages)\n  );\n}\n\nexport function getInitialLanguages(available: string[]) {\n  const preferred = getPreferredLanguages();\n  let langs = preferred.filter((l) => available.includes(l));\n  if (langs.length === 0) {\n    langs = available;\n  }\n  return langs.slice(0, MAX_LANGUAGES_SELECTED);\n}\n\nexport const changeInTolgeeCache = (\n  key: string,\n  ns: string | undefined,\n  values: [language: string, value: string][],\n  changeTranslation: ChangeTranslationInterface\n) => {\n  const changers = values\n    .filter(([_, value]) => Boolean(value))\n    .map(([language, value]) =>\n      changeTranslation(\n        {\n          language,\n          namespace: ns,\n        },\n        key,\n        value\n      )\n    );\n  return { revert: () => changers.forEach((ch) => ch.revert()) };\n};\n\nexport function mapPosition({ position }: KeyInScreenshot) {\n  return {\n    x: position!.x,\n    y: position!.y,\n    width: position!.width,\n    height: position!.height,\n  };\n}\n\nexport function scalePositionsToImg(\n  windowSize: Size,\n  imgSize: Size,\n  positions: KeyPosition[]\n) {\n  const xChange = imgSize.width / windowSize.width;\n  const yChange = imgSize.height / windowSize.height;\n  return positions.map(({ position, ...data }) => ({\n    ...data,\n    position: {\n      x: position.x * xChange,\n      y: position.y * yChange,\n      width: position.width * xChange,\n      height: position.height * yChange,\n    },\n  }));\n}\n\nexport type Size = {\n  width: number;\n  height: number;\n};\n\nexport function getImgSize(url: string) {\n  return new Promise<Size>((resolve) => {\n    const img = document.createElement('img');\n    img.src = url;\n    img.onload = function () {\n      const width = img.width;\n      const height = img.height;\n      resolve({ width, height });\n    };\n  });\n}\n","import { KeyPosition, UiProps } from '@jiotranslate/core-beta';\nimport { useEffect, useState } from 'react';\n\nimport {\n  changeInTolgeeCache,\n  getImgSize,\n  scalePositionsToImg,\n  Size,\n} from './tools';\nimport { detectExtension, takeScreenshot } from '../../../tools/extension';\nimport { useApiMutation } from '../../client/useQueryApi';\nimport { sleep } from '../../tools/sleep';\n\nexport type KeyInScreenshot = {\n  keyId: number;\n  keyName: string;\n  keyNamespace?: string | undefined;\n  position?: {\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n  };\n};\n\nexport interface ScreenshotInterface {\n  id: number;\n  filename: string;\n  fileUrl: string;\n  width?: number | undefined;\n  height?: number | undefined;\n  createdAt?: string;\n  // is it screenshot or only uploaded image\n  justUploaded: boolean;\n  keyReferences?: KeyInScreenshot[];\n}\n\nexport const useGallery = (uiProps: UiProps) => {\n  const [pluginAvailable, setPluginAvailable] = useState<boolean | undefined>(\n    undefined\n  );\n  const [takingScreenshot, setTakingScreenshot] = useState(false);\n  const [screenshots, setScreenshots] = useState<ScreenshotInterface[]>([]);\n  const [screenshotDetail, setScreenshotDetail] =\n    useState<ScreenshotInterface | null>(null);\n\n  useEffect(() => {\n    detectExtension().then((available) => setPluginAvailable(available));\n  }, []);\n\n  const deleteImage = useApiMutation({\n    url: '/v2/image-upload/{ids}',\n    method: 'delete',\n  });\n\n  const uploadImage = useApiMutation({\n    url: '/v2/image-upload',\n    method: 'post',\n  });\n\n  const uploadScreenshot = (blob: Blob, size: Size, positions: KeyPosition[]) =>\n    uploadImage.mutateAsync(\n      {\n        content: { 'multipart/form-data': { image: blob as any } },\n      },\n      {\n        onSuccess(data) {\n          setScreenshots((screenshots) => [\n            ...screenshots,\n            {\n              ...data,\n              ...size,\n              keyReferences: positions.map((ref) => ({ ...ref, keyId: -1 })),\n              justUploaded: true,\n            },\n          ]);\n        },\n      }\n    );\n\n  async function handleUploadImages(files: File[]) {\n    await Promise.all(\n      files.map(async (content) => {\n        const url = URL.createObjectURL(content);\n        const size = await getImgSize(url);\n        await uploadScreenshot(content, size, []);\n      })\n    );\n  }\n\n  async function handleTakeScreenshot(\n    key: string,\n    ns: string,\n    changes: [language: string, value: string][]\n  ) {\n    setTakingScreenshot(true);\n    const { revert } = changeInTolgeeCache(\n      key,\n      ns,\n      changes,\n      uiProps.changeTranslation\n    );\n    await sleep(400);\n    let screenshot: string;\n    try {\n      screenshot = await takeScreenshot();\n    } catch (e) {\n      // eslint-disable-next-line no-console\n      console.error(e);\n      return;\n    } finally {\n      revert();\n      setTakingScreenshot(false);\n    }\n\n    const positions = uiProps.findPositions(key, ns);\n    const screenSize = { width: window.innerWidth, height: window.innerHeight };\n    const imgSize = await getImgSize(screenshot);\n    const blob = await fetch(screenshot).then((r) => r.blob());\n\n    // on hdpi screens, the screenshot can be different than the window size,\n    // so we need to scale the coordinates accordingly\n    const scaledPositions = scalePositionsToImg(screenSize, imgSize, positions);\n\n    uploadScreenshot(blob, imgSize, scaledPositions);\n  }\n\n  function handleRemoveScreenshot(id: number) {\n    const screenshot = screenshots.find((sc) => sc.id === id);\n    if (screenshot?.justUploaded) {\n      deleteImage.mutate({ path: { ids: [screenshot.id] } });\n    }\n    setScreenshots(screenshots.filter((sc) => sc.id !== id));\n  }\n\n  function deleteImages(ids: number[]) {\n    deleteImage.mutate({ path: { ids } });\n  }\n\n  return {\n    error: deleteImage.error || uploadImage.error,\n    screenshotsUploading: uploadImage.isLoading,\n    takingScreenshot,\n    screenshots,\n    setScreenshots,\n    screenshotDetail,\n    setScreenshotDetail,\n    handleUploadImages,\n    handleTakeScreenshot,\n    handleRemoveScreenshot,\n    deleteImages,\n    canTakeScreenshots: pluginAvailable,\n  };\n};\n","const SEMVER_REGEX = /^v[0-9]+\\.[0-9]+\\.[0-9]+$/;\n\nexport const checkPlatformVersion = (\n  requiredV: string,\n  currentV: string | undefined\n) => {\n  if (!currentV || !SEMVER_REGEX.test(currentV)) {\n    return undefined;\n  }\n  const result = requiredV.localeCompare(currentV, 'en', {\n    numeric: true,\n    sensitivity: 'base',\n  });\n\n  if (result > 0) {\n    return new Error(\n      `Requires minimal platform version ${requiredV} (got ${currentV})`\n    );\n  }\n  return undefined;\n};\n","export type KeyInfo = {\n  keyName: string;\n  keyNamespace?: string;\n};\n\nfunction limitPositions(data: KeyInfo[], current: KeyInfo) {\n  const index =\n    data.findIndex(\n      (item) =>\n        item.keyName === current.keyName &&\n        (item.keyNamespace || undefined) === (current.keyNamespace || undefined)\n    ) || 0;\n\n  // we are working with window of 100 translations (+50 and -50)\n  let first = index - 50;\n  let last = index + 50;\n\n  if (first < 0) {\n    // adjust window to zero\n    last = last + (0 - first);\n    first = 0;\n  }\n  if (last > data.length) {\n    // adjust window to last item\n    first = first - (last - data.length);\n    last = data.length;\n  }\n  // readjust first if it is negative\n  if (first < 0) {\n    first = 0;\n  }\n  return data.slice(first, last);\n}\n\nexport function limitSurroundingKeys(positions: KeyInfo[], current: KeyInfo) {\n  const surroundingKeys = limitPositions(positions, current);\n  return surroundingKeys.map((val) => ({\n    keyName: val.keyName,\n    namespace: val.keyNamespace || undefined,\n  }));\n}\n","export type StateType = 'UNTRANSLATED' | 'TRANSLATED' | 'REVIEWED' | 'DISABLED';\nexport type StateInType = Exclude<StateType, 'UNTRANSLATED' | 'DISABLED'>;\n\ntype StateStruct = Record<\n  StateType,\n  {\n    name: string;\n    color: string;\n    next: StateInType | null;\n  }\n>;\n\nexport const TRANSLATION_STATES: StateStruct = {\n  DISABLED: {\n    name: 'Disabled',\n    color: '#7e7e7e',\n    next: null,\n  },\n  UNTRANSLATED: {\n    name: 'Untranslated',\n    color: '#C4C4C4',\n    next: null,\n  },\n  TRANSLATED: {\n    name: 'Translated',\n    color: '#FFCE00',\n    next: 'REVIEWED',\n  },\n  REVIEWED: {\n    name: 'Reviewed',\n    color: '#17AD18',\n    next: 'TRANSLATED',\n  },\n};\n\nexport const STATES_FOR_UPDATE = ['REVIEWED', 'TRANSLATED'];\n","export function isAuthorizedTo(scope: string, scopes: string[] | undefined) {\n  return Boolean(scopes?.includes(scope));\n}\n\nexport const isLanguagePermitted = (\n  languageId: number | undefined,\n  permittedLanguages: number[] | undefined\n) => {\n  if (!permittedLanguages?.length) {\n    return true;\n  }\n  return permittedLanguages.includes(languageId as number);\n};\n","import { useMemo } from 'react';\n\nimport { components } from '../../client/apiSchema.generated';\nimport { isAuthorizedTo, isLanguagePermitted } from '../../tools/permissions';\n\ntype ApiKeyPermissionsModel = components['schemas']['ApiKeyPermissionsModel'];\ntype LanguageModel = components['schemas']['LanguageModel'];\n\nexport const getComputedPermissions = (\n  permissions: ApiKeyPermissionsModel | undefined,\n  keyExists: boolean | undefined,\n  availableLanguages: LanguageModel[] | undefined\n) => {\n  const has = (scope: string) => isAuthorizedTo(scope, permissions?.scopes);\n\n  const canCreateKey = has('keys.create');\n\n  // if key doesn't exist and we don't have permission to create it's useless to change anything in the form\n  const keyCreationOk = keyExists || canCreateKey;\n\n  const canEditTranslations = has('translations.edit') && keyCreationOk;\n  const canEditStates = has('translations.state-edit') && keyCreationOk;\n  const canEditTags = has('keys.edit') && keyCreationOk;\n  const canEditPlural = has('keys.edit') && keyCreationOk;\n  const canViewScreenshots = has('screenshots.view');\n  const canUploadScreenshots = has('screenshots.upload') && keyCreationOk;\n  const canDeleteScreenshots = has('screenshots.delete') && keyCreationOk;\n  const canSendBigMeta = has('translations.edit');\n\n  const canSubmitForm =\n    canEditTranslations ||\n    canEditStates ||\n    canEditTags ||\n    canUploadScreenshots ||\n    canDeleteScreenshots;\n\n  const getLanguageId = (language: string) => {\n    return availableLanguages?.find((l) => l.tag === language)?.id;\n  };\n\n  const canEditTranslation = (language: string) => {\n    return (\n      canEditTranslations &&\n      isLanguagePermitted(\n        getLanguageId(language),\n        permissions?.translateLanguageIds\n      )\n    );\n  };\n\n  const canEditState = (language: string) => {\n    return (\n      canEditStates &&\n      isLanguagePermitted(\n        getLanguageId(language),\n        permissions?.stateChangeLanguageIds\n      )\n    );\n  };\n\n  return {\n    canEditTags,\n    canViewScreenshots,\n    canUploadScreenshots,\n    canDeleteScreenshots,\n    canSubmitForm,\n    canSendBigMeta,\n    canEditPlural,\n    canEditState,\n    canEditTranslation,\n  };\n};\n\nexport const useComputedPermissions = (\n  permissions: ApiKeyPermissionsModel | undefined,\n  keyExists: boolean | undefined,\n  availableLanguages: LanguageModel[] | undefined\n) => {\n  return useMemo(\n    () => getComputedPermissions(permissions, keyExists, availableLanguages),\n    [permissions, keyExists, availableLanguages]\n  );\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { UiProps } from '@jiotranslate/core-beta';\nimport {\n  TolgeeFormat,\n  getTolgeeFormat,\n  tolgeeFormatGenerateIcu,\n} from '@tginternal/editor';\n\nimport { sleep } from '../../tools/sleep';\nimport { createProvider } from '../../tools/createProvider';\nimport { putBaseLangFirst, putBaseLangFirstTags } from '../languageHelpers';\nimport { useApiMutation, useApiQuery } from '../../client/useQueryApi';\nimport {\n  changeInTolgeeCache,\n  getInitialLanguages,\n  getPreferredLanguages,\n  mapPosition,\n  setPreferredLanguages,\n} from './tools';\nimport { useGallery } from './useGallery';\nimport { checkPlatformVersion } from '../../tools/checkPlatformVersion';\nimport { limitSurroundingKeys } from '../../tools/limitSurroundingKeys';\nimport {\n  StateInType,\n  STATES_FOR_UPDATE,\n  StateType,\n} from '../State/translationStates';\nimport { useComputedPermissions } from './usePermissions';\nimport { HttpError } from '../../client/HttpError';\n\nconst MINIMAL_PLATFORM_VERSION = 'v3.42.0';\n\ntype FormTranslations = {\n  [key: string]: {\n    value: TolgeeFormat;\n    state: StateType;\n  };\n};\n\ntype DialogProps = {\n  keyName: string;\n  defaultValue: string;\n  onClose: () => void;\n  uiProps: UiProps;\n  fallbackNamespaces: string[];\n  namespace: string;\n  children: React.ReactNode;\n};\n\nexport const [DialogProvider, useDialogActions, useDialogContext] =\n  createProvider((props: DialogProps) => {\n    const [success, setSuccess] = useState<boolean>(false);\n    const [translationsForm, _setTranslationsForm] = useState<FormTranslations>(\n      {}\n    );\n\n    function setTranslation(language: string, value: TolgeeFormat) {\n      _setTranslationsForm((val) => ({\n        ...val,\n        [language]: {\n          ...val[language],\n          value,\n        },\n      }));\n    }\n\n    function setState(language: string, state: StateType) {\n      _setTranslationsForm((value) => ({\n        ...value,\n        [language]: {\n          ...value[language],\n          state,\n        },\n      }));\n    }\n\n    const [saving, setSaving] = useState(false);\n\n    const [translationsFormTouched, setTranslationsFormTouched] =\n      useState(false);\n\n    const [selectedNs, setSelectedNs] = useState<string>(props.namespace);\n    const [tags, setTags] = useState<string[]>([]);\n    const [_isPlural, setIsPlural] = useState<boolean>();\n    const [_pluralArgName, setPluralArgName] = useState<string>();\n    const [submitError, setSubmitError] = useState<HttpError>();\n\n    useEffect(() => {\n      // reset when key changes\n      setIsPlural(undefined);\n      setPluralArgName(undefined);\n    }, [props.keyName, props.namespace]);\n\n    const {\n      screenshots,\n      setScreenshots,\n      screenshotDetail,\n      setScreenshotDetail,\n      screenshotsUploading,\n      takingScreenshot,\n      handleRemoveScreenshot,\n      handleUploadImages,\n      deleteImages,\n      canTakeScreenshots,\n      error: galleryError,\n      ...galleryProps\n    } = useGallery(props.uiProps);\n\n    const scopesLoadable = useApiQuery({\n      url: '/v2/api-keys/current-permissions',\n      method: 'get',\n      query: {\n        projectId: Number(props.uiProps.projectId),\n      },\n    });\n\n    const icuPlaceholders = scopesLoadable.data?.project?.icuPlaceholders;\n    const pluralsSupported = icuPlaceholders !== undefined;\n\n    const languagesLoadable = useApiQuery({\n      url: '/v2/projects/languages',\n      method: 'get',\n      query: {\n        size: 1000,\n      },\n      options: {\n        onSuccess(data) {\n          const selectedLanguages = getInitialLanguages(\n            data._embedded?.languages?.map((l) => l.tag!) || []\n          );\n          setSelectedLanguages(selectedLanguages);\n          setPreferredLanguages(selectedLanguages);\n        },\n      },\n    });\n\n    const createKey = useApiMutation({\n      url: '/v2/projects/keys/create',\n      method: 'post',\n    });\n\n    const availableLanguages = useMemo(() => {\n      return putBaseLangFirst(languagesLoadable.data?._embedded?.languages);\n    }, [languagesLoadable.data]);\n\n    const [selectedLanguages, setSelectedLanguages] = useState<string[]>(\n      getPreferredLanguages()\n    );\n\n    const translationsLoadable = useApiQuery({\n      url: '/v2/projects/translations',\n      method: 'get',\n      query: {\n        filterKeyName: [props.keyName],\n        filterNamespace: [selectedNs],\n        languages: selectedLanguages,\n      },\n      options: {\n        enabled: Boolean(scopesLoadable.data),\n        keepPreviousData: true,\n        onSuccess(data) {\n          const result: FormTranslations = {};\n          const firstKey = data._embedded?.keys?.[0];\n          const isPlural = Boolean(firstKey?.keyIsPlural);\n          data.selectedLanguages?.forEach((lang) => {\n            const translation = firstKey?.translations[lang.tag];\n            result[lang.tag] = {\n              value: getTolgeeFormat(\n                translation?.text || '',\n                isPlural,\n                !icuPlaceholders\n              ),\n              state: translation?.state || 'UNTRANSLATED',\n            };\n          });\n          if (_pluralArgName === undefined && isPlural) {\n            setPluralArgName(firstKey?.keyPluralArgName);\n          }\n          _setTranslationsForm(result);\n          if (firstKey) {\n            setTags(firstKey?.keyTags?.map((t) => t.name) || []);\n          } else {\n            setTags(props.uiProps.tagNewKeys ?? []);\n          }\n          setScreenshots(\n            firstKey?.screenshots?.map((sc) => ({\n              ...sc,\n              filename: sc.filename!,\n              justUploaded: false,\n            })) || []\n          );\n        },\n      },\n    });\n\n    const keyData = translationsLoadable.data?._embedded?.keys?.[0];\n    const isPlural =\n      _isPlural !== undefined ? _isPlural : Boolean(keyData?.keyIsPlural);\n    const pluralArgName = isPlural ? _pluralArgName || 'value' : undefined;\n\n    const keyExists = Boolean(\n      translationsLoadable.data?._embedded?.keys?.length\n    );\n\n    const permissions = useComputedPermissions(\n      scopesLoadable.data,\n      keyExists,\n      languagesLoadable.data?._embedded?.languages\n    );\n\n    const updateKey = useApiMutation({\n      url: '/v2/projects/keys/{id}/complex-update',\n      method: 'put',\n    });\n\n    const linkToPlatform =\n      scopesLoadable.data?.projectId !== undefined\n        ? `${props.uiProps.apiUrl}/projects/${\n            scopesLoadable.data?.projectId\n          }/translations/single?key=${props.keyName}${\n            selectedNs !== undefined ? `&ns=${selectedNs}` : ''\n          }`\n        : undefined;\n\n    const [container, setContainer] = useState(\n      undefined as Element | undefined\n    );\n    const [useBrowserWindow, setUseBrowserWindow] = useState(false);\n\n    function onInputChange(key: string, value: TolgeeFormat) {\n      setSubmitError(undefined);\n      setSuccess(false);\n      setTranslationsFormTouched(true);\n      setTranslation(key, value);\n    }\n\n    function onStateChange(key: string, value: StateType) {\n      setSuccess(false);\n      setTranslationsFormTouched(true);\n      setState(key, value);\n    }\n\n    async function onSave() {\n      setSaving(true);\n      try {\n        const newTranslations = {} as Record<string, string>;\n        const newStates = {} as Record<string, StateInType>;\n        Object.entries(translationsForm).forEach(([language, value]) => {\n          const canBeTranslated = permissions.canEditTranslation(language);\n          const stateCanBeChanged = permissions.canEditState(language);\n\n          if (canBeTranslated) {\n            newTranslations[language] = tolgeeFormatGenerateIcu(\n              { ...value.value, parameter: pluralArgName },\n              !icuPlaceholders\n            );\n          }\n          if (\n            STATES_FOR_UPDATE.includes(value.state as StateInType) &&\n            keyData?.translations?.[language]?.state !== value.state &&\n            stateCanBeChanged\n          ) {\n            newStates[language] = value.state as StateInType;\n          }\n        });\n\n        const relatedKeysInOrder = permissions.canSendBigMeta\n          ? limitSurroundingKeys(props.uiProps.findPositions(), {\n              keyName: props.keyName,\n              keyNamespace: selectedNs,\n            })\n          : undefined;\n\n        await (keyData === undefined\n          ? createKey.mutateAsync({\n              content: {\n                'application/json': {\n                  name: props.keyName,\n                  namespace: selectedNs || undefined,\n                  translations: newTranslations,\n                  states: newStates,\n                  screenshots: screenshots.map((sc) => ({\n                    uploadedImageId: sc.id,\n                    positions: sc.keyReferences?.map(mapPosition),\n                  })),\n                  tags,\n                  relatedKeysInOrder,\n                  isPlural,\n                  pluralArgName,\n                },\n              },\n            })\n          : updateKey.mutateAsync({\n              content: {\n                'application/json': {\n                  name: props.keyName,\n                  namespace: selectedNs || undefined,\n                  translations: newTranslations,\n                  states: newStates,\n                  screenshotIdsToDelete: getRemovedScreenshots(),\n                  screenshotsToAdd: getJustUploadedScreenshots().map((sc) => ({\n                    uploadedImageId: sc.id,\n                    positions: sc.keyReferences?.map(mapPosition),\n                  })),\n                  tags,\n                  relatedKeysInOrder,\n                  isPlural,\n                  pluralArgName,\n                },\n              },\n              path: { id: keyData.keyId! },\n            }));\n\n        changeInTolgeeCache(\n          props.keyName,\n          selectedNs,\n          Object.entries(newTranslations),\n          props.uiProps.changeTranslation\n        );\n\n        props.uiProps.onPermanentChange({\n          key: props.keyName,\n          namespace: selectedNs,\n        });\n        translationsLoadable.refetch();\n        setSaving(false);\n        setSuccess(true);\n        if (useBrowserWindow) {\n          await sleep(2000);\n          setSuccess(false);\n        } else {\n          await sleep(400);\n          props.onClose();\n        }\n      } catch (e: any) {\n        // eslint-disable-next-line no-console\n        console.error(e);\n        setSubmitError(e);\n      } finally {\n        setSaving(false);\n        setSuccess(false);\n      }\n    }\n\n    function onClose() {\n      if (screenshotDetail) {\n        setScreenshotDetail(null);\n      } else {\n        props.onClose();\n        setUseBrowserWindow(false);\n        const uploadedScreenshots = getJustUploadedScreenshots();\n        if (uploadedScreenshots.length) {\n          deleteImages(uploadedScreenshots.map((sc) => sc.id!));\n        }\n        setScreenshots([]);\n      }\n    }\n\n    function onSelectedLanguagesChange(languages: string[]) {\n      if (languages.length) {\n        setSelectedLanguages(languages);\n        setPreferredLanguages(languages);\n      }\n    }\n\n    useEffect(() => {\n      const onKeyDown = (e: any) => {\n        if (e.key === 'Escape') {\n          onClose();\n        }\n      };\n      if (!useBrowserWindow) {\n        window.addEventListener('keydown', onKeyDown);\n        return () => {\n          window.removeEventListener('keydown', onKeyDown);\n        };\n      }\n    }, [useBrowserWindow]);\n\n    const getJustUploadedScreenshots = () => {\n      return screenshots.filter((sc) => sc.justUploaded);\n    };\n\n    const getRemovedScreenshots = () => {\n      return (\n        keyData?.screenshots\n          ?.map((sc) => sc.id)\n          .filter((scId) => !screenshots.find((sc) => sc.id === scId)) || []\n      );\n    };\n\n    function handleTakeScreenshot() {\n      galleryProps.handleTakeScreenshot(\n        props.keyName,\n        selectedNs,\n        Object.entries(translationsForm).map(\n          ([language, value]) =>\n            [\n              language,\n              tolgeeFormatGenerateIcu(value.value, !icuPlaceholders),\n            ] as [string, string]\n        )\n      );\n    }\n\n    // sets the default value for base language if is not stored already\n    useEffect(() => {\n      if (\n        props.defaultValue &&\n        availableLanguages &&\n        selectedLanguages &&\n        translationsForm &&\n        keyData\n      ) {\n        const baseLanguageDefinition = availableLanguages.find((l) => l.base);\n        if (\n          baseLanguageDefinition &&\n          selectedLanguages.includes(baseLanguageDefinition.tag!) &&\n          !translationsFormTouched\n        ) {\n          const wasBaseTranslationProvided =\n            keyData?.translations?.[baseLanguageDefinition.tag!] !== undefined;\n\n          if (!wasBaseTranslationProvided) {\n            setTranslation(\n              baseLanguageDefinition.tag!,\n              getTolgeeFormat(\n                props.defaultValue ?? '',\n                isPlural,\n                !icuPlaceholders\n              )\n            );\n          }\n        }\n      }\n    }, [\n      availableLanguages,\n      translationsForm,\n      selectedLanguages,\n      props.defaultValue,\n      keyData,\n    ]);\n\n    const versionError = checkPlatformVersion(\n      MINIMAL_PLATFORM_VERSION,\n      translationsLoadable.data?._internal?.version\n    );\n\n    const baseLang = availableLanguages?.find(({ base }) => base);\n    const loading =\n      languagesLoadable.isFetching ||\n      (translationsLoadable.isLoading && !translationsLoadable.data) ||\n      scopesLoadable.isFetching;\n    const error =\n      versionError ||\n      languagesLoadable.error ||\n      translationsLoadable.error ||\n      scopesLoadable.error ||\n      createKey.error ||\n      updateKey.error ||\n      galleryError;\n\n    const formDisabled = loading || !permissions.canSubmitForm;\n\n    const contextValue = {\n      input: props.keyName,\n      fallbackNamespaces: props.fallbackNamespaces,\n      uiProps: props.uiProps,\n      selectedNs,\n      loading,\n      saving,\n      success,\n      error,\n      availableLanguages,\n      selectedLanguages: putBaseLangFirstTags(selectedLanguages, baseLang?.tag),\n      formDisabled,\n      keyData,\n      translationsForm,\n      container,\n      useBrowserWindow,\n      takingScreenshot,\n      screenshotsUploading,\n      screenshots,\n      screenshotDetail,\n      linkToPlatform,\n      keyExists,\n      tags,\n      permissions,\n      canTakeScreenshots,\n      isPlural,\n      _pluralArgName,\n      pluralArgName,\n      pluralsSupported,\n      icuPlaceholders,\n      submitError,\n    } as const;\n\n    const actions = {\n      onInputChange,\n      onStateChange,\n      handleUploadImages,\n      handleTakeScreenshot,\n      handleRemoveScreenshot,\n      onSave,\n      onClose,\n      onSelectedLanguagesChange,\n      setContainer,\n      setUseBrowserWindow,\n      setScreenshotDetail,\n      setSelectedNs,\n      setTags,\n      setIsPlural,\n      setPluralArgName,\n    };\n\n    return [contextValue, actions];\n  });\n","const common = {\n  black: '#000',\n  white: '#fff'\n};\nexport default common;","const red = {\n  50: '#ffebee',\n  100: '#ffcdd2',\n  200: '#ef9a9a',\n  300: '#e57373',\n  400: '#ef5350',\n  500: '#f44336',\n  600: '#e53935',\n  700: '#d32f2f',\n  800: '#c62828',\n  900: '#b71c1c',\n  A100: '#ff8a80',\n  A200: '#ff5252',\n  A400: '#ff1744',\n  A700: '#d50000'\n};\nexport default red;","const purple = {\n  50: '#f3e5f5',\n  100: '#e1bee7',\n  200: '#ce93d8',\n  300: '#ba68c8',\n  400: '#ab47bc',\n  500: '#9c27b0',\n  600: '#8e24aa',\n  700: '#7b1fa2',\n  800: '#6a1b9a',\n  900: '#4a148c',\n  A100: '#ea80fc',\n  A200: '#e040fb',\n  A400: '#d500f9',\n  A700: '#aa00ff'\n};\nexport default purple;","const blue = {\n  50: '#e3f2fd',\n  100: '#bbdefb',\n  200: '#90caf9',\n  300: '#64b5f6',\n  400: '#42a5f5',\n  500: '#2196f3',\n  600: '#1e88e5',\n  700: '#1976d2',\n  800: '#1565c0',\n  900: '#0d47a1',\n  A100: '#82b1ff',\n  A200: '#448aff',\n  A400: '#2979ff',\n  A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n  50: '#e1f5fe',\n  100: '#b3e5fc',\n  200: '#81d4fa',\n  300: '#4fc3f7',\n  400: '#29b6f6',\n  500: '#03a9f4',\n  600: '#039be5',\n  700: '#0288d1',\n  800: '#0277bd',\n  900: '#01579b',\n  A100: '#80d8ff',\n  A200: '#40c4ff',\n  A400: '#00b0ff',\n  A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n  50: '#e8f5e9',\n  100: '#c8e6c9',\n  200: '#a5d6a7',\n  300: '#81c784',\n  400: '#66bb6a',\n  500: '#4caf50',\n  600: '#43a047',\n  700: '#388e3c',\n  800: '#2e7d32',\n  900: '#1b5e20',\n  A100: '#b9f6ca',\n  A200: '#69f0ae',\n  A400: '#00e676',\n  A700: '#00c853'\n};\nexport default green;","const orange = {\n  50: '#fff3e0',\n  100: '#ffe0b2',\n  200: '#ffcc80',\n  300: '#ffb74d',\n  400: '#ffa726',\n  500: '#ff9800',\n  600: '#fb8c00',\n  700: '#f57c00',\n  800: '#ef6c00',\n  900: '#e65100',\n  A100: '#ffd180',\n  A200: '#ffab40',\n  A400: '#ff9100',\n  A700: '#ff6d00'\n};\nexport default orange;","const grey = {\n  50: '#fafafa',\n  100: '#f5f5f5',\n  200: '#eeeeee',\n  300: '#e0e0e0',\n  400: '#bdbdbd',\n  500: '#9e9e9e',\n  600: '#757575',\n  700: '#616161',\n  800: '#424242',\n  900: '#212121',\n  A100: '#f5f5f5',\n  A200: '#eeeeee',\n  A400: '#bdbdbd',\n  A700: '#616161'\n};\nexport default grey;","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n  // Apply babel-plugin-transform-template-literals in loose mode\n  // loose mode is safe if we're concatenating primitives\n  // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n  /* eslint-disable prefer-template */\n  let url = 'https://mui.com/production-error/?code=' + code;\n  for (let i = 1; i < arguments.length; i += 1) {\n    // rest params over-transpile for this case\n    // eslint-disable-next-line prefer-rest-params\n    url += '&args[]=' + encodeURIComponent(arguments[i]);\n  }\n  return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n  /* eslint-enable prefer-template */\n}","export default '$$material';","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","var isDevelopment = false;\n\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\nfunction sheetForTag(tag) {\n  if (tag.sheet) {\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      return document.styleSheets[i];\n    }\n  } // this function should always return with a value\n  // TS can't understand it though so we make it stop complaining here\n\n\n  return undefined;\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  tag.setAttribute('data-s', '');\n  return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n  // Using Node instead of HTMLElement since container may be a ShadowRoot\n  function StyleSheet(options) {\n    var _this = this;\n\n    this._insertTag = function (tag) {\n      var before;\n\n      if (_this.tags.length === 0) {\n        if (_this.insertionPoint) {\n          before = _this.insertionPoint.nextSibling;\n        } else if (_this.prepend) {\n          before = _this.container.firstChild;\n        } else {\n          before = _this.before;\n        }\n      } else {\n        before = _this.tags[_this.tags.length - 1].nextSibling;\n      }\n\n      _this.container.insertBefore(tag, before);\n\n      _this.tags.push(tag);\n    };\n\n    this.isSpeedy = options.speedy === undefined ? !isDevelopment : 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.prepend = options.prepend;\n    this.insertionPoint = options.insertionPoint;\n    this.before = null;\n  }\n\n  var _proto = StyleSheet.prototype;\n\n  _proto.hydrate = function hydrate(nodes) {\n    nodes.forEach(this._insertTag);\n  };\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      this._insertTag(createStyleElement(this));\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 the ultrafast version, works across browsers\n        // the big drawback is that the css won't be editable in devtools\n        sheet.insertRule(rule, sheet.cssRules.length);\n      } catch (e) {\n      }\n    } else {\n      tag.appendChild(document.createTextNode(rule));\n    }\n\n    this.ctr++;\n  };\n\n  _proto.flush = function flush() {\n    this.tags.forEach(function (tag) {\n      var _tag$parentNode;\n\n      return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n    });\n    this.tags = [];\n    this.ctr = 0;\n  };\n\n  return StyleSheet;\n}();\n\nexport { StyleSheet };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n  var previous = 0;\n  var character = 0;\n\n  while (true) {\n    previous = character;\n    character = peek(); // &\\f\n\n    if (previous === 38 && character === 12) {\n      points[index] = 1;\n    }\n\n    if (token(character)) {\n      break;\n    }\n\n    next();\n  }\n\n  return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n  // pretend we've started with a comma\n  var index = -1;\n  var character = 44;\n\n  do {\n    switch (token(character)) {\n      case 0:\n        // &\\f\n        if (character === 38 && peek() === 12) {\n          // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n          // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n          // and when it should just concatenate the outer and inner selectors\n          // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n          points[index] = 1;\n        }\n\n        parsed[index] += identifierWithPointTracking(position - 1, points, index);\n        break;\n\n      case 2:\n        parsed[index] += delimit(character);\n        break;\n\n      case 4:\n        // comma\n        if (character === 44) {\n          // colon\n          parsed[++index] = peek() === 58 ? '&\\f' : '';\n          points[index] = parsed[index].length;\n          break;\n        }\n\n      // fallthrough\n\n      default:\n        parsed[index] += from(character);\n    }\n  } while (character = next());\n\n  return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n  return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n  if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n  // negative .length indicates that this rule has been already prefixed\n  element.length < 1) {\n    return;\n  }\n\n  var value = element.value,\n      parent = element.parent;\n  var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n  while (parent.type !== 'rule') {\n    parent = parent.parent;\n    if (!parent) return;\n  } // short-circuit for the simplest case\n\n\n  if (element.props.length === 1 && value.charCodeAt(0) !== 58\n  /* colon */\n  && !fixedElements.get(parent)) {\n    return;\n  } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n  // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n  if (isImplicitRule) {\n    return;\n  }\n\n  fixedElements.set(element, true);\n  var points = [];\n  var rules = getRules(value, points);\n  var parentRules = parent.props;\n\n  for (var i = 0, k = 0; i < rules.length; i++) {\n    for (var j = 0; j < parentRules.length; j++, k++) {\n      element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n    }\n  }\n};\nvar removeLabel = function removeLabel(element) {\n  if (element.type === 'decl') {\n    var value = element.value;\n\n    if ( // charcode for l\n    value.charCodeAt(0) === 108 && // charcode for b\n    value.charCodeAt(2) === 98) {\n      // this ignores label\n      element[\"return\"] = '';\n      element.value = '';\n    }\n  }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n  switch (hash(value, length)) {\n    // color-adjust\n    case 5103:\n      return WEBKIT + 'print-' + value + value;\n    // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n    case 5737:\n    case 4201:\n    case 3177:\n    case 3433:\n    case 1641:\n    case 4457:\n    case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n    case 5572:\n    case 6356:\n    case 5844:\n    case 3191:\n    case 6645:\n    case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n    case 6391:\n    case 5879:\n    case 5623:\n    case 6135:\n    case 4599:\n    case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n    case 4215:\n    case 6389:\n    case 5109:\n    case 5365:\n    case 5621:\n    case 3829:\n      return WEBKIT + value + value;\n    // appearance, user-select, transform, hyphens, text-size-adjust\n\n    case 5349:\n    case 4246:\n    case 4810:\n    case 6968:\n    case 2756:\n      return WEBKIT + value + MOZ + value + MS + value + value;\n    // flex, flex-direction\n\n    case 6828:\n    case 4268:\n      return WEBKIT + value + MS + value + value;\n    // order\n\n    case 6165:\n      return WEBKIT + value + MS + 'flex-' + value + value;\n    // align-items\n\n    case 5187:\n      return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n    // align-self\n\n    case 5443:\n      return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n    // align-content\n\n    case 4675:\n      return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n    // flex-shrink\n\n    case 5548:\n      return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n    // flex-basis\n\n    case 5292:\n      return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n    // flex-grow\n\n    case 6060:\n      return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n    // transition\n\n    case 4554:\n      return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n    // cursor\n\n    case 6187:\n      return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n    // background, background-image\n\n    case 5495:\n    case 3959:\n      return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n    // justify-content\n\n    case 4968:\n      return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n    // (margin|padding)-inline-(start|end)\n\n    case 4095:\n    case 3583:\n    case 4068:\n    case 2532:\n      return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n    // (min|max)?(width|height|inline-size|block-size)\n\n    case 8116:\n    case 7059:\n    case 5753:\n    case 5535:\n    case 5445:\n    case 5701:\n    case 4933:\n    case 4677:\n    case 5533:\n    case 5789:\n    case 5021:\n    case 4765:\n      // stretch, max-content, min-content, fill-available\n      if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n        // (m)ax-content, (m)in-content\n        case 109:\n          // -\n          if (charat(value, length + 4) !== 45) break;\n        // (f)ill-available, (f)it-content\n\n        case 102:\n          return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n        // (s)tretch\n\n        case 115:\n          return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n      }\n      break;\n    // position: sticky\n\n    case 4949:\n      // (s)ticky?\n      if (charat(value, length + 1) !== 115) break;\n    // display: (flex|inline-flex)\n\n    case 6444:\n      switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n        // stic(k)y\n        case 107:\n          return replace(value, ':', ':' + WEBKIT) + value;\n        // (inline-)?fl(e)x\n\n        case 101:\n          return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n      }\n\n      break;\n    // writing-mode\n\n    case 5936:\n      switch (charat(value, length + 11)) {\n        // vertical-l(r)\n        case 114:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n        // vertical-r(l)\n\n        case 108:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n        // horizontal(-)tb\n\n        case 45:\n          return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n      }\n\n      return WEBKIT + value + MS + value + value;\n  }\n\n  return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n  if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n    case DECLARATION:\n      element[\"return\"] = prefix(element.value, element.length);\n      break;\n\n    case KEYFRAMES:\n      return serialize([copy(element, {\n        value: replace(element.value, '@', '@' + WEBKIT)\n      })], callback);\n\n    case RULESET:\n      if (element.length) return combine(element.props, function (value) {\n        switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n          // :read-(only|write)\n          case ':read-only':\n          case ':read-write':\n            return serialize([copy(element, {\n              props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n            })], callback);\n          // :placeholder\n\n          case '::placeholder':\n            return serialize([copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n            }), copy(element, {\n              props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n            })], callback);\n        }\n\n        return '';\n      });\n  }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function\n  /*: EmotionCache */\ncreateCache(options\n/*: Options */\n) {\n  var key = options.key;\n\n  if (key === 'css') {\n    var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n    // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n    // note this very very intentionally targets all style elements regardless of the key to ensure\n    // that creating a cache works inside of render of a React component\n\n    Array.prototype.forEach.call(ssrStyles, function (node\n    /*: HTMLStyleElement */\n    ) {\n      // we want to only move elements which have a space in the data-emotion attribute value\n      // because that indicates that it is an Emotion 11 server-side rendered style elements\n      // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n      // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n      // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n      // will not result in the Emotion 10 styles being destroyed\n      var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n      if (dataEmotionAttribute.indexOf(' ') === -1) {\n        return;\n      }\n\n      document.head.appendChild(node);\n      node.setAttribute('data-s', '');\n    });\n  }\n\n  var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n  var inserted = {};\n  var container;\n  /* : Node */\n\n  var nodesToHydrate = [];\n\n  {\n    container = options.container || document.head;\n    Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n    // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n    document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node\n    /*: HTMLStyleElement */\n    ) {\n      var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n      for (var i = 1; i < attrib.length; i++) {\n        inserted[attrib[i]] = true;\n      }\n\n      nodesToHydrate.push(node);\n    });\n  }\n\n  var _insert;\n  /*: (\n  selector: string,\n  serialized: SerializedStyles,\n  sheet: StyleSheet,\n  shouldCache: boolean\n  ) => string | void */\n\n\n  var omnipresentPlugins = [compat, removeLabel];\n\n  {\n    var currentSheet;\n    var finalizingPlugins = [stringify, rulesheet(function (rule) {\n      currentSheet.insert(rule);\n    })];\n    var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n    var stylis = function stylis(styles) {\n      return serialize(compile(styles), serializer);\n    };\n\n    _insert = function\n      /*: void */\n    insert(selector\n    /*: string */\n    , serialized\n    /*: SerializedStyles */\n    , sheet\n    /*: StyleSheet */\n    , shouldCache\n    /*: boolean */\n    ) {\n      currentSheet = sheet;\n\n      stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n      if (shouldCache) {\n        cache.inserted[serialized.name] = true;\n      }\n    };\n  }\n\n  var cache\n  /*: EmotionCache */\n  = {\n    key: key,\n    sheet: new StyleSheet({\n      key: key,\n      container: container,\n      nonce: options.nonce,\n      speedy: options.speedy,\n      prepend: options.prepend,\n      insertionPoint: options.insertionPoint\n    }),\n    nonce: options.nonce,\n    inserted: inserted,\n    registered: {},\n    insert: _insert\n  };\n  cache.sheet.hydrate(nodesToHydrate);\n  return cache;\n};\n\nexport { createCache as default };\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 registerStyles = function registerStyles(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.registered[className] === undefined) {\n    cache.registered[className] = serialized.styles;\n  }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n  registerStyles(cache, serialized, isStringTag);\n  var className = cache.key + \"-\" + serialized.name;\n\n  if (cache.inserted[serialized.name] === undefined) {\n    var current = serialized;\n\n    do {\n      cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n      current = current.next;\n    } while (current !== undefined);\n  }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* 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 { murmur2 as default };\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 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 { unitlessKeys as default };\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 = /* #__PURE__ */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 = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n  var contentValues = ['normal', 'none', '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        throw new 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 noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\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(noComponentSelectorMessage);\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);\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  return cached !== undefined ? 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]) + \";\";\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(noComponentSelectorMessage);\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);\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+\\*\\//g;\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);\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]);\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 * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n  return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwn = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.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' ? /* #__PURE__ */createCache({\n  key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n  EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n  return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n  // $FlowFixMe\n  return /*#__PURE__*/forwardRef(function (props, ref) {\n    // the cache will never be null in the browser\n    var cache = useContext(EmotionCacheContext);\n    return func(props, cache, ref);\n  });\n};\n\nif (!isBrowser) {\n  withEmotionCache = function withEmotionCache(func) {\n    return function (props) {\n      var cache = useContext(EmotionCacheContext);\n\n      if (cache === null) {\n        // yes, we're potentially creating this on every render\n        // it doesn't actually matter though since it's only on the server\n        // so there will only every be a single render\n        // that could change in the future because of suspense and etc. but for now,\n        // this works and i don't want to optimise for a future thing that we aren't sure about\n        cache = createCache({\n          key: 'css'\n        });\n        return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n          value: cache\n        }, func(props, cache));\n      } else {\n        return func(props, cache);\n      }\n    };\n  };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n  return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n  if (typeof theme === 'function') {\n    var mergedTheme = theme(outerTheme);\n\n    if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n      throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n    }\n\n    return mergedTheme;\n  }\n\n  if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n    throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n  }\n\n  return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n  return weakMemoize(function (theme) {\n    return getTheme(outerTheme, theme);\n  });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n  var theme = React.useContext(ThemeContext);\n\n  if (props.theme !== theme) {\n    theme = createCacheWithTheme(theme)(props.theme);\n  }\n\n  return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n    value: theme\n  }, props.children);\n};\nfunction withTheme(Component) {\n  var componentName = Component.displayName || Component.name || 'Component';\n\n  var render = function render(props, ref) {\n    var theme = React.useContext(ThemeContext);\n    return /*#__PURE__*/React.createElement(Component, _extends({\n      theme: theme,\n      ref: ref\n    }, props));\n  }; // $FlowFixMe\n\n\n  var WithTheme = /*#__PURE__*/React.forwardRef(render);\n  WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n  return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n  // The match may be something like 'Object.createEmotionProps' or\n  // 'Loader.prototype.render'\n  var parts = functionName.split('.');\n  return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n  // V8\n  var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n  if (match) return getLastPart(match[1]); // Safari / Firefox\n\n  match = /^([A-Za-z0-9$.]+)@/.exec(line);\n  if (match) return getLastPart(match[1]);\n  return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n  return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n  if (!stackTrace) return undefined;\n  var lines = stackTrace.split('\\n');\n\n  for (var i = 0; i < lines.length; i++) {\n    var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n    if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n    if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n    // uppercase letter\n\n    if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n  }\n\n  return undefined;\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/react' like this: css`\" + props.css + \"`\");\n  }\n\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwn.call(props, key)) {\n      newProps[key] = props[key];\n    }\n  }\n\n  newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n  // the label hasn't already been computed\n\n  if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n    var label = getLabelFromStackTrace(new Error().stack);\n    if (label) newProps[labelPropName] = label;\n  }\n\n  return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n  var cssProp = props.css; // 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 WrappedComponent = 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, undefined, React.useContext(ThemeContext));\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  className += cache.key + \"-\" + serialized.name;\n  var newProps = {};\n\n  for (var key in props) {\n    if (hasOwn.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  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serialized: serialized,\n    isStringTag: typeof WrappedComponent === 'string'\n  }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-43c6fea0.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-43c6fea0.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.4\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.3\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.2\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n  var args = arguments;\n\n  if (props == null || !hasOwn.call(props, 'css')) {\n    // $FlowFixMe\n    return React.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 React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // 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\n\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  var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n  if (!isBrowser$1) {\n    var _ref;\n\n    var serializedNames = serialized.name;\n    var serializedStyles = serialized.styles;\n    var next = serialized.next;\n\n    while (next !== undefined) {\n      serializedNames += ' ' + next.name;\n      serializedStyles += next.styles;\n      next = next.next;\n    }\n\n    var shouldCache = cache.compat === true;\n    var rules = cache.insert(\"\", {\n      name: serializedNames,\n      styles: serializedStyles\n    }, cache.sheet, shouldCache);\n\n    if (shouldCache) {\n      return null;\n    }\n\n    return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n      __html: rules\n    }, _ref.nonce = cache.sheet.nonce, _ref));\n  } // yes, i know these hooks are used conditionally\n  // but it is based on a constant that will never change at runtime\n  // it's effectively like having two implementations and switching them out\n  // so it's not actually breaking anything\n\n\n  var sheetRef = React.useRef();\n  useInsertionEffectWithLayoutFallback(function () {\n    var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n    var sheet = new cache.sheet.constructor({\n      key: key,\n      nonce: cache.sheet.nonce,\n      container: cache.sheet.container,\n      speedy: cache.sheet.isSpeedy\n    });\n    var rehydrating = false; // $FlowFixMe\n\n    var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n    if (cache.sheet.tags.length) {\n      sheet.before = cache.sheet.tags[0];\n    }\n\n    if (node !== null) {\n      rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n      node.setAttribute('data-emotion', key);\n      sheet.hydrate([node]);\n    }\n\n    sheetRef.current = [sheet, rehydrating];\n    return function () {\n      sheet.flush();\n    };\n  }, [cache]);\n  useInsertionEffectWithLayoutFallback(function () {\n    var sheetRefCurrent = sheetRef.current;\n    var sheet = sheetRefCurrent[0],\n        rehydrating = sheetRefCurrent[1];\n\n    if (rehydrating) {\n      sheetRefCurrent[1] = false;\n      return;\n    }\n\n    if (serialized.next !== undefined) {\n      // insert keyframes\n      insertStyles(cache, serialized.next, true);\n    }\n\n    if (sheet.tags.length) {\n      // if this doesn't exist then it will be null so the style element will be appended\n      var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n      sheet.before = element;\n      sheet.flush();\n    }\n\n    cache.insert(\"\", serialized, sheet, false);\n  }, [cache, serialized.name]);\n  return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  Global.displayName = 'EmotionGlobal';\n}\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\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            if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n              console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n            }\n\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 Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serializedArr = _ref.serializedArr;\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n\n    for (var i = 0; i < serializedArr.length; i++) {\n      insertStyles(cache, serializedArr[i], false);\n    }\n  });\n\n  return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n  var hasRendered = false;\n  var serializedArr = [];\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, cache.registered);\n    serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n    registerStyles(cache, serialized, false);\n    return cache.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(cache.registered, css, classnames(args));\n  };\n\n  var content = {\n    css: css,\n    cx: cx,\n    theme: React.useContext(ThemeContext)\n  };\n  var ele = props.children(content);\n  hasRendered = true;\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n    cache: cache,\n    serializedArr: serializedArr\n  }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n  var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n  var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n  if (isBrowser && !isTestEnv) {\n    // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n    var globalContext = // $FlowIgnore\n    typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n    : isBrowser ? window : global;\n    var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n    if (globalContext[globalKey]) {\n      console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n    }\n\n    globalContext[globalKey] = true;\n  }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n  return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n  return typeof tag === 'string' && // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n  var shouldForwardProp;\n\n  if (options) {\n    var optionsShouldForwardProp = options.shouldForwardProp;\n    shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n      return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n    } : optionsShouldForwardProp;\n  }\n\n  if (typeof shouldForwardProp !== 'function' && isReal) {\n    shouldForwardProp = tag.__emotion_forwardProp;\n  }\n\n  return shouldForwardProp;\n};\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\";\n\nvar Insertion = function Insertion(_ref) {\n  var cache = _ref.cache,\n      serialized = _ref.serialized,\n      isStringTag = _ref.isStringTag;\n  registerStyles(cache, serialized, isStringTag);\n  useInsertionEffectAlwaysWithSyncFallback(function () {\n    return insertStyles(cache, serialized, isStringTag);\n  });\n\n  return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (tag === undefined) {\n      throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n    }\n  }\n\n  var isReal = tag.__emotion_real === tag;\n  var baseTag = isReal && tag.__emotion_base || tag;\n  var identifierName;\n  var targetClassName;\n\n  if (options !== undefined) {\n    identifierName = options.label;\n    targetClassName = options.target;\n  }\n\n  var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n  var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n  var shouldUseAs = !defaultShouldForwardProp('as');\n  return function () {\n    var args = arguments;\n    var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n    if (identifierName !== undefined) {\n      styles.push(\"label:\" + identifierName + \";\");\n    }\n\n    if (args[0] == null || args[0].raw === undefined) {\n      styles.push.apply(styles, args);\n    } else {\n      if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n        console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n      }\n\n      styles.push(args[0][0]);\n      var len = args.length;\n      var i = 1;\n\n      for (; i < len; i++) {\n        if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n          console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n        }\n\n        styles.push(args[i], args[0][i]);\n      }\n    } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n    var Styled = withEmotionCache(function (props, cache, ref) {\n      var FinalTag = shouldUseAs && props.as || baseTag;\n      var className = '';\n      var classInterpolations = [];\n      var mergedProps = props;\n\n      if (props.theme == null) {\n        mergedProps = {};\n\n        for (var key in props) {\n          mergedProps[key] = props[key];\n        }\n\n        mergedProps.theme = React.useContext(ThemeContext);\n      }\n\n      if (typeof props.className === 'string') {\n        className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n      } else if (props.className != null) {\n        className = props.className + \" \";\n      }\n\n      var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n      className += cache.key + \"-\" + serialized.name;\n\n      if (targetClassName !== undefined) {\n        className += \" \" + targetClassName;\n      }\n\n      var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n      var newProps = {};\n\n      for (var _key in props) {\n        if (shouldUseAs && _key === 'as') continue;\n\n        if ( // $FlowFixMe\n        finalShouldForwardProp(_key)) {\n          newProps[_key] = props[_key];\n        }\n      }\n\n      newProps.className = className;\n      newProps.ref = ref;\n      return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n        cache: cache,\n        serialized: serialized,\n        isStringTag: typeof FinalTag === 'string'\n      }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n    });\n    Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n    Styled.defaultProps = tag.defaultProps;\n    Styled.__emotion_real = Styled;\n    Styled.__emotion_base = baseTag;\n    Styled.__emotion_styles = styles;\n    Styled.__emotion_forwardProp = shouldForwardProp;\n    Object.defineProperty(Styled, 'toString', {\n      value: function value() {\n        if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n          return 'NO_COMPONENT_SELECTOR';\n        } // $FlowFixMe: coerce undefined to string\n\n\n        return \".\" + targetClassName;\n      }\n    });\n\n    Styled.withComponent = function (nextTag, nextOptions) {\n      return createStyled(nextTag, _extends({}, options, nextOptions, {\n        shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n      })).apply(void 0, styles);\n    };\n\n    return Styled;\n  };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n  // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n  newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n// prepend: true moves MUI styles to the top of the <head> so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nlet cache;\nif (typeof document === 'object') {\n  cache = createCache({\n    key: 'css',\n    prepend: true\n  });\n}\nexport default function StyledEngineProvider(props) {\n  const {\n    injectFirst,\n    children\n  } = props;\n  return injectFirst && cache ? /*#__PURE__*/_jsx(CacheProvider, {\n    value: cache,\n    children: children\n  }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * By default, the styles are injected last in the <head> element of the page.\n   * As a result, they gain more specificity than any other style sheet.\n   * If you want to override MUI's styles, set this prop.\n   */\n  injectFirst: PropTypes.bool\n} : void 0;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n  const {\n    styles,\n    defaultTheme = {}\n  } = props;\n  const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n  return /*#__PURE__*/_jsx(Global, {\n    styles: globalStyles\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n  defaultTheme: PropTypes.object,\n  styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","/**\n * @mui/styled-engine v5.15.14\n *\n * @license MIT\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 client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n  const stylesFactory = emStyled(tag, options);\n  if (process.env.NODE_ENV !== 'production') {\n    return (...styles) => {\n      const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n      if (styles.length === 0) {\n        console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n      } else if (styles.some(style => style === undefined)) {\n        console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n      }\n      return stylesFactory(...styles);\n    };\n  }\n  return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n  // Emotion attaches all the styles as `__emotion_styles`.\n  // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n  if (Array.isArray(tag.__emotion_styles)) {\n    tag.__emotion_styles = processor(tag.__emotion_styles);\n  }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n  if (typeof item !== 'object' || item === null) {\n    return false;\n  }\n  const prototype = Object.getPrototypeOf(item);\n  return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n  if (!isPlainObject(source)) {\n    return source;\n  }\n  const output = {};\n  Object.keys(source).forEach(key => {\n    output[key] = deepClone(source[key]);\n  });\n  return output;\n}\nexport default function deepmerge(target, source, options = {\n  clone: true\n}) {\n  const output = options.clone ? _extends({}, target) : target;\n  if (isPlainObject(target) && isPlainObject(source)) {\n    Object.keys(source).forEach(key => {\n      // Avoid prototype pollution\n      if (key === '__proto__') {\n        return;\n      }\n      if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n        // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n        output[key] = deepmerge(target[key], source[key], options);\n      } else if (options.clone) {\n        output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n      } else {\n        output[key] = source[key];\n      }\n    });\n  }\n  return output;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n  const breakpointsAsArray = Object.keys(values).map(key => ({\n    key,\n    val: values[key]\n  })) || [];\n  // Sort in ascending order\n  breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n  return breakpointsAsArray.reduce((acc, obj) => {\n    return _extends({}, acc, {\n      [obj.key]: obj.val\n    });\n  }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n  const {\n      // The breakpoint **start** at this value.\n      // For instance with the first breakpoint xs: [xs, sm).\n      values = {\n        xs: 0,\n        // phone\n        sm: 600,\n        // tablet\n        md: 900,\n        // small laptop\n        lg: 1200,\n        // desktop\n        xl: 1536 // large screen\n      },\n      unit = 'px',\n      step = 5\n    } = breakpoints,\n    other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n  const sortedValues = sortBreakpointsValues(values);\n  const keys = Object.keys(sortedValues);\n  function up(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (min-width:${value}${unit})`;\n  }\n  function down(key) {\n    const value = typeof values[key] === 'number' ? values[key] : key;\n    return `@media (max-width:${value - step / 100}${unit})`;\n  }\n  function between(start, end) {\n    const endIndex = keys.indexOf(end);\n    return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n  }\n  function only(key) {\n    if (keys.indexOf(key) + 1 < keys.length) {\n      return between(key, keys[keys.indexOf(key) + 1]);\n    }\n    return up(key);\n  }\n  function not(key) {\n    // handle first and last key separately, for better readability\n    const keyIndex = keys.indexOf(key);\n    if (keyIndex === 0) {\n      return up(keys[1]);\n    }\n    if (keyIndex === keys.length - 1) {\n      return down(keys[keyIndex]);\n    }\n    return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n  }\n  return _extends({\n    keys,\n    values: sortedValues,\n    up,\n    down,\n    between,\n    only,\n    not,\n    unit\n  }, other);\n}","const shape = {\n  borderRadius: 4\n};\nexport default shape;","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n  if (!item) {\n    return acc;\n  }\n  return deepmerge(acc, item, {\n    clone: false // No need to clone deep, it's way faster.\n  });\n}\nexport default merge;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n  xs: 0,\n  // phone\n  sm: 600,\n  // tablet\n  md: 900,\n  // small laptop\n  lg: 1200,\n  // desktop\n  xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n  // Sorted ASC by size. That's important.\n  // It can't be configured as it's used statically for propTypes.\n  keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n  up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n  const theme = props.theme || {};\n  if (Array.isArray(propValue)) {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return propValue.reduce((acc, item, index) => {\n      acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n      return acc;\n    }, {});\n  }\n  if (typeof propValue === 'object') {\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    return Object.keys(propValue).reduce((acc, breakpoint) => {\n      // key is breakpoint\n      if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n        const mediaKey = themeBreakpoints.up(breakpoint);\n        acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n      } else {\n        const cssKey = breakpoint;\n        acc[cssKey] = propValue[cssKey];\n      }\n      return acc;\n    }, {});\n  }\n  const output = styleFromPropValue(propValue);\n  return output;\n}\nfunction breakpoints(styleFunction) {\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const newStyleFunction = props => {\n    const theme = props.theme || {};\n    const base = styleFunction(props);\n    const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n    const extended = themeBreakpoints.keys.reduce((acc, key) => {\n      if (props[key]) {\n        acc = acc || {};\n        acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n          theme\n        }, props[key]));\n      }\n      return acc;\n    }, null);\n    return merge(base, extended);\n  };\n  newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n    xs: PropTypes.object,\n    sm: PropTypes.object,\n    md: PropTypes.object,\n    lg: PropTypes.object,\n    xl: PropTypes.object\n  }) : {};\n  newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n  return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n  var _breakpointsInput$key;\n  const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n    const breakpointStyleKey = breakpointsInput.up(key);\n    acc[breakpointStyleKey] = {};\n    return acc;\n  }, {});\n  return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n  return breakpointKeys.reduce((acc, key) => {\n    const breakpointOutput = acc[key];\n    const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n    if (isBreakpointUnused) {\n      delete acc[key];\n    }\n    return acc;\n  }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n  const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n  const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n  return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n  // fixed value\n  if (typeof breakpointValues !== 'object') {\n    return {};\n  }\n  const base = {};\n  const breakpointsKeys = Object.keys(themeBreakpoints);\n  if (Array.isArray(breakpointValues)) {\n    breakpointsKeys.forEach((breakpoint, i) => {\n      if (i < breakpointValues.length) {\n        base[breakpoint] = true;\n      }\n    });\n  } else {\n    breakpointsKeys.forEach(breakpoint => {\n      if (breakpointValues[breakpoint] != null) {\n        base[breakpoint] = true;\n      }\n    });\n  }\n  return base;\n}\nexport function resolveBreakpointValues({\n  values: breakpointValues,\n  breakpoints: themeBreakpoints,\n  base: customBase\n}) {\n  const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n  const keys = Object.keys(base);\n  if (keys.length === 0) {\n    return breakpointValues;\n  }\n  let previous;\n  return keys.reduce((acc, breakpoint, i) => {\n    if (Array.isArray(breakpointValues)) {\n      acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n      previous = i;\n    } else if (typeof breakpointValues === 'object') {\n      acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n      previous = breakpoint;\n    } else {\n      acc[breakpoint] = breakpointValues;\n    }\n    return acc;\n  }, {});\n}\nexport default breakpoints;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n  if (typeof string !== 'string') {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n  }\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n  if (!path || typeof path !== 'string') {\n    return null;\n  }\n\n  // Check if CSS variables are used\n  if (obj && obj.vars && checkVars) {\n    const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n    if (val != null) {\n      return val;\n    }\n  }\n  return path.split('.').reduce((acc, item) => {\n    if (acc && acc[item] != null) {\n      return acc[item];\n    }\n    return null;\n  }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n  let value;\n  if (typeof themeMapping === 'function') {\n    value = themeMapping(propValueFinal);\n  } else if (Array.isArray(themeMapping)) {\n    value = themeMapping[propValueFinal] || userValue;\n  } else {\n    value = getPath(themeMapping, propValueFinal) || userValue;\n  }\n  if (transform) {\n    value = transform(value, userValue, themeMapping);\n  }\n  return value;\n}\nfunction style(options) {\n  const {\n    prop,\n    cssProperty = options.prop,\n    themeKey,\n    transform\n  } = options;\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    if (props[prop] == null) {\n      return null;\n    }\n    const propValue = props[prop];\n    const theme = props.theme;\n    const themeMapping = getPath(theme, themeKey) || {};\n    const styleFromPropValue = propValueFinal => {\n      let value = getStyleValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, propValue, styleFromPropValue);\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n    [prop]: responsivePropType\n  } : {};\n  fn.filterProps = [prop];\n  return fn;\n}\nexport default style;","export default function memoize(fn) {\n  const cache = {};\n  return arg => {\n    if (cache[arg] === undefined) {\n      cache[arg] = fn(arg);\n    }\n    return cache[arg];\n  };\n}","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n  m: 'margin',\n  p: 'padding'\n};\nconst directions = {\n  t: 'Top',\n  r: 'Right',\n  b: 'Bottom',\n  l: 'Left',\n  x: ['Left', 'Right'],\n  y: ['Top', 'Bottom']\n};\nconst aliases = {\n  marginX: 'mx',\n  marginY: 'my',\n  paddingX: 'px',\n  paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n  // It's not a shorthand notation.\n  if (prop.length > 2) {\n    if (aliases[prop]) {\n      prop = aliases[prop];\n    } else {\n      return [prop];\n    }\n  }\n  const [a, b] = prop.split('');\n  const property = properties[a];\n  const direction = directions[b] || '';\n  return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n  var _getPath;\n  const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n  if (typeof themeSpacing === 'number') {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (typeof abs !== 'number') {\n          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n        }\n      }\n      return themeSpacing * abs;\n    };\n  }\n  if (Array.isArray(themeSpacing)) {\n    return abs => {\n      if (typeof abs === 'string') {\n        return abs;\n      }\n      if (process.env.NODE_ENV !== 'production') {\n        if (!Number.isInteger(abs)) {\n          console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n        } else if (abs > themeSpacing.length - 1) {\n          console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n        }\n      }\n      return themeSpacing[abs];\n    };\n  }\n  if (typeof themeSpacing === 'function') {\n    return themeSpacing;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n  }\n  return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n  return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n  if (typeof propValue === 'string' || propValue == null) {\n    return propValue;\n  }\n  const abs = Math.abs(propValue);\n  const transformed = transformer(abs);\n  if (propValue >= 0) {\n    return transformed;\n  }\n  if (typeof transformed === 'number') {\n    return -transformed;\n  }\n  return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n  return propValue => cssProperties.reduce((acc, cssProperty) => {\n    acc[cssProperty] = getValue(transformer, propValue);\n    return acc;\n  }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n  // Using a hash computation over an array iteration could be faster, but with only 28 items,\n  // it's doesn't worth the bundle size.\n  if (keys.indexOf(prop) === -1) {\n    return null;\n  }\n  const cssProperties = getCssProperties(prop);\n  const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n  const propValue = props[prop];\n  return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n  const transformer = createUnarySpacing(props.theme);\n  return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n  return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n  return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n  return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n  obj[key] = responsivePropType;\n  return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n  // Already transformed.\n  if (spacingInput.mui) {\n    return spacingInput;\n  }\n\n  // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n  // Smaller components, such as icons, can align to a 4dp grid.\n  // https://m2.material.io/design/layout/understanding-layout.html\n  const transform = createUnarySpacing({\n    spacing: spacingInput\n  });\n  const spacing = (...argsInput) => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!(argsInput.length <= 4)) {\n        console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n      }\n    }\n    const args = argsInput.length === 0 ? [1] : argsInput;\n    return args.map(argument => {\n      const output = transform(argument);\n      return typeof output === 'number' ? `${output}px` : output;\n    }).join(' ');\n  };\n  spacing.mui = true;\n  return spacing;\n}","import merge from './merge';\nfunction compose(...styles) {\n  const handlers = styles.reduce((acc, style) => {\n    style.filterProps.forEach(prop => {\n      acc[prop] = style;\n    });\n    return acc;\n  }, {});\n\n  // false positive\n  // eslint-disable-next-line react/function-component-definition\n  const fn = props => {\n    return Object.keys(props).reduce((acc, prop) => {\n      if (handlers[prop]) {\n        return merge(acc, handlers[prop](props));\n      }\n      return acc;\n    }, {});\n  };\n  fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n  fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n  return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n  if (typeof value !== 'number') {\n    return value;\n  }\n  return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n  return style({\n    prop,\n    themeKey: 'borders',\n    transform\n  });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n  if (props.borderRadius !== undefined && props.borderRadius !== null) {\n    const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n    const styleFromPropValue = propValue => ({\n      borderRadius: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n  }\n  return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n  borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n  if (props.gap !== undefined && props.gap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n    const styleFromPropValue = propValue => ({\n      gap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.gap, styleFromPropValue);\n  }\n  return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n  if (props.columnGap !== undefined && props.columnGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n    const styleFromPropValue = propValue => ({\n      columnGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n  }\n  return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n  if (props.rowGap !== undefined && props.rowGap !== null) {\n    const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n    const styleFromPropValue = propValue => ({\n      rowGap: getValue(transformer, propValue)\n    });\n    return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n  }\n  return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n  rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n  prop: 'gridColumn'\n});\nexport const gridRow = style({\n  prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n  prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n  prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n  prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n  prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n  prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n  prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n  prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n  if (userValue === 'grey') {\n    return userValue;\n  }\n  return value;\n}\nexport const color = style({\n  prop: 'color',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const bgcolor = style({\n  prop: 'bgcolor',\n  cssProperty: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nexport const backgroundColor = style({\n  prop: 'backgroundColor',\n  themeKey: 'palette',\n  transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n  return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n  prop: 'width',\n  transform: sizingTransform\n});\nexport const maxWidth = props => {\n  if (props.maxWidth !== undefined && props.maxWidth !== null) {\n    const styleFromPropValue = propValue => {\n      var _props$theme, _props$theme2;\n      const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n      if (!breakpoint) {\n        return {\n          maxWidth: sizingTransform(propValue)\n        };\n      }\n      if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n        return {\n          maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n        };\n      }\n      return {\n        maxWidth: breakpoint\n      };\n    };\n    return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n  }\n  return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n  prop: 'minWidth',\n  transform: sizingTransform\n});\nexport const height = style({\n  prop: 'height',\n  transform: sizingTransform\n});\nexport const maxHeight = style({\n  prop: 'maxHeight',\n  transform: sizingTransform\n});\nexport const minHeight = style({\n  prop: 'minHeight',\n  transform: sizingTransform\n});\nexport const sizeWidth = style({\n  prop: 'size',\n  cssProperty: 'width',\n  transform: sizingTransform\n});\nexport const sizeHeight = style({\n  prop: 'size',\n  cssProperty: 'height',\n  transform: sizingTransform\n});\nexport const boxSizing = style({\n  prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n  // borders\n  border: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderTop: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderRight: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderBottom: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderLeft: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  borderColor: {\n    themeKey: 'palette'\n  },\n  borderTopColor: {\n    themeKey: 'palette'\n  },\n  borderRightColor: {\n    themeKey: 'palette'\n  },\n  borderBottomColor: {\n    themeKey: 'palette'\n  },\n  borderLeftColor: {\n    themeKey: 'palette'\n  },\n  outline: {\n    themeKey: 'borders',\n    transform: borderTransform\n  },\n  outlineColor: {\n    themeKey: 'palette'\n  },\n  borderRadius: {\n    themeKey: 'shape.borderRadius',\n    style: borderRadius\n  },\n  // palette\n  color: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  bgcolor: {\n    themeKey: 'palette',\n    cssProperty: 'backgroundColor',\n    transform: paletteTransform\n  },\n  backgroundColor: {\n    themeKey: 'palette',\n    transform: paletteTransform\n  },\n  // spacing\n  p: {\n    style: padding\n  },\n  pt: {\n    style: padding\n  },\n  pr: {\n    style: padding\n  },\n  pb: {\n    style: padding\n  },\n  pl: {\n    style: padding\n  },\n  px: {\n    style: padding\n  },\n  py: {\n    style: padding\n  },\n  padding: {\n    style: padding\n  },\n  paddingTop: {\n    style: padding\n  },\n  paddingRight: {\n    style: padding\n  },\n  paddingBottom: {\n    style: padding\n  },\n  paddingLeft: {\n    style: padding\n  },\n  paddingX: {\n    style: padding\n  },\n  paddingY: {\n    style: padding\n  },\n  paddingInline: {\n    style: padding\n  },\n  paddingInlineStart: {\n    style: padding\n  },\n  paddingInlineEnd: {\n    style: padding\n  },\n  paddingBlock: {\n    style: padding\n  },\n  paddingBlockStart: {\n    style: padding\n  },\n  paddingBlockEnd: {\n    style: padding\n  },\n  m: {\n    style: margin\n  },\n  mt: {\n    style: margin\n  },\n  mr: {\n    style: margin\n  },\n  mb: {\n    style: margin\n  },\n  ml: {\n    style: margin\n  },\n  mx: {\n    style: margin\n  },\n  my: {\n    style: margin\n  },\n  margin: {\n    style: margin\n  },\n  marginTop: {\n    style: margin\n  },\n  marginRight: {\n    style: margin\n  },\n  marginBottom: {\n    style: margin\n  },\n  marginLeft: {\n    style: margin\n  },\n  marginX: {\n    style: margin\n  },\n  marginY: {\n    style: margin\n  },\n  marginInline: {\n    style: margin\n  },\n  marginInlineStart: {\n    style: margin\n  },\n  marginInlineEnd: {\n    style: margin\n  },\n  marginBlock: {\n    style: margin\n  },\n  marginBlockStart: {\n    style: margin\n  },\n  marginBlockEnd: {\n    style: margin\n  },\n  // display\n  displayPrint: {\n    cssProperty: false,\n    transform: value => ({\n      '@media print': {\n        display: value\n      }\n    })\n  },\n  display: {},\n  overflow: {},\n  textOverflow: {},\n  visibility: {},\n  whiteSpace: {},\n  // flexbox\n  flexBasis: {},\n  flexDirection: {},\n  flexWrap: {},\n  justifyContent: {},\n  alignItems: {},\n  alignContent: {},\n  order: {},\n  flex: {},\n  flexGrow: {},\n  flexShrink: {},\n  alignSelf: {},\n  justifyItems: {},\n  justifySelf: {},\n  // grid\n  gap: {\n    style: gap\n  },\n  rowGap: {\n    style: rowGap\n  },\n  columnGap: {\n    style: columnGap\n  },\n  gridColumn: {},\n  gridRow: {},\n  gridAutoFlow: {},\n  gridAutoColumns: {},\n  gridAutoRows: {},\n  gridTemplateColumns: {},\n  gridTemplateRows: {},\n  gridTemplateAreas: {},\n  gridArea: {},\n  // positions\n  position: {},\n  zIndex: {\n    themeKey: 'zIndex'\n  },\n  top: {},\n  right: {},\n  bottom: {},\n  left: {},\n  // shadows\n  boxShadow: {\n    themeKey: 'shadows'\n  },\n  // sizing\n  width: {\n    transform: sizingTransform\n  },\n  maxWidth: {\n    style: maxWidth\n  },\n  minWidth: {\n    transform: sizingTransform\n  },\n  height: {\n    transform: sizingTransform\n  },\n  maxHeight: {\n    transform: sizingTransform\n  },\n  minHeight: {\n    transform: sizingTransform\n  },\n  boxSizing: {},\n  // typography\n  fontFamily: {\n    themeKey: 'typography'\n  },\n  fontSize: {\n    themeKey: 'typography'\n  },\n  fontStyle: {\n    themeKey: 'typography'\n  },\n  fontWeight: {\n    themeKey: 'typography'\n  },\n  letterSpacing: {},\n  textTransform: {},\n  lineHeight: {},\n  textAlign: {},\n  typography: {\n    cssProperty: false,\n    themeKey: 'typography'\n  }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n  const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n  const union = new Set(allKeys);\n  return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n  return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n  function getThemeValue(prop, val, theme, config) {\n    const props = {\n      [prop]: val,\n      theme\n    };\n    const options = config[prop];\n    if (!options) {\n      return {\n        [prop]: val\n      };\n    }\n    const {\n      cssProperty = prop,\n      themeKey,\n      transform,\n      style\n    } = options;\n    if (val == null) {\n      return null;\n    }\n\n    // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n    if (themeKey === 'typography' && val === 'inherit') {\n      return {\n        [prop]: val\n      };\n    }\n    const themeMapping = getPath(theme, themeKey) || {};\n    if (style) {\n      return style(props);\n    }\n    const styleFromPropValue = propValueFinal => {\n      let value = getValue(themeMapping, transform, propValueFinal);\n      if (propValueFinal === value && typeof propValueFinal === 'string') {\n        // Haven't found value\n        value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n      }\n      if (cssProperty === false) {\n        return value;\n      }\n      return {\n        [cssProperty]: value\n      };\n    };\n    return handleBreakpoints(props, val, styleFromPropValue);\n  }\n  function styleFunctionSx(props) {\n    var _theme$unstable_sxCon;\n    const {\n      sx,\n      theme = {}\n    } = props || {};\n    if (!sx) {\n      return null; // Emotion & styled-components will neglect null\n    }\n    const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n    /*\n     * Receive `sxInput` as object or callback\n     * and then recursively check keys & values to create media query object styles.\n     * (the result will be used in `styled`)\n     */\n    function traverse(sxInput) {\n      let sxObject = sxInput;\n      if (typeof sxInput === 'function') {\n        sxObject = sxInput(theme);\n      } else if (typeof sxInput !== 'object') {\n        // value\n        return sxInput;\n      }\n      if (!sxObject) {\n        return null;\n      }\n      const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n      const breakpointsKeys = Object.keys(emptyBreakpoints);\n      let css = emptyBreakpoints;\n      Object.keys(sxObject).forEach(styleKey => {\n        const value = callIfFn(sxObject[styleKey], theme);\n        if (value !== null && value !== undefined) {\n          if (typeof value === 'object') {\n            if (config[styleKey]) {\n              css = merge(css, getThemeValue(styleKey, value, theme, config));\n            } else {\n              const breakpointsValues = handleBreakpoints({\n                theme\n              }, value, x => ({\n                [styleKey]: x\n              }));\n              if (objectsHaveSameKeys(breakpointsValues, value)) {\n                css[styleKey] = styleFunctionSx({\n                  sx: value,\n                  theme\n                });\n              } else {\n                css = merge(css, breakpointsValues);\n              }\n            }\n          } else {\n            css = merge(css, getThemeValue(styleKey, value, theme, config));\n          }\n        }\n      });\n      return removeUnusedBreakpoints(breakpointsKeys, css);\n    }\n    return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n  }\n  return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n *  - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n *  - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n *  - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n *   const Component = styled('div')(({ theme }) => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *       background: '#1c1c1c',\n *       color: '#fff',\n *     }),\n *   ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n *   <Box sx={theme => [\n *     { background: '#e5e5e5' },\n *     theme.applyStyles('dark', {\n *        background: '#1c1c1c',\n *        color: '#fff',\n *      }),\n *     ]}\n *   />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n *   extendTheme({\n *     components: {\n *       MuiButton: {\n *         styleOverrides: {\n *           root: ({ theme }) => [\n *             { background: '#e5e5e5' },\n *             theme.applyStyles('dark', {\n *               background: '#1c1c1c',\n *               color: '#fff',\n *             }),\n *           ],\n *         },\n *       }\n *     }\n *   })\n *```\n */\nexport default function applyStyles(key, styles) {\n  // @ts-expect-error this is 'any' type\n  const theme = this;\n  if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n    // If CssVarsProvider is used as a provider,\n    // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n    const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n    return {\n      [selector]: styles\n    };\n  }\n  if (theme.palette.mode === key) {\n    return styles;\n  }\n  return {};\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n  const {\n      breakpoints: breakpointsInput = {},\n      palette: paletteInput = {},\n      spacing: spacingInput,\n      shape: shapeInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  const breakpoints = createBreakpoints(breakpointsInput);\n  const spacing = createSpacing(spacingInput);\n  let muiTheme = deepmerge({\n    breakpoints,\n    direction: 'ltr',\n    components: {},\n    // Inject component definitions.\n    palette: _extends({\n      mode: 'light'\n    }, paletteInput),\n    spacing,\n    shape: _extends({}, shape, shapeInput)\n  }, other);\n  muiTheme.applyStyles = applyStyles;\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nexport default createTheme;","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = React.useContext(ThemeContext);\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n  return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles({\n  styles,\n  themeId,\n  defaultTheme = {}\n}) {\n  const upperTheme = useTheme(defaultTheme);\n  const globalStyles = typeof styles === 'function' ? styles(themeId ? upperTheme[themeId] || upperTheme : upperTheme) : styles;\n  return /*#__PURE__*/_jsx(MuiGlobalStyles, {\n    styles: globalStyles\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  defaultTheme: PropTypes.object,\n  /**\n   * @ignore\n   */\n  styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),\n  /**\n   * @ignore\n   */\n  themeId: PropTypes.string\n} : void 0;\nexport default GlobalStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n  var _props$theme$unstable, _props$theme;\n  const result = {\n    systemProps: {},\n    otherProps: {}\n  };\n  const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n  Object.keys(props).forEach(prop => {\n    if (config[prop]) {\n      result.systemProps[prop] = props[prop];\n    } else {\n      result.otherProps[prop] = props[prop];\n    }\n  });\n  return result;\n};\nexport default function extendSxProp(props) {\n  const {\n      sx: inSx\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    systemProps,\n    otherProps\n  } = splitProps(other);\n  let finalSx;\n  if (Array.isArray(inSx)) {\n    finalSx = [systemProps, ...inSx];\n  } else if (typeof inSx === 'function') {\n    finalSx = (...args) => {\n      const result = inSx(...args);\n      if (!isPlainObject(result)) {\n        return systemProps;\n      }\n      return _extends({}, systemProps, result);\n    };\n  } else {\n    finalSx = _extends({}, systemProps, inSx);\n  }\n  return _extends({}, otherProps, {\n    sx: finalSx\n  });\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n  let generate = defaultGenerator;\n  return {\n    configure(generator) {\n      generate = generator;\n    },\n    generate(componentName) {\n      return generate(componentName);\n    },\n    reset() {\n      generate = defaultGenerator;\n    }\n  };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from './styleFunctionSx';\nimport useTheme from './useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n  const {\n    themeId,\n    defaultTheme,\n    defaultClassName = 'MuiBox-root',\n    generateClassName\n  } = options;\n  const BoxRoot = styled('div', {\n    shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n  })(styleFunctionSx);\n  const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n    const theme = useTheme(defaultTheme);\n    const _extendSxProp = extendSxProp(inProps),\n      {\n        className,\n        component = 'div'\n      } = _extendSxProp,\n      other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded);\n    return /*#__PURE__*/_jsx(BoxRoot, _extends({\n      as: component,\n      ref: ref,\n      className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n      theme: themeId ? theme[themeId] || theme : theme\n    }, other));\n  });\n  return Box;\n}","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n  active: 'active',\n  checked: 'checked',\n  completed: 'completed',\n  disabled: 'disabled',\n  error: 'error',\n  expanded: 'expanded',\n  focused: 'focused',\n  focusVisible: 'focusVisible',\n  open: 'open',\n  readOnly: 'readOnly',\n  required: 'required',\n  selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n  const globalStateClass = globalStateClasses[slot];\n  return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n  return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n  });\n  return result;\n}","/**\n * @license React\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=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n  const match = `${fn}`.match(fnNameMatchRegex);\n  const name = match && match[1];\n  return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n  return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  const functionName = getFunctionComponentName(innerType);\n  return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n  if (Component == null) {\n    return undefined;\n  }\n  if (typeof Component === 'string') {\n    return Component;\n  }\n  if (typeof Component === 'function') {\n    return getFunctionComponentName(Component, 'Component');\n  }\n\n  // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n  if (typeof Component === 'object') {\n    switch (Component.$$typeof) {\n      case ForwardRef:\n        return getWrappedName(Component, Component.render, 'ForwardRef');\n      case Memo:\n        return getWrappedName(Component, Component.type, 'memo');\n      default:\n        return undefined;\n    }\n  }\n  return undefined;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n  const output = _extends({}, props);\n  Object.keys(defaultProps).forEach(propName => {\n    if (propName.toString().match(/^(components|slots)$/)) {\n      output[propName] = _extends({}, defaultProps[propName], output[propName]);\n    } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n      const defaultSlotProps = defaultProps[propName] || {};\n      const slotProps = props[propName];\n      output[propName] = {};\n      if (!slotProps || !Object.keys(slotProps)) {\n        // Reduce the iteration if the slot props is empty\n        output[propName] = defaultSlotProps;\n      } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n        // Reduce the iteration if the default slot props is empty\n        output[propName] = slotProps;\n      } else {\n        output[propName] = _extends({}, slotProps);\n        Object.keys(defaultSlotProps).forEach(slotPropName => {\n          output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n        });\n      }\n    } else if (output[propName] === undefined) {\n      output[propName] = defaultProps[propName];\n    }\n  });\n  return output;\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n  const {\n    theme,\n    name,\n    props\n  } = params;\n  if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n    return props;\n  }\n  return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n  props,\n  name,\n  defaultTheme,\n  themeId\n}) {\n  let theme = useTheme(defaultTheme);\n  if (themeId) {\n    theme = theme[themeId] || theme;\n  }\n  const mergedProps = getThemeProps({\n    theme,\n    name,\n    props\n  });\n  return mergedProps;\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n  return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n  return funcs.reduce((acc, func) => {\n    if (func == null) {\n      return acc;\n    }\n    return function chainedFunction(...args) {\n      acc.apply(this, args);\n      func.apply(this, args);\n    };\n  }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n  let timeout;\n  function debounced(...args) {\n    const later = () => {\n      // @ts-ignore\n      func.apply(this, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  }\n  debounced.clear = () => {\n    clearTimeout(timeout);\n  };\n  return debounced;\n}","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n  var _muiName, _element$type;\n  return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n  // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n  // eslint-disable-next-line no-underscore-dangle\n  (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","export default function ownerDocument(node) {\n  return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n  const doc = ownerDocument(node);\n  return doc.defaultView || window;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref) {\n    ref.current = value;\n  }\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n  const [defaultId, setDefaultId] = React.useState(idOverride);\n  const id = idOverride || defaultId;\n  React.useEffect(() => {\n    if (defaultId == null) {\n      // Fallback to this default id when possible.\n      // Use the incrementing value for client-side rendering only.\n      // We can't use it server-side.\n      // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n      globalId += 1;\n      setDefaultId(`mui-${globalId}`);\n    }\n  }, [defaultId]);\n  return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example <div id={useId()} />\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n  if (maybeReactUseId !== undefined) {\n    const reactId = maybeReactUseId();\n    return idOverride != null ? idOverride : reactId;\n  }\n  // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n  return useGlobalId(idOverride);\n}","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n  controlled,\n  default: defaultProp,\n  name,\n  state = 'value'\n}) {\n  // isControlled is ignored in the hook dependency lists as it should never change.\n  const {\n    current: isControlled\n  } = React.useRef(controlled !== undefined);\n  const [valueState, setValue] = React.useState(defaultProp);\n  const value = isControlled ? controlled : valueState;\n  if (process.env.NODE_ENV !== 'production') {\n    React.useEffect(() => {\n      if (isControlled !== (controlled !== undefined)) {\n        console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n      }\n    }, [state, name, controlled]);\n    const {\n      current: defaultValue\n    } = React.useRef(defaultProp);\n    React.useEffect(() => {\n      if (!isControlled && defaultValue !== defaultProp) {\n        console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n      }\n    }, [JSON.stringify(defaultProp)]);\n  }\n  const setValueIfUncontrolled = React.useCallback(newValue => {\n    if (!isControlled) {\n      setValue(newValue);\n    }\n  }, []);\n  return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n  const ref = React.useRef(fn);\n  useEnhancedEffect(() => {\n    ref.current = fn;\n  });\n  return React.useRef((...args) =>\n  // @ts-expect-error hide `this`\n  (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n  /**\n   * This will create a new function if the refs passed to this hook change and are all defined.\n   * This means react will call the old forkRef with `null` and the new forkRef\n   * with the ref. Cleanup naturally emerges from this behavior.\n   */\n  return React.useMemo(() => {\n    if (refs.every(ref => ref == null)) {\n      return null;\n    }\n    return instance => {\n      refs.forEach(ref => {\n        setRef(ref, instance);\n      });\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, refs);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n *   const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n  const ref = React.useRef(UNINITIALIZED);\n  if (ref.current === UNINITIALIZED) {\n    ref.current = init(initArg);\n  }\n  return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n  /* eslint-disable react-hooks/exhaustive-deps */\n  React.useEffect(fn, EMPTY);\n  /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n  constructor() {\n    this.currentId = null;\n    this.clear = () => {\n      if (this.currentId !== null) {\n        clearTimeout(this.currentId);\n        this.currentId = null;\n      }\n    };\n    this.disposeEffect = () => {\n      return this.clear;\n    };\n  }\n  static create() {\n    return new Timeout();\n  }\n  /**\n   * Executes `fn` after `delay`, clearing any previously scheduled call.\n   */\n  start(delay, fn) {\n    this.clear();\n    this.currentId = setTimeout(() => {\n      this.currentId = null;\n      fn();\n    }, delay);\n  }\n}\nexport default function useTimeout() {\n  const timeout = useLazyRef(Timeout.create).current;\n  useOnMount(timeout.disposeEffect);\n  return timeout;\n}","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n  text: true,\n  search: true,\n  url: true,\n  tel: true,\n  email: true,\n  password: true,\n  number: true,\n  date: true,\n  month: true,\n  week: true,\n  time: true,\n  datetime: true,\n  'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n  const {\n    type,\n    tagName\n  } = node;\n  if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n    return true;\n  }\n  if (tagName === 'TEXTAREA' && !node.readOnly) {\n    return true;\n  }\n  if (node.isContentEditable) {\n    return true;\n  }\n  return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n  if (event.metaKey || event.altKey || event.ctrlKey) {\n    return;\n  }\n  hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n  hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n  if (this.visibilityState === 'hidden') {\n    // If the tab becomes active again, the browser will handle calling focus\n    // on the element (Safari actually calls it twice).\n    // If this tab change caused a blur on an element with focus-visible,\n    // re-apply the class when the user switches back to the tab.\n    if (hadFocusVisibleRecently) {\n      hadKeyboardEvent = true;\n    }\n  }\n}\nfunction prepare(doc) {\n  doc.addEventListener('keydown', handleKeyDown, true);\n  doc.addEventListener('mousedown', handlePointerDown, true);\n  doc.addEventListener('pointerdown', handlePointerDown, true);\n  doc.addEventListener('touchstart', handlePointerDown, true);\n  doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n  doc.removeEventListener('keydown', handleKeyDown, true);\n  doc.removeEventListener('mousedown', handlePointerDown, true);\n  doc.removeEventListener('pointerdown', handlePointerDown, true);\n  doc.removeEventListener('touchstart', handlePointerDown, true);\n  doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n  const {\n    target\n  } = event;\n  try {\n    return target.matches(':focus-visible');\n  } catch (error) {\n    // Browsers not implementing :focus-visible will throw a SyntaxError.\n    // We use our own heuristic for those browsers.\n    // Rethrow might be better if it's not the expected error but do we really\n    // want to crash if focus-visible malfunctioned?\n  }\n\n  // No need for validFocusTarget check. The user does that by attaching it to\n  // focusable events only.\n  return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n  const ref = React.useCallback(node => {\n    if (node != null) {\n      prepare(node.ownerDocument);\n    }\n  }, []);\n  const isFocusVisibleRef = React.useRef(false);\n\n  /**\n   * Should be called if a blur event is fired\n   */\n  function handleBlurVisible() {\n    // checking against potential state variable does not suffice if we focus and blur synchronously.\n    // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n    // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n    // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n    // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n    if (isFocusVisibleRef.current) {\n      // To detect a tab/window switch, we look for a blur event followed\n      // rapidly by a visibility change.\n      // If we don't see a visibility change within 100ms, it's probably a\n      // regular focus change.\n      hadFocusVisibleRecently = true;\n      hadFocusVisibleRecentlyTimeout.start(100, () => {\n        hadFocusVisibleRecently = false;\n      });\n      isFocusVisibleRef.current = false;\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Should be called if a blur event is fired\n   */\n  function handleFocusVisible(event) {\n    if (isFocusVisible(event)) {\n      isFocusVisibleRef.current = true;\n      return true;\n    }\n    return false;\n  }\n  return {\n    isFocusVisibleRef,\n    onFocus: handleFocusVisible,\n    onBlur: handleBlurVisible,\n    ref\n  };\n}","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(doc) {\n  // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n  const documentWidth = doc.documentElement.clientWidth;\n  return Math.abs(window.innerWidth - documentWidth);\n}","'use client';\n\nimport * as React from 'react';\nconst usePreviousProps = value => {\n  const ref = React.useRef({});\n  React.useEffect(() => {\n    ref.current = value;\n  });\n  return ref.current;\n};\nexport default usePreviousProps;","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n  const output = {};\n  Object.keys(slots).forEach(\n  // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n  // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n  slot => {\n    output[slot] = slots[slot].reduce((acc, key) => {\n      if (key) {\n        const utilityClass = getUtilityClass(key);\n        if (utilityClass !== '') {\n          acc.push(utilityClass);\n        }\n        if (classes && classes[key]) {\n          acc.push(classes[key]);\n        }\n      }\n      return acc;\n    }, []).join(' ');\n  });\n  return output;\n}","import * as React from 'react';\nconst ThemeContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n  ThemeContext.displayName = 'ThemeContext';\n}\nexport default ThemeContext;","import * as React from 'react';\nimport ThemeContext from './ThemeContext';\nexport default function useTheme() {\n  const theme = React.useContext(ThemeContext);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue(theme);\n  }\n  return theme;\n}","const hasSymbol = typeof Symbol === 'function' && Symbol.for;\nexport default hasSymbol ? Symbol.for('mui.nested') : '__THEME_NESTED__';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp } from '@mui/utils';\nimport ThemeContext from '../useTheme/ThemeContext';\nimport useTheme from '../useTheme';\nimport nested from './nested';\n\n// To support composition of theme.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction mergeOuterLocalTheme(outerTheme, localTheme) {\n  if (typeof localTheme === 'function') {\n    const mergedTheme = localTheme(outerTheme);\n    if (process.env.NODE_ENV !== 'production') {\n      if (!mergedTheme) {\n        console.error(['MUI: You should return an object from your theme function, i.e.', '<ThemeProvider theme={() => ({})} />'].join('\\n'));\n      }\n    }\n    return mergedTheme;\n  }\n  return _extends({}, outerTheme, localTheme);\n}\n\n/**\n * This component takes a `theme` prop.\n * It makes the `theme` available down the React tree thanks to React context.\n * This component should preferably be used at **the root of your component tree**.\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme\n  } = props;\n  const outerTheme = useTheme();\n  if (process.env.NODE_ENV !== 'production') {\n    if (outerTheme === null && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const theme = React.useMemo(() => {\n    const output = outerTheme === null ? localTheme : mergeOuterLocalTheme(outerTheme, localTheme);\n    if (output != null) {\n      output[nested] = outerTheme !== null;\n    }\n    return output;\n  }, [localTheme, outerTheme]);\n  return /*#__PURE__*/_jsx(ThemeContext.Provider, {\n    value: theme,\n    children: children\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RtlContext = /*#__PURE__*/React.createContext();\nfunction RtlProvider(_ref) {\n  let {\n      value\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  return /*#__PURE__*/_jsx(RtlContext.Provider, _extends({\n    value: value != null ? value : true\n  }, props));\n}\nprocess.env.NODE_ENV !== \"production\" ? RtlProvider.propTypes = {\n  children: PropTypes.node,\n  value: PropTypes.bool\n} : void 0;\nexport const useRtl = () => {\n  const value = React.useContext(RtlContext);\n  return value != null ? value : false;\n};\nexport default RtlProvider;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as MuiThemeProvider, useTheme as usePrivateTheme } from '@mui/private-theming';\nimport exactProp from '@mui/utils/exactProp';\nimport { ThemeContext as StyledEngineThemeContext } from '@mui/styled-engine';\nimport useThemeWithoutDefault from '../useThemeWithoutDefault';\nimport RtlProvider from '../RtlProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst EMPTY_THEME = {};\nfunction useThemeScoping(themeId, upperTheme, localTheme, isPrivate = false) {\n  return React.useMemo(() => {\n    const resolvedTheme = themeId ? upperTheme[themeId] || upperTheme : upperTheme;\n    if (typeof localTheme === 'function') {\n      const mergedTheme = localTheme(resolvedTheme);\n      const result = themeId ? _extends({}, upperTheme, {\n        [themeId]: mergedTheme\n      }) : mergedTheme;\n      // must return a function for the private theme to NOT merge with the upper theme.\n      // see the test case \"use provided theme from a callback\" in ThemeProvider.test.js\n      if (isPrivate) {\n        return () => result;\n      }\n      return result;\n    }\n    return themeId ? _extends({}, upperTheme, {\n      [themeId]: localTheme\n    }) : _extends({}, upperTheme, localTheme);\n  }, [themeId, upperTheme, localTheme, isPrivate]);\n}\n\n/**\n * This component makes the `theme` available down the React tree.\n * It should preferably be used at **the root of your component tree**.\n *\n * <ThemeProvider theme={theme}> // existing use case\n * <ThemeProvider theme={{ id: theme }}> // theme scoping\n */\nfunction ThemeProvider(props) {\n  const {\n    children,\n    theme: localTheme,\n    themeId\n  } = props;\n  const upperTheme = useThemeWithoutDefault(EMPTY_THEME);\n  const upperPrivateTheme = usePrivateTheme() || EMPTY_THEME;\n  if (process.env.NODE_ENV !== 'production') {\n    if (upperTheme === null && typeof localTheme === 'function' || themeId && upperTheme && !upperTheme[themeId] && typeof localTheme === 'function') {\n      console.error(['MUI: You are providing a theme function prop to the ThemeProvider component:', '<ThemeProvider theme={outerTheme => outerTheme} />', '', 'However, no outer theme is present.', 'Make sure a theme is already injected higher in the React tree ' + 'or provide a theme object.'].join('\\n'));\n    }\n  }\n  const engineTheme = useThemeScoping(themeId, upperTheme, localTheme);\n  const privateTheme = useThemeScoping(themeId, upperPrivateTheme, localTheme, true);\n  const rtlValue = engineTheme.direction === 'rtl';\n  return /*#__PURE__*/_jsx(MuiThemeProvider, {\n    theme: privateTheme,\n    children: /*#__PURE__*/_jsx(StyledEngineThemeContext.Provider, {\n      value: engineTheme,\n      children: /*#__PURE__*/_jsx(RtlProvider, {\n        value: rtlValue,\n        children: children\n      })\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).isRequired,\n  /**\n   * The design system's unique id for getting the corresponded theme when there are multiple design systems.\n   */\n  themeId: PropTypes.string\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  process.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = exactProp(ThemeProvider.propTypes) : void 0;\n}\nexport default ThemeProvider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n  return _extends({\n    toolbar: {\n      minHeight: 56,\n      [breakpoints.up('xs')]: {\n        '@media (orientation: landscape)': {\n          minHeight: 48\n        }\n      },\n      [breakpoints.up('sm')]: {\n        minHeight: 64\n      }\n    }\n  }, mixins);\n}","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.alpha = alpha;\nexports.blend = blend;\nexports.colorChannel = void 0;\nexports.darken = darken;\nexports.decomposeColor = decomposeColor;\nexports.emphasize = emphasize;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.hexToRgb = hexToRgb;\nexports.hslToRgb = hslToRgb;\nexports.lighten = lighten;\nexports.private_safeAlpha = private_safeAlpha;\nexports.private_safeColorChannel = void 0;\nexports.private_safeDarken = private_safeDarken;\nexports.private_safeEmphasize = private_safeEmphasize;\nexports.private_safeLighten = private_safeLighten;\nexports.recomposeColor = recomposeColor;\nexports.rgbToHex = rgbToHex;\nvar _formatMuiErrorMessage2 = _interopRequireDefault(require(\"@mui/utils/formatMuiErrorMessage\"));\nvar _clamp = _interopRequireDefault(require(\"@mui/utils/clamp\"));\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (value < min || value > max) {\n      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n    }\n  }\n  return (0, _clamp.default)(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n  color = color.slice(1);\n  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n  let colors = color.match(re);\n  if (colors && colors[0].length === 1) {\n    colors = colors.map(n => n + n);\n  }\n  return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n  }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n  const hex = int.toString(16);\n  return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nfunction decomposeColor(color) {\n  // Idempotent\n  if (color.type) {\n    return color;\n  }\n  if (color.charAt(0) === '#') {\n    return decomposeColor(hexToRgb(color));\n  }\n  const marker = color.indexOf('(');\n  const type = color.substring(0, marker);\n  if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : (0, _formatMuiErrorMessage2.default)(9, color));\n  }\n  let values = color.substring(marker + 1, color.length - 1);\n  let colorSpace;\n  if (type === 'color') {\n    values = values.split(' ');\n    colorSpace = values.shift();\n    if (values.length === 4 && values[3].charAt(0) === '/') {\n      values[3] = values[3].slice(1);\n    }\n    if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : (0, _formatMuiErrorMessage2.default)(10, colorSpace));\n    }\n  } else {\n    values = values.split(',');\n  }\n  values = values.map(value => parseFloat(value));\n  return {\n    type,\n    values,\n    colorSpace\n  };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nconst colorChannel = color => {\n  const decomposedColor = decomposeColor(color);\n  return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexports.colorChannel = colorChannel;\nconst private_safeColorChannel = (color, warning) => {\n  try {\n    return colorChannel(color);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexports.private_safeColorChannel = private_safeColorChannel;\nfunction recomposeColor(color) {\n  const {\n    type,\n    colorSpace\n  } = color;\n  let {\n    values\n  } = color;\n  if (type.indexOf('rgb') !== -1) {\n    // Only convert the first 3 values to int (i.e. not alpha)\n    values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n  } else if (type.indexOf('hsl') !== -1) {\n    values[1] = `${values[1]}%`;\n    values[2] = `${values[2]}%`;\n  }\n  if (type.indexOf('color') !== -1) {\n    values = `${colorSpace} ${values.join(' ')}`;\n  } else {\n    values = `${values.join(', ')}`;\n  }\n  return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n  // Idempotent\n  if (color.indexOf('#') === 0) {\n    return color;\n  }\n  const {\n    values\n  } = decomposeColor(color);\n  return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n  color = decomposeColor(color);\n  const {\n    values\n  } = color;\n  const h = values[0];\n  const s = values[1] / 100;\n  const l = values[2] / 100;\n  const a = s * Math.min(l, 1 - l);\n  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n  let type = 'rgb';\n  const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n  if (color.type === 'hsla') {\n    type += 'a';\n    rgb.push(values[3]);\n  }\n  return recomposeColor({\n    type,\n    values: rgb\n  });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n  color = decomposeColor(color);\n  let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n  rgb = rgb.map(val => {\n    if (color.type !== 'color') {\n      val /= 255; // normalized\n    }\n    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n  });\n\n  // Truncate at 3 digits\n  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n  const lumA = getLuminance(foreground);\n  const lumB = getLuminance(background);\n  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction alpha(color, value) {\n  color = decomposeColor(color);\n  value = clampWrapper(value);\n  if (color.type === 'rgb' || color.type === 'hsl') {\n    color.type += 'a';\n  }\n  if (color.type === 'color') {\n    color.values[3] = `/${value}`;\n  } else {\n    color.values[3] = value;\n  }\n  return recomposeColor(color);\n}\nfunction private_safeAlpha(color, value, warning) {\n  try {\n    return alpha(color, value);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] *= 1 - coefficient;\n  } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] *= 1 - coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nfunction private_safeDarken(color, coefficient, warning) {\n  try {\n    return darken(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n  color = decomposeColor(color);\n  coefficient = clampWrapper(coefficient);\n  if (color.type.indexOf('hsl') !== -1) {\n    color.values[2] += (100 - color.values[2]) * coefficient;\n  } else if (color.type.indexOf('rgb') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (255 - color.values[i]) * coefficient;\n    }\n  } else if (color.type.indexOf('color') !== -1) {\n    for (let i = 0; i < 3; i += 1) {\n      color.values[i] += (1 - color.values[i]) * coefficient;\n    }\n  }\n  return recomposeColor(color);\n}\nfunction private_safeLighten(color, coefficient, warning) {\n  try {\n    return lighten(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction emphasize(color, coefficient = 0.15) {\n  return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nfunction private_safeEmphasize(color, coefficient, warning) {\n  try {\n    return private_safeEmphasize(color, coefficient);\n  } catch (error) {\n    if (warning && process.env.NODE_ENV !== 'production') {\n      console.warn(warning);\n    }\n    return color;\n  }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nfunction blend(background, overlay, opacity, gamma = 1.0) {\n  const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n  const backgroundColor = decomposeColor(background);\n  const overlayColor = decomposeColor(overlay);\n  const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n  return recomposeColor({\n    type: 'rgb',\n    values: rgb\n  });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n  // The colors used to style the text.\n  text: {\n    // The most important text.\n    primary: 'rgba(0, 0, 0, 0.87)',\n    // Secondary text.\n    secondary: 'rgba(0, 0, 0, 0.6)',\n    // Disabled text have even lower visual prominence.\n    disabled: 'rgba(0, 0, 0, 0.38)'\n  },\n  // The color used to divide different elements.\n  divider: 'rgba(0, 0, 0, 0.12)',\n  // The background colors used to style the surfaces.\n  // Consistency between these values is important.\n  background: {\n    paper: common.white,\n    default: common.white\n  },\n  // The colors used to style the action elements.\n  action: {\n    // The color of an active action like an icon button.\n    active: 'rgba(0, 0, 0, 0.54)',\n    // The color of an hovered action.\n    hover: 'rgba(0, 0, 0, 0.04)',\n    hoverOpacity: 0.04,\n    // The color of a selected action.\n    selected: 'rgba(0, 0, 0, 0.08)',\n    selectedOpacity: 0.08,\n    // The color of a disabled action.\n    disabled: 'rgba(0, 0, 0, 0.26)',\n    // The background color of a disabled action.\n    disabledBackground: 'rgba(0, 0, 0, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(0, 0, 0, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.12\n  }\n};\nexport const dark = {\n  text: {\n    primary: common.white,\n    secondary: 'rgba(255, 255, 255, 0.7)',\n    disabled: 'rgba(255, 255, 255, 0.5)',\n    icon: 'rgba(255, 255, 255, 0.5)'\n  },\n  divider: 'rgba(255, 255, 255, 0.12)',\n  background: {\n    paper: '#121212',\n    default: '#121212'\n  },\n  action: {\n    active: common.white,\n    hover: 'rgba(255, 255, 255, 0.08)',\n    hoverOpacity: 0.08,\n    selected: 'rgba(255, 255, 255, 0.16)',\n    selectedOpacity: 0.16,\n    disabled: 'rgba(255, 255, 255, 0.3)',\n    disabledBackground: 'rgba(255, 255, 255, 0.12)',\n    disabledOpacity: 0.38,\n    focus: 'rgba(255, 255, 255, 0.12)',\n    focusOpacity: 0.12,\n    activatedOpacity: 0.24\n  }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n  const tonalOffsetLight = tonalOffset.light || tonalOffset;\n  const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n  if (!intent[direction]) {\n    if (intent.hasOwnProperty(shade)) {\n      intent[direction] = intent[shade];\n    } else if (direction === 'light') {\n      intent.light = lighten(intent.main, tonalOffsetLight);\n    } else if (direction === 'dark') {\n      intent.dark = darken(intent.main, tonalOffsetDark);\n    }\n  }\n}\nfunction getDefaultPrimary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: blue[200],\n      light: blue[50],\n      dark: blue[400]\n    };\n  }\n  return {\n    main: blue[700],\n    light: blue[400],\n    dark: blue[800]\n  };\n}\nfunction getDefaultSecondary(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: purple[200],\n      light: purple[50],\n      dark: purple[400]\n    };\n  }\n  return {\n    main: purple[500],\n    light: purple[300],\n    dark: purple[700]\n  };\n}\nfunction getDefaultError(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: red[500],\n      light: red[300],\n      dark: red[700]\n    };\n  }\n  return {\n    main: red[700],\n    light: red[400],\n    dark: red[800]\n  };\n}\nfunction getDefaultInfo(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: lightBlue[400],\n      light: lightBlue[300],\n      dark: lightBlue[700]\n    };\n  }\n  return {\n    main: lightBlue[700],\n    light: lightBlue[500],\n    dark: lightBlue[900]\n  };\n}\nfunction getDefaultSuccess(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: green[400],\n      light: green[300],\n      dark: green[700]\n    };\n  }\n  return {\n    main: green[800],\n    light: green[500],\n    dark: green[900]\n  };\n}\nfunction getDefaultWarning(mode = 'light') {\n  if (mode === 'dark') {\n    return {\n      main: orange[400],\n      light: orange[300],\n      dark: orange[700]\n    };\n  }\n  return {\n    main: '#ed6c02',\n    // closest to orange[800] that pass 3:1.\n    light: orange[500],\n    dark: orange[900]\n  };\n}\nexport default function createPalette(palette) {\n  const {\n      mode = 'light',\n      contrastThreshold = 3,\n      tonalOffset = 0.2\n    } = palette,\n    other = _objectWithoutPropertiesLoose(palette, _excluded);\n  const primary = palette.primary || getDefaultPrimary(mode);\n  const secondary = palette.secondary || getDefaultSecondary(mode);\n  const error = palette.error || getDefaultError(mode);\n  const info = palette.info || getDefaultInfo(mode);\n  const success = palette.success || getDefaultSuccess(mode);\n  const warning = palette.warning || getDefaultWarning(mode);\n\n  // Use the same logic as\n  // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n  // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n  function getContrastText(background) {\n    const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n    if (process.env.NODE_ENV !== 'production') {\n      const contrast = getContrastRatio(background, contrastText);\n      if (contrast < 3) {\n        console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n      }\n    }\n    return contrastText;\n  }\n  const augmentColor = ({\n    color,\n    name,\n    mainShade = 500,\n    lightShade = 300,\n    darkShade = 700\n  }) => {\n    color = _extends({}, color);\n    if (!color.main && color[mainShade]) {\n      color.main = color[mainShade];\n    }\n    if (!color.hasOwnProperty('main')) {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n    }\n    if (typeof color.main !== 'string') {\n      throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n  primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n  primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n    }\n    addLightOrDark(color, 'light', lightShade, tonalOffset);\n    addLightOrDark(color, 'dark', darkShade, tonalOffset);\n    if (!color.contrastText) {\n      color.contrastText = getContrastText(color.main);\n    }\n    return color;\n  };\n  const modes = {\n    dark,\n    light\n  };\n  if (process.env.NODE_ENV !== 'production') {\n    if (!modes[mode]) {\n      console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n    }\n  }\n  const paletteOutput = deepmerge(_extends({\n    // A collection of common colors.\n    common: _extends({}, common),\n    // prevent mutable object.\n    // The palette mode, can be light or dark.\n    mode,\n    // The colors used to represent primary interface elements for a user.\n    primary: augmentColor({\n      color: primary,\n      name: 'primary'\n    }),\n    // The colors used to represent secondary interface elements for a user.\n    secondary: augmentColor({\n      color: secondary,\n      name: 'secondary',\n      mainShade: 'A400',\n      lightShade: 'A200',\n      darkShade: 'A700'\n    }),\n    // The colors used to represent interface elements that the user should be made aware of.\n    error: augmentColor({\n      color: error,\n      name: 'error'\n    }),\n    // The colors used to represent potentially dangerous actions or important messages.\n    warning: augmentColor({\n      color: warning,\n      name: 'warning'\n    }),\n    // The colors used to present information to the user that is neutral and not necessarily important.\n    info: augmentColor({\n      color: info,\n      name: 'info'\n    }),\n    // The colors used to indicate the successful completion of an action that user triggered.\n    success: augmentColor({\n      color: success,\n      name: 'success'\n    }),\n    // The grey colors.\n    grey,\n    // Used by `getContrastText()` to maximize the contrast between\n    // the background and the text.\n    contrastThreshold,\n    // Takes a background color and returns the text color that maximizes the contrast.\n    getContrastText,\n    // Generate a rich color object.\n    augmentColor,\n    // Used by the functions below to shift a color's luminance by approximately\n    // two indexes within its tonal palette.\n    // E.g., shift from Red 500 to Red 300 or Red 700.\n    tonalOffset\n  }, modes[mode]), other);\n  return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n  return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n  textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n  const _ref = typeof typography === 'function' ? typography(palette) : typography,\n    {\n      fontFamily = defaultFontFamily,\n      // The default font size of the Material Specification.\n      fontSize = 14,\n      // px\n      fontWeightLight = 300,\n      fontWeightRegular = 400,\n      fontWeightMedium = 500,\n      fontWeightBold = 700,\n      // Tell MUI what's the font-size on the html element.\n      // 16px is the default font-size used by browsers.\n      htmlFontSize = 16,\n      // Apply the CSS properties to all the variants.\n      allVariants,\n      pxToRem: pxToRem2\n    } = _ref,\n    other = _objectWithoutPropertiesLoose(_ref, _excluded);\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof fontSize !== 'number') {\n      console.error('MUI: `fontSize` is required to be a number.');\n    }\n    if (typeof htmlFontSize !== 'number') {\n      console.error('MUI: `htmlFontSize` is required to be a number.');\n    }\n  }\n  const coef = fontSize / 14;\n  const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n  const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n    fontFamily,\n    fontWeight,\n    fontSize: pxToRem(size),\n    // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n    lineHeight\n  }, fontFamily === defaultFontFamily ? {\n    letterSpacing: `${round(letterSpacing / size)}em`\n  } : {}, casing, allVariants);\n  const variants = {\n    h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n    h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n    h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n    h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n    h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n    h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n    subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n    subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n    body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n    body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n    button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n    caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n    overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n    // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n    inherit: {\n      fontFamily: 'inherit',\n      fontWeight: 'inherit',\n      fontSize: 'inherit',\n      lineHeight: 'inherit',\n      letterSpacing: 'inherit'\n    }\n  };\n  return deepmerge(_extends({\n    htmlFontSize,\n    pxToRem,\n    fontFamily,\n    fontSize,\n    fontWeightLight,\n    fontWeightRegular,\n    fontWeightMedium,\n    fontWeightBold\n  }, variants), other, {\n    clone: false // No need to clone deep\n  });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n  return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n  // This is the most common easing curve.\n  easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n  // Objects enter the screen at full velocity from off-screen and\n  // slowly decelerate to a resting point.\n  easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n  // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n  easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n  // The sharp curve is used by objects that may return to the screen at any time.\n  sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n  shortest: 150,\n  shorter: 200,\n  short: 250,\n  // most basic recommended timing\n  standard: 300,\n  // this is to be used in complex animations\n  complex: 375,\n  // recommended when something is entering screen\n  enteringScreen: 225,\n  // recommended when something is leaving screen\n  leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n  return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n  if (!height) {\n    return 0;\n  }\n  const constant = height / 36;\n\n  // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n  return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n  const mergedEasing = _extends({}, easing, inputTransitions.easing);\n  const mergedDuration = _extends({}, duration, inputTransitions.duration);\n  const create = (props = ['all'], options = {}) => {\n    const {\n        duration: durationOption = mergedDuration.standard,\n        easing: easingOption = mergedEasing.easeInOut,\n        delay = 0\n      } = options,\n      other = _objectWithoutPropertiesLoose(options, _excluded);\n    if (process.env.NODE_ENV !== 'production') {\n      const isString = value => typeof value === 'string';\n      // IE11 support, replace with Number.isNaN\n      // eslint-disable-next-line no-restricted-globals\n      const isNumber = value => !isNaN(parseFloat(value));\n      if (!isString(props) && !Array.isArray(props)) {\n        console.error('MUI: Argument \"props\" must be a string or Array.');\n      }\n      if (!isNumber(durationOption) && !isString(durationOption)) {\n        console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n      }\n      if (!isString(easingOption)) {\n        console.error('MUI: Argument \"easing\" must be a string.');\n      }\n      if (!isNumber(delay) && !isString(delay)) {\n        console.error('MUI: Argument \"delay\" must be a number or a string.');\n      }\n      if (typeof options !== 'object') {\n        console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n      }\n      if (Object.keys(other).length !== 0) {\n        console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n      }\n    }\n    return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n  };\n  return _extends({\n    getAutoHeightDuration,\n    create\n  }, inputTransitions, {\n    easing: mergedEasing,\n    duration: mergedDuration\n  });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n  mobileStepper: 1000,\n  fab: 1050,\n  speedDial: 1050,\n  appBar: 1100,\n  drawer: 1200,\n  modal: 1300,\n  snackbar: 1400,\n  tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n  const {\n      mixins: mixinsInput = {},\n      palette: paletteInput = {},\n      transitions: transitionsInput = {},\n      typography: typographyInput = {}\n    } = options,\n    other = _objectWithoutPropertiesLoose(options, _excluded);\n  if (options.vars) {\n    throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n  }\n  const palette = createPalette(paletteInput);\n  const systemTheme = systemCreateTheme(options);\n  let muiTheme = deepmerge(systemTheme, {\n    mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n    palette,\n    // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n    shadows: shadows.slice(),\n    typography: createTypography(palette, typographyInput),\n    transitions: createTransitions(transitionsInput),\n    zIndex: _extends({}, zIndex)\n  });\n  muiTheme = deepmerge(muiTheme, other);\n  muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n    const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n    const traverse = (node, component) => {\n      let key;\n\n      // eslint-disable-next-line guard-for-in, no-restricted-syntax\n      for (key in node) {\n        const child = node[key];\n        if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n          if (process.env.NODE_ENV !== 'production') {\n            const stateClass = generateUtilityClass('', key);\n            console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n              root: {\n                [`&.${stateClass}`]: child\n              }\n            }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n          }\n          // Remove the style to prevent global conflicts.\n          node[key] = {};\n        }\n      }\n    };\n    Object.keys(muiTheme.components).forEach(component => {\n      const styleOverrides = muiTheme.components[component].styleOverrides;\n      if (styleOverrides && component.indexOf('Mui') === 0) {\n        traverse(styleOverrides, component);\n      }\n    });\n  }\n  muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n  muiTheme.unstable_sx = function sx(props) {\n    return styleFunctionSx({\n      sx: props,\n      theme: this\n    });\n  };\n  return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (!warnedOnce) {\n      warnedOnce = true;\n      console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n    }\n  }\n  return createTheme(...args);\n}\nexport default createTheme;","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","'use client';\n\nimport * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useTheme() {\n  const theme = useThemeSystem(defaultTheme);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useDebugValue(theme);\n  }\n  return theme[THEME_ID] || theme;\n}","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n  props,\n  name\n}) {\n  return systemUseThemeProps({\n    props,\n    name,\n    defaultTheme,\n    themeId: THEME_ID\n  });\n}","function _extends() {\n  module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = createStyled;\nexports.shouldForwardProp = shouldForwardProp;\nexports.systemDefaultTheme = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _styledEngine = _interopRequireWildcard(require(\"@mui/styled-engine\"));\nvar _deepmerge = require(\"@mui/utils/deepmerge\");\nvar _capitalize = _interopRequireDefault(require(\"@mui/utils/capitalize\"));\nvar _getDisplayName = _interopRequireDefault(require(\"@mui/utils/getDisplayName\"));\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\nvar _styleFunctionSx = _interopRequireDefault(require(\"./styleFunctionSx\"));\nconst _excluded = [\"ownerState\"],\n  _excluded2 = [\"variants\"],\n  _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n  return typeof tag === 'string' &&\n  // 96 is one less than the char code\n  // for \"a\" so this is checking that\n  // it's a lowercase character\n  tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nfunction shouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nconst systemDefaultTheme = exports.systemDefaultTheme = (0, _createTheme.default)();\nconst lowercaseFirstLetter = string => {\n  if (!string) {\n    return string;\n  }\n  return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n  defaultTheme,\n  theme,\n  themeId\n}) {\n  return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n  if (!slot) {\n    return null;\n  }\n  return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n  let {\n      ownerState\n    } = _ref,\n    props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);\n  const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle((0, _extends2.default)({\n    ownerState\n  }, props)) : callableStyle;\n  if (Array.isArray(resolvedStylesArg)) {\n    return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, (0, _extends2.default)({\n      ownerState\n    }, props)));\n  }\n  if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n    const {\n        variants = []\n      } = resolvedStylesArg,\n      otherStyles = (0, _objectWithoutPropertiesLoose2.default)(resolvedStylesArg, _excluded2);\n    let result = otherStyles;\n    variants.forEach(variant => {\n      let isMatch = true;\n      if (typeof variant.props === 'function') {\n        isMatch = variant.props((0, _extends2.default)({\n          ownerState\n        }, props, ownerState));\n      } else {\n        Object.keys(variant.props).forEach(key => {\n          if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n            isMatch = false;\n          }\n        });\n      }\n      if (isMatch) {\n        if (!Array.isArray(result)) {\n          result = [result];\n        }\n        result.push(typeof variant.style === 'function' ? variant.style((0, _extends2.default)({\n          ownerState\n        }, props, ownerState)) : variant.style);\n      }\n    });\n    return result;\n  }\n  return resolvedStylesArg;\n}\nfunction createStyled(input = {}) {\n  const {\n    themeId,\n    defaultTheme = systemDefaultTheme,\n    rootShouldForwardProp = shouldForwardProp,\n    slotShouldForwardProp = shouldForwardProp\n  } = input;\n  const systemSx = props => {\n    return (0, _styleFunctionSx.default)((0, _extends2.default)({}, props, {\n      theme: resolveTheme((0, _extends2.default)({}, props, {\n        defaultTheme,\n        themeId\n      }))\n    }));\n  };\n  systemSx.__mui_systemSx = true;\n  return (tag, inputOptions = {}) => {\n    // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n    (0, _styledEngine.internal_processStyles)(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n    const {\n        name: componentName,\n        slot: componentSlot,\n        skipVariantsResolver: inputSkipVariantsResolver,\n        skipSx: inputSkipSx,\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n      } = inputOptions,\n      options = (0, _objectWithoutPropertiesLoose2.default)(inputOptions, _excluded3);\n\n    // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n    const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n    const skipSx = inputSkipSx || false;\n    let label;\n    if (process.env.NODE_ENV !== 'production') {\n      if (componentName) {\n        // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n        // For more details: https://github.com/mui/material-ui/pull/37908\n        label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n      }\n    }\n    let shouldForwardPropOption = shouldForwardProp;\n\n    // TODO v6: remove `Root` in the next major release\n    // For more details: https://github.com/mui/material-ui/pull/37908\n    if (componentSlot === 'Root' || componentSlot === 'root') {\n      shouldForwardPropOption = rootShouldForwardProp;\n    } else if (componentSlot) {\n      // any other slot specified\n      shouldForwardPropOption = slotShouldForwardProp;\n    } else if (isStringTag(tag)) {\n      // for string (html) tag, preserve the behavior in emotion & styled-components.\n      shouldForwardPropOption = undefined;\n    }\n    const defaultStyledResolver = (0, _styledEngine.default)(tag, (0, _extends2.default)({\n      shouldForwardProp: shouldForwardPropOption,\n      label\n    }, options));\n    const transformStyleArg = stylesArg => {\n      // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n      // component stays as a function. This condition makes sure that we do not interpolate functions\n      // which are basically components used as a selectors.\n      if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || (0, _deepmerge.isPlainObject)(stylesArg)) {\n        return props => processStyleArg(stylesArg, (0, _extends2.default)({}, props, {\n          theme: resolveTheme({\n            theme: props.theme,\n            defaultTheme,\n            themeId\n          })\n        }));\n      }\n      return stylesArg;\n    };\n    const muiStyledResolver = (styleArg, ...expressions) => {\n      let transformedStyleArg = transformStyleArg(styleArg);\n      const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n      if (componentName && overridesResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          const theme = resolveTheme((0, _extends2.default)({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n            return null;\n          }\n          const styleOverrides = theme.components[componentName].styleOverrides;\n          const resolvedStyleOverrides = {};\n          // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n          Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n            resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, (0, _extends2.default)({}, props, {\n              theme\n            }));\n          });\n          return overridesResolver(props, resolvedStyleOverrides);\n        });\n      }\n      if (componentName && !skipVariantsResolver) {\n        expressionsWithDefaultTheme.push(props => {\n          var _theme$components;\n          const theme = resolveTheme((0, _extends2.default)({}, props, {\n            defaultTheme,\n            themeId\n          }));\n          const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n          return processStyleArg({\n            variants: themeVariants\n          }, (0, _extends2.default)({}, props, {\n            theme\n          }));\n        });\n      }\n      if (!skipSx) {\n        expressionsWithDefaultTheme.push(systemSx);\n      }\n      const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n      if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n        const placeholders = new Array(numOfCustomFnsApplied).fill('');\n        // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n        transformedStyleArg = [...styleArg, ...placeholders];\n        transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n      }\n      const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n      if (process.env.NODE_ENV !== 'production') {\n        let displayName;\n        if (componentName) {\n          displayName = `${componentName}${(0, _capitalize.default)(componentSlot || '')}`;\n        }\n        if (displayName === undefined) {\n          displayName = `Styled(${(0, _getDisplayName.default)(tag)})`;\n        }\n        Component.displayName = displayName;\n      }\n      if (tag.muiName) {\n        Component.muiName = tag.muiName;\n      }\n      return Component;\n    };\n    if (defaultStyledResolver.withConfig) {\n      muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n    }\n    return muiStyledResolver;\n  };\n}","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n  return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","import slotShouldForwardProp from './slotShouldForwardProp';\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nimport rootShouldForwardProp from './rootShouldForwardProp';\nexport { default as slotShouldForwardProp } from './slotShouldForwardProp';\nexport { default as rootShouldForwardProp } from './rootShouldForwardProp';\nconst styled = createStyled({\n  themeId: THEME_ID,\n  defaultTheme,\n  rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"theme\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider as SystemThemeProvider } from '@mui/system';\nimport THEME_ID from './identifier';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function ThemeProvider(_ref) {\n  let {\n      theme: themeInput\n    } = _ref,\n    props = _objectWithoutPropertiesLoose(_ref, _excluded);\n  const scopedTheme = themeInput[THEME_ID];\n  return /*#__PURE__*/_jsx(SystemThemeProvider, _extends({}, props, {\n    themeId: scopedTheme ? THEME_ID : undefined,\n    theme: scopedTheme || themeInput\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? ThemeProvider.propTypes = {\n  /**\n   * Your component tree.\n   */\n  children: PropTypes.node,\n  /**\n   * A theme object. You can provide a function to extend the outer theme.\n   */\n  theme: PropTypes.oneOfType([PropTypes.object, PropTypes.func]).isRequired\n} : void 0;","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nconst getOverlayAlpha = elevation => {\n  let alphaValue;\n  if (elevation < 1) {\n    alphaValue = 5.11916 * elevation ** 2;\n  } else {\n    alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n  }\n  return (alphaValue / 100).toFixed(2);\n};\nexport default getOverlayAlpha;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n  return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    fontSize,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n  };\n  return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n  name: 'MuiSvgIcon',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n  return {\n    userSelect: 'none',\n    width: '1em',\n    height: '1em',\n    display: 'inline-block',\n    // the <svg> will define the property that has `currentColor`\n    // for example heroicons uses fill=\"none\" and stroke=\"currentColor\"\n    fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n    flexShrink: 0,\n    transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n      duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n    }),\n    fontSize: {\n      inherit: 'inherit',\n      small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n      medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n      large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n    }[ownerState.fontSize],\n    // TODO v5 deprecate, v6 remove for sx\n    color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n      action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n      disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n      inherit: undefined\n    }[ownerState.color]\n  };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiSvgIcon'\n  });\n  const {\n      children,\n      className,\n      color = 'inherit',\n      component = 'svg',\n      fontSize = 'medium',\n      htmlColor,\n      inheritViewBox = false,\n      titleAccess,\n      viewBox = '0 0 24 24'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    fontSize,\n    instanceFontSize: inProps.fontSize,\n    inheritViewBox,\n    viewBox,\n    hasSvgAsChild\n  });\n  const more = {};\n  if (!inheritViewBox) {\n    more.viewBox = viewBox;\n  }\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    focusable: \"false\",\n    color: htmlColor,\n    \"aria-hidden\": titleAccess ? undefined : true,\n    role: titleAccess ? 'img' : undefined,\n    ref: ref\n  }, more, other, hasSvgAsChild && children.props, {\n    ownerState: ownerState,\n    children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n      children: titleAccess\n    }) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Node passed into the SVG element.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n   * @default 'inherit'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n   * @default 'medium'\n   */\n  fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n  /**\n   * Applies a color attribute to the SVG element.\n   */\n  htmlColor: PropTypes.string,\n  /**\n   * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n   * prop will be ignored.\n   * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n   * `component`'s viewBox to the root node.\n   * @default false\n   */\n  inheritViewBox: PropTypes.bool,\n  /**\n   * The shape-rendering attribute. The behavior of the different options is described on the\n   * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n   * If you are having issues with blurry icons you should investigate this prop.\n   */\n  shapeRendering: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Provides a human-readable title for the element that contains it.\n   * https://www.w3.org/TR/SVG-access/#Equivalent\n   */\n  titleAccess: PropTypes.string,\n  /**\n   * Allows you to redefine what the coordinates without units mean inside an SVG element.\n   * For example, if the SVG element is 500 (width) by 200 (height),\n   * and you pass viewBox=\"0 0 50 20\",\n   * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n   * to bottom right (50,20) and each unit will be worth 10px.\n   * @default '0 0 24 24'\n   */\n  viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n  function Component(props, ref) {\n    return /*#__PURE__*/_jsx(SvgIcon, _extends({\n      \"data-testid\": `${displayName}Icon`,\n      ref: ref\n    }, props, {\n      children: path\n    }));\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // Need to set `displayName` on the inner component for React.memo.\n    // React prior to 16.14 ignores `displayName` on the wrapper.\n    Component.displayName = `${displayName}Icon`;\n  }\n  Component.muiName = SvgIcon.muiName;\n  return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","import useThemeProps from '../styles/useThemeProps';\nexport { default as styled } from '../styles/styled';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function createUseThemeProps(name) {\n  return useThemeProps;\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  setPrototypeOf(subClass, superClass);\n}","export default {\n  disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n *   transition: `opacity ${duration}ms ease-in-out`,\n *   opacity: 0,\n * }\n *\n * const transitionStyles = {\n *   entering: { opacity: 1 },\n *   entered:  { opacity: 1 },\n *   exiting:  { opacity: 0 },\n *   exited:  { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n *   <Transition in={inProp} timeout={duration}>\n *     {state => (\n *       <div style={{\n *         ...defaultStyle,\n *         ...transitionStyles[state]\n *       }}>\n *         I'm a fade Transition!\n *       </div>\n *     )}\n *   </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n *  - `'entering'`\n *  - `'entered'`\n *  - `'exiting'`\n *  - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n *   const [inProp, setInProp] = useState(false);\n *   return (\n *     <div>\n *       <Transition in={inProp} timeout={500}>\n *         {state => (\n *           // ...\n *         )}\n *       </Transition>\n *       <button onClick={() => setInProp(true)}>\n *         Click to Enter\n *       </button>\n *     </div>\n *   );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(Transition, _React$Component);\n\n  function Transition(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n    var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n    var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n    var initialStatus;\n    _this.appearStatus = null;\n\n    if (props.in) {\n      if (appear) {\n        initialStatus = EXITED;\n        _this.appearStatus = ENTERING;\n      } else {\n        initialStatus = ENTERED;\n      }\n    } else {\n      if (props.unmountOnExit || props.mountOnEnter) {\n        initialStatus = UNMOUNTED;\n      } else {\n        initialStatus = EXITED;\n      }\n    }\n\n    _this.state = {\n      status: initialStatus\n    };\n    _this.nextCallback = null;\n    return _this;\n  }\n\n  Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n    var nextIn = _ref.in;\n\n    if (nextIn && prevState.status === UNMOUNTED) {\n      return {\n        status: EXITED\n      };\n    }\n\n    return null;\n  } // getSnapshotBeforeUpdate(prevProps) {\n  //   let nextStatus = null\n  //   if (prevProps !== this.props) {\n  //     const { status } = this.state\n  //     if (this.props.in) {\n  //       if (status !== ENTERING && status !== ENTERED) {\n  //         nextStatus = ENTERING\n  //       }\n  //     } else {\n  //       if (status === ENTERING || status === ENTERED) {\n  //         nextStatus = EXITING\n  //       }\n  //     }\n  //   }\n  //   return { nextStatus }\n  // }\n  ;\n\n  var _proto = Transition.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.updateStatus(true, this.appearStatus);\n  };\n\n  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n    var nextStatus = null;\n\n    if (prevProps !== this.props) {\n      var status = this.state.status;\n\n      if (this.props.in) {\n        if (status !== ENTERING && status !== ENTERED) {\n          nextStatus = ENTERING;\n        }\n      } else {\n        if (status === ENTERING || status === ENTERED) {\n          nextStatus = EXITING;\n        }\n      }\n    }\n\n    this.updateStatus(false, nextStatus);\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.cancelNextCallback();\n  };\n\n  _proto.getTimeouts = function getTimeouts() {\n    var timeout = this.props.timeout;\n    var exit, enter, appear;\n    exit = enter = appear = timeout;\n\n    if (timeout != null && typeof timeout !== 'number') {\n      exit = timeout.exit;\n      enter = timeout.enter; // TODO: remove fallback for next major\n\n      appear = timeout.appear !== undefined ? timeout.appear : enter;\n    }\n\n    return {\n      exit: exit,\n      enter: enter,\n      appear: appear\n    };\n  };\n\n  _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n    if (mounting === void 0) {\n      mounting = false;\n    }\n\n    if (nextStatus !== null) {\n      // nextStatus will always be ENTERING or EXITING.\n      this.cancelNextCallback();\n\n      if (nextStatus === ENTERING) {\n        if (this.props.unmountOnExit || this.props.mountOnEnter) {\n          var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n          // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n          // To make the animation happen,  we have to separate each rendering and avoid being processed as batched.\n\n          if (node) forceReflow(node);\n        }\n\n        this.performEnter(mounting);\n      } else {\n        this.performExit();\n      }\n    } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n      this.setState({\n        status: UNMOUNTED\n      });\n    }\n  };\n\n  _proto.performEnter = function performEnter(mounting) {\n    var _this2 = this;\n\n    var enter = this.props.enter;\n    var appearing = this.context ? this.context.isMounting : mounting;\n\n    var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n        maybeNode = _ref2[0],\n        maybeAppearing = _ref2[1];\n\n    var timeouts = this.getTimeouts();\n    var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n    // if we are mounting and running this it means appear _must_ be set\n\n    if (!mounting && !enter || config.disabled) {\n      this.safeSetState({\n        status: ENTERED\n      }, function () {\n        _this2.props.onEntered(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onEnter(maybeNode, maybeAppearing);\n    this.safeSetState({\n      status: ENTERING\n    }, function () {\n      _this2.props.onEntering(maybeNode, maybeAppearing);\n\n      _this2.onTransitionEnd(enterTimeout, function () {\n        _this2.safeSetState({\n          status: ENTERED\n        }, function () {\n          _this2.props.onEntered(maybeNode, maybeAppearing);\n        });\n      });\n    });\n  };\n\n  _proto.performExit = function performExit() {\n    var _this3 = this;\n\n    var exit = this.props.exit;\n    var timeouts = this.getTimeouts();\n    var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n    if (!exit || config.disabled) {\n      this.safeSetState({\n        status: EXITED\n      }, function () {\n        _this3.props.onExited(maybeNode);\n      });\n      return;\n    }\n\n    this.props.onExit(maybeNode);\n    this.safeSetState({\n      status: EXITING\n    }, function () {\n      _this3.props.onExiting(maybeNode);\n\n      _this3.onTransitionEnd(timeouts.exit, function () {\n        _this3.safeSetState({\n          status: EXITED\n        }, function () {\n          _this3.props.onExited(maybeNode);\n        });\n      });\n    });\n  };\n\n  _proto.cancelNextCallback = function cancelNextCallback() {\n    if (this.nextCallback !== null) {\n      this.nextCallback.cancel();\n      this.nextCallback = null;\n    }\n  };\n\n  _proto.safeSetState = function safeSetState(nextState, callback) {\n    // This shouldn't be necessary, but there are weird race conditions with\n    // setState callbacks and unmounting in testing, so always make sure that\n    // we can cancel any pending setState callbacks after we unmount.\n    callback = this.setNextCallback(callback);\n    this.setState(nextState, callback);\n  };\n\n  _proto.setNextCallback = function setNextCallback(callback) {\n    var _this4 = this;\n\n    var active = true;\n\n    this.nextCallback = function (event) {\n      if (active) {\n        active = false;\n        _this4.nextCallback = null;\n        callback(event);\n      }\n    };\n\n    this.nextCallback.cancel = function () {\n      active = false;\n    };\n\n    return this.nextCallback;\n  };\n\n  _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n    this.setNextCallback(handler);\n    var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n    var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n    if (!node || doesNotHaveTimeoutOrListener) {\n      setTimeout(this.nextCallback, 0);\n      return;\n    }\n\n    if (this.props.addEndListener) {\n      var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n          maybeNode = _ref3[0],\n          maybeNextCallback = _ref3[1];\n\n      this.props.addEndListener(maybeNode, maybeNextCallback);\n    }\n\n    if (timeout != null) {\n      setTimeout(this.nextCallback, timeout);\n    }\n  };\n\n  _proto.render = function render() {\n    var status = this.state.status;\n\n    if (status === UNMOUNTED) {\n      return null;\n    }\n\n    var _this$props = this.props,\n        children = _this$props.children,\n        _in = _this$props.in,\n        _mountOnEnter = _this$props.mountOnEnter,\n        _unmountOnExit = _this$props.unmountOnExit,\n        _appear = _this$props.appear,\n        _enter = _this$props.enter,\n        _exit = _this$props.exit,\n        _timeout = _this$props.timeout,\n        _addEndListener = _this$props.addEndListener,\n        _onEnter = _this$props.onEnter,\n        _onEntering = _this$props.onEntering,\n        _onEntered = _this$props.onEntered,\n        _onExit = _this$props.onExit,\n        _onExiting = _this$props.onExiting,\n        _onExited = _this$props.onExited,\n        _nodeRef = _this$props.nodeRef,\n        childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n    return (\n      /*#__PURE__*/\n      // allows for nested Transitions\n      React.createElement(TransitionGroupContext.Provider, {\n        value: null\n      }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n    );\n  };\n\n  return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * A React reference to DOM element that need to transition:\n   * https://stackoverflow.com/a/51127130/4671932\n   *\n   *   - When `nodeRef` prop is used, `node` is not passed to callback functions\n   *      (e.g. `onEnter`) because user already has direct access to the node.\n   *   - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n   *     `nodeRef` need to be provided to `Transition` with changed `key` prop\n   *     (see\n   *     [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n   */\n  nodeRef: PropTypes.shape({\n    current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n      var value = propValue[key];\n      return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n    }\n  }),\n\n  /**\n   * A `function` child can be used instead of a React element. This function is\n   * called with the current transition status (`'entering'`, `'entered'`,\n   * `'exiting'`, `'exited'`), which can be used to apply context\n   * specific props to a component.\n   *\n   * ```jsx\n   * <Transition in={this.state.in} timeout={150}>\n   *   {state => (\n   *     <MyComponent className={`fade fade-${state}`} />\n   *   )}\n   * </Transition>\n   * ```\n   */\n  children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n  /**\n   * Show the component; triggers the enter or exit states\n   */\n  in: PropTypes.bool,\n\n  /**\n   * By default the child component is mounted immediately along with\n   * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n   * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n   * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n   */\n  mountOnEnter: PropTypes.bool,\n\n  /**\n   * By default the child component stays mounted after it reaches the `'exited'` state.\n   * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n   */\n  unmountOnExit: PropTypes.bool,\n\n  /**\n   * By default the child component does not perform the enter transition when\n   * it first mounts, regardless of the value of `in`. If you want this\n   * behavior, set both `appear` and `in` to `true`.\n   *\n   * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n   * > only adds an additional enter transition. However, in the\n   * > `<CSSTransition>` component that first enter transition does result in\n   * > additional `.appear-*` classes, that way you can choose to style it\n   * > differently.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * Enable or disable enter transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * Enable or disable exit transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * The duration of the transition, in milliseconds.\n   * Required unless `addEndListener` is provided.\n   *\n   * You may specify a single timeout for all transitions:\n   *\n   * ```jsx\n   * timeout={500}\n   * ```\n   *\n   * or individually:\n   *\n   * ```jsx\n   * timeout={{\n   *  appear: 500,\n   *  enter: 300,\n   *  exit: 500,\n   * }}\n   * ```\n   *\n   * - `appear` defaults to the value of `enter`\n   * - `enter` defaults to `0`\n   * - `exit` defaults to `0`\n   *\n   * @type {number | { enter?: number, exit?: number, appear?: number }}\n   */\n  timeout: function timeout(props) {\n    var pt = timeoutsShape;\n    if (!props.addEndListener) pt = pt.isRequired;\n\n    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    return pt.apply(void 0, [props].concat(args));\n  },\n\n  /**\n   * Add a custom transition end trigger. Called with the transitioning\n   * DOM node and a `done` callback. Allows for more fine grained transition end\n   * logic. Timeouts are still used as a fallback if provided.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * ```jsx\n   * addEndListener={(node, done) => {\n   *   // use the css transitionend event to mark the finish of a transition\n   *   node.addEventListener('transitionend', done, false);\n   * }}\n   * ```\n   */\n  addEndListener: PropTypes.func,\n\n  /**\n   * Callback fired before the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEnter: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entering\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool)\n   */\n  onEntering: PropTypes.func,\n\n  /**\n   * Callback fired after the \"entered\" status is applied. An extra parameter\n   * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement, isAppearing: bool) -> void\n   */\n  onEntered: PropTypes.func,\n\n  /**\n   * Callback fired before the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExit: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exiting\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExiting: PropTypes.func,\n\n  /**\n   * Callback fired after the \"exited\" status is applied.\n   *\n   * **Note**: when `nodeRef` prop is passed, `node` is not passed\n   *\n   * @type Function(node: HtmlElement) -> void\n   */\n  onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n  in: false,\n  mountOnEnter: false,\n  unmountOnExit: false,\n  appear: false,\n  enter: true,\n  exit: true,\n  onEnter: noop,\n  onEntering: noop,\n  onEntered: noop,\n  onExit: noop,\n  onExiting: noop,\n  onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n  var mapper = function mapper(child) {\n    return mapFn && isValidElement(child) ? mapFn(child) : child;\n  };\n\n  var result = Object.create(null);\n  if (children) Children.map(children, function (c) {\n    return c;\n  }).forEach(function (child) {\n    // run the map function here instead so that the key is the computed one\n    result[child.key] = mapper(child);\n  });\n  return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n  prev = prev || {};\n  next = next || {};\n\n  function getValueForKey(key) {\n    return key in next ? next[key] : prev[key];\n  } // For each key of `next`, the list of keys to insert before that key in\n  // the combined list\n\n\n  var nextKeysPending = Object.create(null);\n  var pendingKeys = [];\n\n  for (var prevKey in prev) {\n    if (prevKey in next) {\n      if (pendingKeys.length) {\n        nextKeysPending[prevKey] = pendingKeys;\n        pendingKeys = [];\n      }\n    } else {\n      pendingKeys.push(prevKey);\n    }\n  }\n\n  var i;\n  var childMapping = {};\n\n  for (var nextKey in next) {\n    if (nextKeysPending[nextKey]) {\n      for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n        var pendingNextKey = nextKeysPending[nextKey][i];\n        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n      }\n    }\n\n    childMapping[nextKey] = getValueForKey(nextKey);\n  } // Finally, add the keys which didn't appear before any key in `next`\n\n\n  for (i = 0; i < pendingKeys.length; i++) {\n    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n  }\n\n  return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n  return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n  return getChildMapping(props.children, function (child) {\n    return cloneElement(child, {\n      onExited: onExited.bind(null, child),\n      in: true,\n      appear: getProp(child, 'appear', props),\n      enter: getProp(child, 'enter', props),\n      exit: getProp(child, 'exit', props)\n    });\n  });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n  var nextChildMapping = getChildMapping(nextProps.children);\n  var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n  Object.keys(children).forEach(function (key) {\n    var child = children[key];\n    if (!isValidElement(child)) return;\n    var hasPrev = (key in prevChildMapping);\n    var hasNext = (key in nextChildMapping);\n    var prevChild = prevChildMapping[key];\n    var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n    if (hasNext && (!hasPrev || isLeaving)) {\n      // console.log('entering', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: true,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    } else if (!hasNext && hasPrev && !isLeaving) {\n      // item is old (exiting)\n      // console.log('leaving', key)\n      children[key] = cloneElement(child, {\n        in: false\n      });\n    } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n      // item hasn't changed transition states\n      // copy over the last transition props;\n      // console.log('unchanged', key)\n      children[key] = cloneElement(child, {\n        onExited: onExited.bind(null, child),\n        in: prevChild.props.in,\n        exit: getProp(child, 'exit', nextProps),\n        enter: getProp(child, 'enter', nextProps)\n      });\n    }\n  });\n  return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n  return Object.keys(obj).map(function (k) {\n    return obj[k];\n  });\n};\n\nvar defaultProps = {\n  component: 'div',\n  childFactory: function childFactory(child) {\n    return child;\n  }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>`  does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n  _inheritsLoose(TransitionGroup, _React$Component);\n\n  function TransitionGroup(props, context) {\n    var _this;\n\n    _this = _React$Component.call(this, props, context) || this;\n\n    var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n    _this.state = {\n      contextValue: {\n        isMounting: true\n      },\n      handleExited: handleExited,\n      firstRender: true\n    };\n    return _this;\n  }\n\n  var _proto = TransitionGroup.prototype;\n\n  _proto.componentDidMount = function componentDidMount() {\n    this.mounted = true;\n    this.setState({\n      contextValue: {\n        isMounting: false\n      }\n    });\n  };\n\n  _proto.componentWillUnmount = function componentWillUnmount() {\n    this.mounted = false;\n  };\n\n  TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n    var prevChildMapping = _ref.children,\n        handleExited = _ref.handleExited,\n        firstRender = _ref.firstRender;\n    return {\n      children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n      firstRender: false\n    };\n  } // node is `undefined` when user provided `nodeRef` prop\n  ;\n\n  _proto.handleExited = function handleExited(child, node) {\n    var currentChildMapping = getChildMapping(this.props.children);\n    if (child.key in currentChildMapping) return;\n\n    if (child.props.onExited) {\n      child.props.onExited(node);\n    }\n\n    if (this.mounted) {\n      this.setState(function (state) {\n        var children = _extends({}, state.children);\n\n        delete children[child.key];\n        return {\n          children: children\n        };\n      });\n    }\n  };\n\n  _proto.render = function render() {\n    var _this$props = this.props,\n        Component = _this$props.component,\n        childFactory = _this$props.childFactory,\n        props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n    var contextValue = this.state.contextValue;\n    var children = values(this.state.children).map(childFactory);\n    delete props.appear;\n    delete props.enter;\n    delete props.exit;\n\n    if (Component === null) {\n      return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n        value: contextValue\n      }, children);\n    }\n\n    return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n      value: contextValue\n    }, /*#__PURE__*/React.createElement(Component, props, children));\n  };\n\n  return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  /**\n   * `<TransitionGroup>` renders a `<div>` by default. You can change this\n   * behavior by providing a `component` prop.\n   * If you use React v16+ and would like to avoid a wrapping `<div>` element\n   * you can pass in `component={null}`. This is useful if the wrapping div\n   * borks your css styles.\n   */\n  component: PropTypes.any,\n\n  /**\n   * A set of `<Transition>` components, that are toggled `in` and out as they\n   * leave. the `<TransitionGroup>` will inject specific transition props, so\n   * remember to spread them through if you are wrapping the `<Transition>` as\n   * with our `<Fade>` example.\n   *\n   * While this component is meant for multiple `Transition` or `CSSTransition`\n   * children, sometimes you may want to have a single transition child with\n   * content that you want to be transitioned out and in when you change it\n   * (e.g. routes, images etc.) In that case you can change the `key` prop of\n   * the transition child as you change its content, this will cause\n   * `TransitionGroup` to transition the child out and back in.\n   */\n  children: PropTypes.node,\n\n  /**\n   * A convenience prop that enables or disables appear animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  appear: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables enter animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  enter: PropTypes.bool,\n\n  /**\n   * A convenience prop that enables or disables exit animations\n   * for all children. Note that specifying this will override any defaults set\n   * on individual children Transitions.\n   */\n  exit: PropTypes.bool,\n\n  /**\n   * You may need to apply reactive updates to a child as it is exiting.\n   * This is generally done by using `cloneElement` however in the case of an exiting\n   * child the element has already been removed and not accessible to the consumer.\n   *\n   * If you do need to update a child as it leaves you can provide a `childFactory`\n   * to wrap every child, even the ones that are leaving.\n   *\n   * @type Function(child: ReactElement) -> ReactElement\n   */\n  childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n  var _style$transitionDura, _style$transitionTimi;\n  const {\n    timeout,\n    easing,\n    style = {}\n  } = props;\n  return {\n    duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n    easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n    delay: style.transitionDelay\n  };\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPaperUtilityClass(slot) {\n  return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"elevation\", \"square\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled from '../styles/styled';\nimport getOverlayAlpha from '../styles/getOverlayAlpha';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport { getPaperUtilityClass } from './paperClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    square,\n    elevation,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n  };\n  return composeClasses(slots, getPaperUtilityClass, classes);\n};\nconst PaperRoot = styled('div', {\n  name: 'MuiPaper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$vars$overlays;\n  return _extends({\n    backgroundColor: (theme.vars || theme).palette.background.paper,\n    color: (theme.vars || theme).palette.text.primary,\n    transition: theme.transitions.create('box-shadow')\n  }, !ownerState.square && {\n    borderRadius: theme.shape.borderRadius\n  }, ownerState.variant === 'outlined' && {\n    border: `1px solid ${(theme.vars || theme).palette.divider}`\n  }, ownerState.variant === 'elevation' && _extends({\n    boxShadow: (theme.vars || theme).shadows[ownerState.elevation]\n  }, !theme.vars && theme.palette.mode === 'dark' && {\n    backgroundImage: `linear-gradient(${alpha('#fff', getOverlayAlpha(ownerState.elevation))}, ${alpha('#fff', getOverlayAlpha(ownerState.elevation))})`\n  }, theme.vars && {\n    backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]\n  }));\n});\nconst Paper = /*#__PURE__*/React.forwardRef(function Paper(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPaper'\n  });\n  const {\n      className,\n      component = 'div',\n      elevation = 1,\n      square = false,\n      variant = 'elevation'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    elevation,\n    square,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const theme = useTheme();\n    if (theme.shadows[elevation] === undefined) {\n      console.error([`MUI: The elevation provided <Paper elevation={${elevation}}> is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n    }\n  }\n  return /*#__PURE__*/_jsx(PaperRoot, _extends({\n    as: component,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Shadow depth, corresponds to `dp` in the spec.\n   * It accepts values between 0 and 24 inclusive.\n   * @default 1\n   */\n  elevation: chainPropTypes(integerPropType, props => {\n    const {\n      elevation,\n      variant\n    } = props;\n    if (elevation > 0 && variant === 'outlined') {\n      return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n    }\n    return null;\n  }),\n  /**\n   * If `true`, rounded corners are disabled.\n   * @default false\n   */\n  square: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'elevation'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['elevation', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Paper;","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport function isHostComponent(element) {\n  return typeof element === 'string';\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { isHostComponent } from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport function appendOwnerState(elementType, otherProps, ownerState) {\n  if (elementType === undefined || isHostComponent(elementType)) {\n    return otherProps;\n  }\n  return _extends({}, otherProps, {\n    ownerState: _extends({}, otherProps.ownerState, ownerState)\n  });\n}","'use client';\n\nimport * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultContextValue = {\n  disableDefaultClasses: false\n};\nconst ClassNameConfiguratorContext = /*#__PURE__*/React.createContext(defaultContextValue);\nif (process.env.NODE_ENV !== 'production') {\n  ClassNameConfiguratorContext.displayName = 'ClassNameConfiguratorContext';\n}\n/**\n * @ignore - internal hook.\n *\n * Wraps the `generateUtilityClass` function and controls how the classes are generated.\n * Currently it only affects whether the classes are applied or not.\n *\n * @returns Function to be called with the `generateUtilityClass` function specific to a component to generate the classes.\n */\nexport function useClassNamesOverride(generateUtilityClass) {\n  const {\n    disableDefaultClasses\n  } = React.useContext(ClassNameConfiguratorContext);\n  return slot => {\n    if (disableDefaultClasses) {\n      return '';\n    }\n    return generateUtilityClass(slot);\n  };\n}\n\n/**\n * Allows to configure the components within to not apply any built-in classes.\n */\nexport function ClassNameConfigurator(props) {\n  const {\n    disableDefaultClasses,\n    children\n  } = props;\n  const contextValue = React.useMemo(() => ({\n    disableDefaultClasses: disableDefaultClasses != null ? disableDefaultClasses : false\n  }), [disableDefaultClasses]);\n  return /*#__PURE__*/_jsx(ClassNameConfiguratorContext.Provider, {\n    value: contextValue,\n    children: children\n  });\n}","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport function extractEventHandlers(object, excludeKeys = []) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport function resolveComponentProps(componentProps, ownerState, slotState) {\n  if (typeof componentProps === 'function') {\n    return componentProps(ownerState, slotState);\n  }\n  return componentProps;\n}","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport function omitEventHandlers(object) {\n  if (object === undefined) {\n    return {};\n  }\n  const result = {};\n  Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n    result[prop] = object[prop];\n  });\n  return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport { extractEventHandlers } from './extractEventHandlers';\nimport { omitEventHandlers } from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on a Base UI component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport function mergeSlotProps(parameters) {\n  const {\n    getSlotProps,\n    additionalProps,\n    externalSlotProps,\n    externalForwardedProps,\n    className\n  } = parameters;\n  if (!getSlotProps) {\n    // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n    // so we can simply merge all the props without having to worry about extracting event handlers.\n    const joinedClasses = clsx(additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n    const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n    const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n    if (joinedClasses.length > 0) {\n      props.className = joinedClasses;\n    }\n    if (Object.keys(mergedStyle).length > 0) {\n      props.style = mergedStyle;\n    }\n    return {\n      props,\n      internalRef: undefined\n    };\n  }\n\n  // In this case, getSlotProps is responsible for calling the external event handlers.\n  // We don't need to include them in the merged props because of this.\n\n  const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n  const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n  const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n  const internalSlotProps = getSlotProps(eventHandlers);\n\n  // The order of classes is important here.\n  // Emotion (that we use in libraries consuming Base UI) depends on this order\n  // to properly override style. It requires the most important classes to be last\n  // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n  const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n  const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n  const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n  if (joinedClasses.length > 0) {\n    props.className = joinedClasses;\n  }\n  if (Object.keys(mergedStyle).length > 0) {\n    props.style = mergedStyle;\n  }\n  return {\n    props,\n    internalRef: internalSlotProps.ref\n  };\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\", \"skipResolvingSlotProps\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { appendOwnerState } from './appendOwnerState';\nimport { mergeSlotProps } from './mergeSlotProps';\nimport { resolveComponentProps } from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport function useSlotProps(parameters) {\n  var _parameters$additiona;\n  const {\n      elementType,\n      externalSlotProps,\n      ownerState,\n      skipResolvingSlotProps = false\n    } = parameters,\n    rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n  const resolvedComponentsProps = skipResolvingSlotProps ? {} : resolveComponentProps(externalSlotProps, ownerState);\n  const {\n    props: mergedProps,\n    internalRef\n  } = mergeSlotProps(_extends({}, rest, {\n    externalSlotProps: resolvedComponentsProps\n  }));\n  const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n  const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n    ref\n  }), ownerState);\n  return props;\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"elementType\", \"ownerState\", \"externalForwardedProps\", \"getSlotOwnerState\", \"internalForwardedProps\"],\n  _excluded2 = [\"component\", \"slots\", \"slotProps\"],\n  _excluded3 = [\"component\"];\nimport useForkRef from '@mui/utils/useForkRef';\nimport { appendOwnerState, resolveComponentProps, mergeSlotProps } from '@mui/base/utils';\n/**\n * An internal function to create a Material UI slot.\n *\n * This is an advanced version of Base UI `useSlotProps` because Material UI allows leaf component to be customized via `component` prop\n * while Base UI does not need to support leaf component customization.\n *\n * @param {string} name: name of the slot\n * @param {object} parameters\n * @returns {[Slot, slotProps]} The slot's React component and the slot's props\n *\n * Note: the returned slot's props\n * - will never contain `component` prop.\n * - might contain `as` prop.\n */\nexport default function useSlot(\n/**\n * The slot's name. All Material UI components should have `root` slot.\n *\n * If the name is `root`, the logic behaves differently from other slots,\n * e.g. the `externalForwardedProps` are spread to `root` slot but not other slots.\n */\nname, parameters) {\n  const {\n      className,\n      elementType: initialElementType,\n      ownerState,\n      externalForwardedProps,\n      getSlotOwnerState,\n      internalForwardedProps\n    } = parameters,\n    useSlotPropsParams = _objectWithoutPropertiesLoose(parameters, _excluded);\n  const {\n      component: rootComponent,\n      slots = {\n        [name]: undefined\n      },\n      slotProps = {\n        [name]: undefined\n      }\n    } = externalForwardedProps,\n    other = _objectWithoutPropertiesLoose(externalForwardedProps, _excluded2);\n  const elementType = slots[name] || initialElementType;\n\n  // `slotProps[name]` can be a callback that receives the component's ownerState.\n  // `resolvedComponentsProps` is always a plain object.\n  const resolvedComponentsProps = resolveComponentProps(slotProps[name], ownerState);\n  const _mergeSlotProps = mergeSlotProps(_extends({\n      className\n    }, useSlotPropsParams, {\n      externalForwardedProps: name === 'root' ? other : undefined,\n      externalSlotProps: resolvedComponentsProps\n    })),\n    {\n      props: {\n        component: slotComponent\n      },\n      internalRef\n    } = _mergeSlotProps,\n    mergedProps = _objectWithoutPropertiesLoose(_mergeSlotProps.props, _excluded3);\n  const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, parameters.ref);\n  const slotOwnerState = getSlotOwnerState ? getSlotOwnerState(mergedProps) : {};\n  const finalOwnerState = _extends({}, ownerState, slotOwnerState);\n  const LeafComponent = name === 'root' ? slotComponent || rootComponent : slotComponent;\n  const props = appendOwnerState(elementType, _extends({}, name === 'root' && !rootComponent && !slots[name] && internalForwardedProps, name !== 'root' && !slots[name] && internalForwardedProps, mergedProps, LeafComponent && {\n    as: LeafComponent\n  }, {\n    ref\n  }), finalOwnerState);\n  Object.keys(slotOwnerState).forEach(propName => {\n    delete props[propName];\n  });\n  return [elementType, props];\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n  const {\n    className,\n    classes,\n    pulsate = false,\n    rippleX,\n    rippleY,\n    rippleSize,\n    in: inProp,\n    onExited,\n    timeout\n  } = props;\n  const [leaving, setLeaving] = React.useState(false);\n  const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n  const rippleStyles = {\n    width: rippleSize,\n    height: rippleSize,\n    top: -(rippleSize / 2) + rippleY,\n    left: -(rippleSize / 2) + rippleX\n  };\n  const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n  if (!inProp && !leaving) {\n    setLeaving(true);\n  }\n  React.useEffect(() => {\n    if (!inProp && onExited != null) {\n      // react-transition-group#onExited\n      const timeoutId = setTimeout(onExited, timeout);\n      return () => {\n        clearTimeout(timeoutId);\n      };\n    }\n    return undefined;\n  }, [onExited, inProp, timeout]);\n  return /*#__PURE__*/_jsx(\"span\", {\n    className: rippleClassName,\n    style: rippleStyles,\n    children: /*#__PURE__*/_jsx(\"span\", {\n      className: childClassName\n    })\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object.isRequired,\n  className: PropTypes.string,\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore - injected from TransitionGroup\n   */\n  onExited: PropTypes.func,\n  /**\n   * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n   */\n  pulsate: PropTypes.bool,\n  /**\n   * Diameter of the ripple.\n   */\n  rippleSize: PropTypes.number,\n  /**\n   * Horizontal position of the ripple center.\n   */\n  rippleX: PropTypes.number,\n  /**\n   * Vertical position of the ripple center.\n   */\n  rippleY: PropTypes.number,\n  /**\n   * exit delay\n   */\n  timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n  return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport useTimeout from '@mui/utils/useTimeout';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n  0% {\n    transform: scale(0);\n    opacity: 0.1;\n  }\n\n  100% {\n    transform: scale(1);\n    opacity: 0.3;\n  }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0;\n  }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n  0% {\n    transform: scale(1);\n  }\n\n  50% {\n    transform: scale(0.92);\n  }\n\n  100% {\n    transform: scale(1);\n  }\n`));\nexport const TouchRippleRoot = styled('span', {\n  name: 'MuiTouchRipple',\n  slot: 'Root'\n})({\n  overflow: 'hidden',\n  pointerEvents: 'none',\n  position: 'absolute',\n  zIndex: 0,\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0,\n  borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n  name: 'MuiTouchRipple',\n  slot: 'Ripple'\n})(_t4 || (_t4 = _`\n  opacity: 0;\n  position: absolute;\n\n  &.${0} {\n    opacity: 0.3;\n    transform: scale(1);\n    animation-name: ${0};\n    animation-duration: ${0}ms;\n    animation-timing-function: ${0};\n  }\n\n  &.${0} {\n    animation-duration: ${0}ms;\n  }\n\n  & .${0} {\n    opacity: 1;\n    display: block;\n    width: 100%;\n    height: 100%;\n    border-radius: 50%;\n    background-color: currentColor;\n  }\n\n  & .${0} {\n    opacity: 0;\n    animation-name: ${0};\n    animation-duration: ${0}ms;\n    animation-timing-function: ${0};\n  }\n\n  & .${0} {\n    position: absolute;\n    /* @noflip */\n    left: 0px;\n    top: 0;\n    animation-name: ${0};\n    animation-duration: 2500ms;\n    animation-timing-function: ${0};\n    animation-iteration-count: infinite;\n    animation-delay: 200ms;\n  }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n  theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n  theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n  theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n  theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiTouchRipple'\n  });\n  const {\n      center: centerProp = false,\n      classes = {},\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [ripples, setRipples] = React.useState([]);\n  const nextKey = React.useRef(0);\n  const rippleCallback = React.useRef(null);\n  React.useEffect(() => {\n    if (rippleCallback.current) {\n      rippleCallback.current();\n      rippleCallback.current = null;\n    }\n  }, [ripples]);\n\n  // Used to filter out mouse emulated events on mobile.\n  const ignoringMouseDown = React.useRef(false);\n  // We use a timer in order to only show the ripples for touch \"click\" like events.\n  // We don't want to display the ripple for touch scroll events.\n  const startTimer = useTimeout();\n\n  // This is the hook called once the previous timeout is ready.\n  const startTimerCommit = React.useRef(null);\n  const container = React.useRef(null);\n  const startCommit = React.useCallback(params => {\n    const {\n      pulsate,\n      rippleX,\n      rippleY,\n      rippleSize,\n      cb\n    } = params;\n    setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n      classes: {\n        ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n        rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n        ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n        child: clsx(classes.child, touchRippleClasses.child),\n        childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n        childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n      },\n      timeout: DURATION,\n      pulsate: pulsate,\n      rippleX: rippleX,\n      rippleY: rippleY,\n      rippleSize: rippleSize\n    }, nextKey.current)]);\n    nextKey.current += 1;\n    rippleCallback.current = cb;\n  }, [classes]);\n  const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n    const {\n      pulsate = false,\n      center = centerProp || options.pulsate,\n      fakeElement = false // For test purposes\n    } = options;\n    if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n      ignoringMouseDown.current = false;\n      return;\n    }\n    if ((event == null ? void 0 : event.type) === 'touchstart') {\n      ignoringMouseDown.current = true;\n    }\n    const element = fakeElement ? null : container.current;\n    const rect = element ? element.getBoundingClientRect() : {\n      width: 0,\n      height: 0,\n      left: 0,\n      top: 0\n    };\n\n    // Get the size of the ripple\n    let rippleX;\n    let rippleY;\n    let rippleSize;\n    if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n      rippleX = Math.round(rect.width / 2);\n      rippleY = Math.round(rect.height / 2);\n    } else {\n      const {\n        clientX,\n        clientY\n      } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n      rippleX = Math.round(clientX - rect.left);\n      rippleY = Math.round(clientY - rect.top);\n    }\n    if (center) {\n      rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n      // For some reason the animation is broken on Mobile Chrome if the size is even.\n      if (rippleSize % 2 === 0) {\n        rippleSize += 1;\n      }\n    } else {\n      const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n      const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n      rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n    }\n\n    // Touche devices\n    if (event != null && event.touches) {\n      // check that this isn't another touchstart due to multitouch\n      // otherwise we will only clear a single timer when unmounting while two\n      // are running\n      if (startTimerCommit.current === null) {\n        // Prepare the ripple effect.\n        startTimerCommit.current = () => {\n          startCommit({\n            pulsate,\n            rippleX,\n            rippleY,\n            rippleSize,\n            cb\n          });\n        };\n        // Delay the execution of the ripple effect.\n        // We have to make a tradeoff with this delay value.\n        startTimer.start(DELAY_RIPPLE, () => {\n          if (startTimerCommit.current) {\n            startTimerCommit.current();\n            startTimerCommit.current = null;\n          }\n        });\n      }\n    } else {\n      startCommit({\n        pulsate,\n        rippleX,\n        rippleY,\n        rippleSize,\n        cb\n      });\n    }\n  }, [centerProp, startCommit, startTimer]);\n  const pulsate = React.useCallback(() => {\n    start({}, {\n      pulsate: true\n    });\n  }, [start]);\n  const stop = React.useCallback((event, cb) => {\n    startTimer.clear();\n\n    // The touch interaction occurs too quickly.\n    // We still want to show ripple effect.\n    if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n      startTimerCommit.current();\n      startTimerCommit.current = null;\n      startTimer.start(0, () => {\n        stop(event, cb);\n      });\n      return;\n    }\n    startTimerCommit.current = null;\n    setRipples(oldRipples => {\n      if (oldRipples.length > 0) {\n        return oldRipples.slice(1);\n      }\n      return oldRipples;\n    });\n    rippleCallback.current = cb;\n  }, [startTimer]);\n  React.useImperativeHandle(ref, () => ({\n    pulsate,\n    start,\n    stop\n  }), [pulsate, start, stop]);\n  return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n    className: clsx(touchRippleClasses.root, classes.root, className),\n    ref: container\n  }, other, {\n    children: /*#__PURE__*/_jsx(TransitionGroup, {\n      component: null,\n      exit: true,\n      children: ripples\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n  /**\n   * If `true`, the ripple starts at the center of the component\n   * rather than at the point of interaction.\n   */\n  center: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    focusVisible,\n    focusVisibleClassName,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n  };\n  const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n  if (focusVisible && focusVisibleClassName) {\n    composedClasses.root += ` ${focusVisibleClassName}`;\n  }\n  return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n  name: 'MuiButtonBase',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  display: 'inline-flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  position: 'relative',\n  boxSizing: 'border-box',\n  WebkitTapHighlightColor: 'transparent',\n  backgroundColor: 'transparent',\n  // Reset default value\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0,\n  border: 0,\n  margin: 0,\n  // Remove the margin in Safari\n  borderRadius: 0,\n  padding: 0,\n  // Remove the padding in Firefox\n  cursor: 'pointer',\n  userSelect: 'none',\n  verticalAlign: 'middle',\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  textDecoration: 'none',\n  // So we take precedent over the style of a native <a /> element.\n  color: 'inherit',\n  '&::-moz-focus-inner': {\n    borderStyle: 'none' // Remove Firefox dotted outline.\n  },\n  [`&.${buttonBaseClasses.disabled}`]: {\n    pointerEvents: 'none',\n    // Disable link interactions\n    cursor: 'default'\n  },\n  '@media print': {\n    colorAdjust: 'exact'\n  }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiButtonBase'\n  });\n  const {\n      action,\n      centerRipple = false,\n      children,\n      className,\n      component = 'button',\n      disabled = false,\n      disableRipple = false,\n      disableTouchRipple = false,\n      focusRipple = false,\n      LinkComponent = 'a',\n      onBlur,\n      onClick,\n      onContextMenu,\n      onDragLeave,\n      onFocus,\n      onFocusVisible,\n      onKeyDown,\n      onKeyUp,\n      onMouseDown,\n      onMouseLeave,\n      onMouseUp,\n      onTouchEnd,\n      onTouchMove,\n      onTouchStart,\n      tabIndex = 0,\n      TouchRippleProps,\n      touchRippleRef,\n      type\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const buttonRef = React.useRef(null);\n  const rippleRef = React.useRef(null);\n  const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n  const {\n    isFocusVisibleRef,\n    onFocus: handleFocusVisible,\n    onBlur: handleBlurVisible,\n    ref: focusVisibleRef\n  } = useIsFocusVisible();\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  if (disabled && focusVisible) {\n    setFocusVisible(false);\n  }\n  React.useImperativeHandle(action, () => ({\n    focusVisible: () => {\n      setFocusVisible(true);\n      buttonRef.current.focus();\n    }\n  }), []);\n  const [mountedState, setMountedState] = React.useState(false);\n  React.useEffect(() => {\n    setMountedState(true);\n  }, []);\n  const enableTouchRipple = mountedState && !disableRipple && !disabled;\n  React.useEffect(() => {\n    if (focusVisible && focusRipple && !disableRipple && mountedState) {\n      rippleRef.current.pulsate();\n    }\n  }, [disableRipple, focusRipple, focusVisible, mountedState]);\n  function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n    return useEventCallback(event => {\n      if (eventCallback) {\n        eventCallback(event);\n      }\n      const ignore = skipRippleAction;\n      if (!ignore && rippleRef.current) {\n        rippleRef.current[rippleAction](event);\n      }\n      return true;\n    });\n  }\n  const handleMouseDown = useRippleHandler('start', onMouseDown);\n  const handleContextMenu = useRippleHandler('stop', onContextMenu);\n  const handleDragLeave = useRippleHandler('stop', onDragLeave);\n  const handleMouseUp = useRippleHandler('stop', onMouseUp);\n  const handleMouseLeave = useRippleHandler('stop', event => {\n    if (focusVisible) {\n      event.preventDefault();\n    }\n    if (onMouseLeave) {\n      onMouseLeave(event);\n    }\n  });\n  const handleTouchStart = useRippleHandler('start', onTouchStart);\n  const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n  const handleTouchMove = useRippleHandler('stop', onTouchMove);\n  const handleBlur = useRippleHandler('stop', event => {\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  }, false);\n  const handleFocus = useEventCallback(event => {\n    // Fix for https://github.com/facebook/react/issues/7769\n    if (!buttonRef.current) {\n      buttonRef.current = event.currentTarget;\n    }\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setFocusVisible(true);\n      if (onFocusVisible) {\n        onFocusVisible(event);\n      }\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  });\n  const isNonNativeButton = () => {\n    const button = buttonRef.current;\n    return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n  };\n\n  /**\n   * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n   */\n  const keydownRef = React.useRef(false);\n  const handleKeyDown = useEventCallback(event => {\n    // Check if key is already down to avoid repeats being counted as multiple activations\n    if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n      keydownRef.current = true;\n      rippleRef.current.stop(event, () => {\n        rippleRef.current.start(event);\n      });\n    }\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n      event.preventDefault();\n      if (onClick) {\n        onClick(event);\n      }\n    }\n  });\n  const handleKeyUp = useEventCallback(event => {\n    // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n    // https://codesandbox.io/p/sandbox/button-keyup-preventdefault-dn7f0\n    if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n      keydownRef.current = false;\n      rippleRef.current.stop(event, () => {\n        rippleRef.current.pulsate(event);\n      });\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n\n    // Keyboard accessibility for non interactive elements\n    if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n      onClick(event);\n    }\n  });\n  let ComponentProp = component;\n  if (ComponentProp === 'button' && (other.href || other.to)) {\n    ComponentProp = LinkComponent;\n  }\n  const buttonProps = {};\n  if (ComponentProp === 'button') {\n    buttonProps.type = type === undefined ? 'button' : type;\n    buttonProps.disabled = disabled;\n  } else {\n    if (!other.href && !other.to) {\n      buttonProps.role = 'button';\n    }\n    if (disabled) {\n      buttonProps['aria-disabled'] = disabled;\n    }\n  }\n  const handleRef = useForkRef(ref, focusVisibleRef, buttonRef);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (enableTouchRipple && !rippleRef.current) {\n        console.error(['MUI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n      }\n    }, [enableTouchRipple]);\n  }\n  const ownerState = _extends({}, props, {\n    centerRipple,\n    component,\n    disabled,\n    disableRipple,\n    disableTouchRipple,\n    focusRipple,\n    tabIndex,\n    focusVisible\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(ButtonBaseRoot, _extends({\n    as: ComponentProp,\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    onBlur: handleBlur,\n    onClick: onClick,\n    onContextMenu: handleContextMenu,\n    onFocus: handleFocus,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    onMouseDown: handleMouseDown,\n    onMouseLeave: handleMouseLeave,\n    onMouseUp: handleMouseUp,\n    onDragLeave: handleDragLeave,\n    onTouchEnd: handleTouchEnd,\n    onTouchMove: handleTouchMove,\n    onTouchStart: handleTouchStart,\n    ref: handleRef,\n    tabIndex: disabled ? -1 : tabIndex,\n    type: type\n  }, buttonProps, other, {\n    children: [children, enableTouchRipple ?\n    /*#__PURE__*/\n    /* TouchRipple is only needed client-side, x2 boost on the server. */\n    _jsx(TouchRipple, _extends({\n      ref: handleRippleRef,\n      center: centerRipple\n    }, TouchRippleProps)) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A ref for imperative actions.\n   * It currently only supports `focusVisible()` action.\n   */\n  action: refType,\n  /**\n   * If `true`, the ripples are centered.\n   * They won't start at the cursor interaction position.\n   * @default false\n   */\n  centerRipple: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If `true`, the touch ripple effect is disabled.\n   * @default false\n   */\n  disableTouchRipple: PropTypes.bool,\n  /**\n   * If `true`, the base button will have a keyboard focus ripple.\n   * @default false\n   */\n  focusRipple: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  href: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  /**\n   * The component used to render a link when the `href` prop is provided.\n   * @default 'a'\n   */\n  LinkComponent: PropTypes.elementType,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onContextMenu: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onDragLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component is focused with a keyboard.\n   * We trigger a `onFocus` callback too.\n   */\n  onFocusVisible: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseLeave: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onMouseUp: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchEnd: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchMove: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onTouchStart: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * Props applied to the `TouchRipple` element.\n   */\n  TouchRippleProps: PropTypes.object,\n  /**\n   * A ref that points to the `TouchRipple` element.\n   */\n  touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n    current: PropTypes.shape({\n      pulsate: PropTypes.func.isRequired,\n      start: PropTypes.func.isRequired,\n      stop: PropTypes.func.isRequired\n    })\n  })]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default ButtonBase;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAlertUtilityClass(slot) {\n  return generateUtilityClass('MuiAlert', slot);\n}\nconst alertClasses = generateUtilityClasses('MuiAlert', ['root', 'action', 'icon', 'message', 'filled', 'colorSuccess', 'colorInfo', 'colorWarning', 'colorError', 'filledSuccess', 'filledInfo', 'filledWarning', 'filledError', 'outlined', 'outlinedSuccess', 'outlinedInfo', 'outlinedWarning', 'outlinedError', 'standard', 'standardSuccess', 'standardInfo', 'standardWarning', 'standardError']);\nexport default alertClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getIconButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiIconButton', slot);\n}\nconst iconButtonClasses = generateUtilityClasses('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default iconButtonClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"edge\", \"children\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"size\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport iconButtonClasses, { getIconButtonUtilityClass } from './iconButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    color,\n    edge,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', disabled && 'disabled', color !== 'default' && `color${capitalize(color)}`, edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`]\n  };\n  return composeClasses(slots, getIconButtonUtilityClass, classes);\n};\nconst IconButtonRoot = styled(ButtonBase, {\n  name: 'MuiIconButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  textAlign: 'center',\n  flex: '0 0 auto',\n  fontSize: theme.typography.pxToRem(24),\n  padding: 8,\n  borderRadius: '50%',\n  overflow: 'visible',\n  // Explicitly set the default value to solve a bug on IE11.\n  color: (theme.vars || theme).palette.action.active,\n  transition: theme.transitions.create('background-color', {\n    duration: theme.transitions.duration.shortest\n  })\n}, !ownerState.disableRipple && {\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.edge === 'start' && {\n  marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n  marginRight: ownerState.size === 'small' ? -3 : -12\n}), ({\n  theme,\n  ownerState\n}) => {\n  var _palette;\n  const palette = (_palette = (theme.vars || theme).palette) == null ? void 0 : _palette[ownerState.color];\n  return _extends({}, ownerState.color === 'inherit' && {\n    color: 'inherit'\n  }, ownerState.color !== 'inherit' && ownerState.color !== 'default' && _extends({\n    color: palette == null ? void 0 : palette.main\n  }, !ownerState.disableRipple && {\n    '&:hover': _extends({}, palette && {\n      backgroundColor: theme.vars ? `rgba(${palette.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(palette.main, theme.palette.action.hoverOpacity)\n    }, {\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    })\n  }), ownerState.size === 'small' && {\n    padding: 5,\n    fontSize: theme.typography.pxToRem(18)\n  }, ownerState.size === 'large' && {\n    padding: 12,\n    fontSize: theme.typography.pxToRem(28)\n  }, {\n    [`&.${iconButtonClasses.disabled}`]: {\n      backgroundColor: 'transparent',\n      color: (theme.vars || theme).palette.action.disabled\n    }\n  });\n});\n\n/**\n * Refer to the [Icons](/material-ui/icons/) section of the documentation\n * regarding the available icon options.\n */\nconst IconButton = /*#__PURE__*/React.forwardRef(function IconButton(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiIconButton'\n  });\n  const {\n      edge = false,\n      children,\n      className,\n      color = 'default',\n      disabled = false,\n      disableFocusRipple = false,\n      size = 'medium'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    edge,\n    color,\n    disabled,\n    disableFocusRipple,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(IconButtonRoot, _extends({\n    className: clsx(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    ref: ref\n  }, other, {\n    ownerState: ownerState,\n    children: children\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? IconButton.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The icon to display.\n   */\n  children: chainPropTypes(PropTypes.node, props => {\n    const found = React.Children.toArray(props.children).some(child => /*#__PURE__*/React.isValidElement(child) && child.props.onClick);\n    if (found) {\n      return new Error(['MUI: You are providing an onClick event listener to a child of a button element.', 'Prefer applying it to the IconButton directly.', 'This guarantees that the whole <button> will be responsive to click events.'].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default IconButton;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"children\", \"className\", \"closeText\", \"color\", \"components\", \"componentsProps\", \"icon\", \"iconMapping\", \"onClose\", \"role\", \"severity\", \"slotProps\", \"slots\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { darken, lighten } from '@mui/system/colorManipulator';\nimport { styled, createUseThemeProps } from '../zero-styled';\nimport useSlot from '../utils/useSlot';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nimport alertClasses, { getAlertUtilityClass } from './alertClasses';\nimport IconButton from '../IconButton';\nimport SuccessOutlinedIcon from '../internal/svg-icons/SuccessOutlined';\nimport ReportProblemOutlinedIcon from '../internal/svg-icons/ReportProblemOutlined';\nimport ErrorOutlineIcon from '../internal/svg-icons/ErrorOutline';\nimport InfoOutlinedIcon from '../internal/svg-icons/InfoOutlined';\nimport CloseIcon from '../internal/svg-icons/Close';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useThemeProps = createUseThemeProps('MuiAlert');\nconst useUtilityClasses = ownerState => {\n  const {\n    variant,\n    color,\n    severity,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color || severity)}`, `${variant}${capitalize(color || severity)}`, `${variant}`],\n    icon: ['icon'],\n    message: ['message'],\n    action: ['action']\n  };\n  return composeClasses(slots, getAlertUtilityClass, classes);\n};\nconst AlertRoot = styled(Paper, {\n  name: 'MuiAlert',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color || ownerState.severity)}`]];\n  }\n})(({\n  theme\n}) => {\n  const getColor = theme.palette.mode === 'light' ? darken : lighten;\n  const getBackgroundColor = theme.palette.mode === 'light' ? lighten : darken;\n  return _extends({}, theme.typography.body2, {\n    backgroundColor: 'transparent',\n    display: 'flex',\n    padding: '6px 16px',\n    variants: [...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'standard'\n      },\n      style: {\n        color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n        backgroundColor: theme.vars ? theme.vars.palette.Alert[`${color}StandardBg`] : getBackgroundColor(theme.palette[color].light, 0.9),\n        [`& .${alertClasses.icon}`]: theme.vars ? {\n          color: theme.vars.palette.Alert[`${color}IconColor`]\n        } : {\n          color: theme.palette[color].main\n        }\n      }\n    })), ...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'outlined'\n      },\n      style: {\n        color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n        border: `1px solid ${(theme.vars || theme).palette[color].light}`,\n        [`& .${alertClasses.icon}`]: theme.vars ? {\n          color: theme.vars.palette.Alert[`${color}IconColor`]\n        } : {\n          color: theme.palette[color].main\n        }\n      }\n    })), ...Object.entries(theme.palette).filter(([, value]) => value.main && value.dark).map(([color]) => ({\n      props: {\n        colorSeverity: color,\n        variant: 'filled'\n      },\n      style: _extends({\n        fontWeight: theme.typography.fontWeightMedium\n      }, theme.vars ? {\n        color: theme.vars.palette.Alert[`${color}FilledColor`],\n        backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`]\n      } : {\n        backgroundColor: theme.palette.mode === 'dark' ? theme.palette[color].dark : theme.palette[color].main,\n        color: theme.palette.getContrastText(theme.palette[color].main)\n      })\n    }))]\n  });\n});\nconst AlertIcon = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => styles.icon\n})({\n  marginRight: 12,\n  padding: '7px 0',\n  display: 'flex',\n  fontSize: 22,\n  opacity: 0.9\n});\nconst AlertMessage = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Message',\n  overridesResolver: (props, styles) => styles.message\n})({\n  padding: '8px 0',\n  minWidth: 0,\n  overflow: 'auto'\n});\nconst AlertAction = styled('div', {\n  name: 'MuiAlert',\n  slot: 'Action',\n  overridesResolver: (props, styles) => styles.action\n})({\n  display: 'flex',\n  alignItems: 'flex-start',\n  padding: '4px 0 0 16px',\n  marginLeft: 'auto',\n  marginRight: -8\n});\nconst defaultIconMapping = {\n  success: /*#__PURE__*/_jsx(SuccessOutlinedIcon, {\n    fontSize: \"inherit\"\n  }),\n  warning: /*#__PURE__*/_jsx(ReportProblemOutlinedIcon, {\n    fontSize: \"inherit\"\n  }),\n  error: /*#__PURE__*/_jsx(ErrorOutlineIcon, {\n    fontSize: \"inherit\"\n  }),\n  info: /*#__PURE__*/_jsx(InfoOutlinedIcon, {\n    fontSize: \"inherit\"\n  })\n};\nconst Alert = /*#__PURE__*/React.forwardRef(function Alert(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiAlert'\n  });\n  const {\n      action,\n      children,\n      className,\n      closeText = 'Close',\n      color,\n      components = {},\n      componentsProps = {},\n      icon,\n      iconMapping = defaultIconMapping,\n      onClose,\n      role = 'alert',\n      severity = 'success',\n      slotProps = {},\n      slots = {},\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    severity,\n    variant,\n    colorSeverity: color || severity\n  });\n  const classes = useUtilityClasses(ownerState);\n  const externalForwardedProps = {\n    slots: _extends({\n      closeButton: components.CloseButton,\n      closeIcon: components.CloseIcon\n    }, slots),\n    slotProps: _extends({}, componentsProps, slotProps)\n  };\n  const [CloseButtonSlot, closeButtonProps] = useSlot('closeButton', {\n    elementType: IconButton,\n    externalForwardedProps,\n    ownerState\n  });\n  const [CloseIconSlot, closeIconProps] = useSlot('closeIcon', {\n    elementType: CloseIcon,\n    externalForwardedProps,\n    ownerState\n  });\n  return /*#__PURE__*/_jsxs(AlertRoot, _extends({\n    role: role,\n    elevation: 0,\n    ownerState: ownerState,\n    className: clsx(classes.root, className),\n    ref: ref\n  }, other, {\n    children: [icon !== false ? /*#__PURE__*/_jsx(AlertIcon, {\n      ownerState: ownerState,\n      className: classes.icon,\n      children: icon || iconMapping[severity] || defaultIconMapping[severity]\n    }) : null, /*#__PURE__*/_jsx(AlertMessage, {\n      ownerState: ownerState,\n      className: classes.message,\n      children: children\n    }), action != null ? /*#__PURE__*/_jsx(AlertAction, {\n      ownerState: ownerState,\n      className: classes.action,\n      children: action\n    }) : null, action == null && onClose ? /*#__PURE__*/_jsx(AlertAction, {\n      ownerState: ownerState,\n      className: classes.action,\n      children: /*#__PURE__*/_jsx(CloseButtonSlot, _extends({\n        size: \"small\",\n        \"aria-label\": closeText,\n        title: closeText,\n        color: \"inherit\",\n        onClick: onClose\n      }, closeButtonProps, {\n        children: /*#__PURE__*/_jsx(CloseIconSlot, _extends({\n          fontSize: \"small\"\n        }, closeIconProps))\n      }))\n    }) : null]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Alert.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The action to display. It renders after the message, at the end of the alert.\n   */\n  action: PropTypes.node,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Override the default label for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: PropTypes.string,\n  /**\n   * The color of the component. Unless provided, the value is taken from the `severity` prop.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * @deprecated use the `slots` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    CloseButton: PropTypes.elementType,\n    CloseIcon: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @deprecated use the `slotProps` prop instead. This prop will be removed in v7. [How to migrate](/material-ui/migration/migrating-from-deprecated-apis/).\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    closeButton: PropTypes.object,\n    closeIcon: PropTypes.object\n  }),\n  /**\n   * Override the icon displayed before the children.\n   * Unless provided, the icon is mapped to the value of the `severity` prop.\n   * Set to `false` to remove the `icon`.\n   */\n  icon: PropTypes.node,\n  /**\n   * The component maps the `severity` prop to a range of different icons,\n   * for instance success to `<SuccessOutlined>`.\n   * If you wish to change this mapping, you can provide your own.\n   * Alternatively, you can use the `icon` prop to override the icon displayed.\n   */\n  iconMapping: PropTypes.shape({\n    error: PropTypes.node,\n    info: PropTypes.node,\n    success: PropTypes.node,\n    warning: PropTypes.node\n  }),\n  /**\n   * Callback fired when the component requests to be closed.\n   * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * The ARIA role attribute of the element.\n   * @default 'alert'\n   */\n  role: PropTypes.string,\n  /**\n   * The severity of the alert. This defines the color and icon used.\n   * @default 'success'\n   */\n  severity: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    closeButton: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    closeIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    closeButton: PropTypes.elementType,\n    closeIcon: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'standard'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default Alert;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getTypographyUtilityClass(slot) {\n  return generateUtilityClass('MuiTypography', slot);\n}\nconst typographyClasses = generateUtilityClasses('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\nexport default typographyClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { extendSxProp } from '@mui/system/styleFunctionSx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getTypographyUtilityClass } from './typographyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    align,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n  };\n  return composeClasses(slots, getTypographyUtilityClass, classes);\n};\nexport const TypographyRoot = styled('span', {\n  name: 'MuiTypography',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  margin: 0\n}, ownerState.variant === 'inherit' && {\n  // Some elements, like <button> on Chrome have default font that doesn't inherit, reset this.\n  font: 'inherit'\n}, ownerState.variant !== 'inherit' && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {\n  textAlign: ownerState.align\n}, ownerState.noWrap && {\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  whiteSpace: 'nowrap'\n}, ownerState.gutterBottom && {\n  marginBottom: '0.35em'\n}, ownerState.paragraph && {\n  marginBottom: 16\n}));\nconst defaultVariantMapping = {\n  h1: 'h1',\n  h2: 'h2',\n  h3: 'h3',\n  h4: 'h4',\n  h5: 'h5',\n  h6: 'h6',\n  subtitle1: 'h6',\n  subtitle2: 'h6',\n  body1: 'p',\n  body2: 'p',\n  inherit: 'p'\n};\n\n// TODO v6: deprecate these color values in v5.x and remove the transformation in v6\nconst colorTransformations = {\n  primary: 'primary.main',\n  textPrimary: 'text.primary',\n  secondary: 'secondary.main',\n  textSecondary: 'text.secondary',\n  error: 'error.main'\n};\nconst transformDeprecatedColors = color => {\n  return colorTransformations[color] || color;\n};\nconst Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) {\n  const themeProps = useThemeProps({\n    props: inProps,\n    name: 'MuiTypography'\n  });\n  const color = transformDeprecatedColors(themeProps.color);\n  const props = extendSxProp(_extends({}, themeProps, {\n    color\n  }));\n  const {\n      align = 'inherit',\n      className,\n      component,\n      gutterBottom = false,\n      noWrap = false,\n      paragraph = false,\n      variant = 'body1',\n      variantMapping = defaultVariantMapping\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    align,\n    color,\n    className,\n    component,\n    gutterBottom,\n    noWrap,\n    paragraph,\n    variant,\n    variantMapping\n  });\n  const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(TypographyRoot, _extends({\n    as: Component,\n    ref: ref,\n    ownerState: ownerState,\n    className: clsx(classes.root, className)\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Set the text-align on the component.\n   * @default 'inherit'\n   */\n  align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the text will have a bottom margin.\n   * @default false\n   */\n  gutterBottom: PropTypes.bool,\n  /**\n   * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n   *\n   * Note that text overflow can only happen with block or inline-block level elements\n   * (the element needs to have a width in order to overflow).\n   * @default false\n   */\n  noWrap: PropTypes.bool,\n  /**\n   * If `true`, the element will be a paragraph element.\n   * @default false\n   */\n  paragraph: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Applies the theme typography styles.\n   * @default 'body1'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string]),\n  /**\n   * The component maps the variant prop to a range of different HTML element types.\n   * For instance, subtitle1 to `<h6>`.\n   * If you wish to change that mapping, you can provide your own.\n   * Alternatively, you can use the `component` prop.\n   * @default {\n   *   h1: 'h1',\n   *   h2: 'h2',\n   *   h3: 'h3',\n   *   h4: 'h4',\n   *   h5: 'h5',\n   *   h6: 'h6',\n   *   subtitle1: 'h6',\n   *   subtitle2: 'h6',\n   *   body1: 'p',\n   *   body2: 'p',\n   *   inherit: 'p',\n   * }\n   */\n  variantMapping: PropTypes /* @typescript-to-proptypes-ignore */.object\n} : void 0;\nexport default Typography;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAlertTitleUtilityClass(slot) {\n  return generateUtilityClass('MuiAlertTitle', slot);\n}\nconst alertTitleClasses = generateUtilityClasses('MuiAlertTitle', ['root']);\nexport default alertTitleClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { styled, createUseThemeProps } from '../zero-styled';\nimport Typography from '../Typography';\nimport { getAlertTitleUtilityClass } from './alertTitleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useThemeProps = createUseThemeProps('MuiAlertTitle');\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, getAlertTitleUtilityClass, classes);\n};\nconst AlertTitleRoot = styled(Typography, {\n  name: 'MuiAlertTitle',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})(({\n  theme\n}) => {\n  return {\n    fontWeight: theme.typography.fontWeightMedium,\n    marginTop: -2\n  };\n});\nconst AlertTitle = /*#__PURE__*/React.forwardRef(function AlertTitle(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiAlertTitle'\n  });\n  const {\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = props;\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(AlertTitleRoot, _extends({\n    gutterBottom: true,\n    component: \"div\",\n    ownerState: ownerState,\n    ref: ref,\n    className: clsx(classes.root, className)\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AlertTitle.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AlertTitle;","import { globalStateClasses } from '@mui/utils/generateUtilityClass';\nconst GLOBAL_CLASS_PREFIX = 'base';\nfunction buildStateClass(state) {\n  return `${GLOBAL_CLASS_PREFIX}--${state}`;\n}\nfunction buildSlotClass(componentName, slot) {\n  return `${GLOBAL_CLASS_PREFIX}-${componentName}-${slot}`;\n}\nexport function generateUtilityClass(componentName, slot) {\n  const globalStateClass = globalStateClasses[slot];\n  return globalStateClass ? buildStateClass(globalStateClass) : buildSlotClass(componentName, slot);\n}\nexport function isGlobalState(slot) {\n  return globalStateClasses[slot] !== undefined;\n}","import { generateUtilityClass } from '../generateUtilityClass';\nexport function generateUtilityClasses(componentName, slots) {\n  const result = {};\n  slots.forEach(slot => {\n    result[slot] = generateUtilityClass(componentName, slot);\n  });\n  return result;\n}","'use client';\n\n/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n  const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n  if (!Number.isNaN(tabindexAttr)) {\n    return tabindexAttr;\n  }\n\n  // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n  // so if they don't have a tabindex attribute specifically set, assume it's 0.\n  // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n  //  `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n  //  yet they are still part of the regular tab order; in FF, they get a default\n  //  `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n  //  order, consider their tab index to be 0.\n  if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {\n    return 0;\n  }\n  return node.tabIndex;\n}\nfunction isNonTabbableRadio(node) {\n  if (node.tagName !== 'INPUT' || node.type !== 'radio') {\n    return false;\n  }\n  if (!node.name) {\n    return false;\n  }\n  const getRadio = selector => node.ownerDocument.querySelector(`input[type=\"radio\"]${selector}`);\n  let roving = getRadio(`[name=\"${node.name}\"]:checked`);\n  if (!roving) {\n    roving = getRadio(`[name=\"${node.name}\"]`);\n  }\n  return roving !== node;\n}\nfunction isNodeMatchingSelectorFocusable(node) {\n  if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {\n    return false;\n  }\n  return true;\n}\nfunction defaultGetTabbable(root) {\n  const regularTabNodes = [];\n  const orderedTabNodes = [];\n  Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {\n    const nodeTabIndex = getTabIndex(node);\n    if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {\n      return;\n    }\n    if (nodeTabIndex === 0) {\n      regularTabNodes.push(node);\n    } else {\n      orderedTabNodes.push({\n        documentOrder: i,\n        tabIndex: nodeTabIndex,\n        node: node\n      });\n    }\n  });\n  return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);\n}\nfunction defaultIsEnabled() {\n  return true;\n}\n\n/**\n * Utility component that locks focus inside the component.\n *\n * Demos:\n *\n * - [Focus Trap](https://mui.com/base-ui/react-focus-trap/)\n *\n * API:\n *\n * - [FocusTrap API](https://mui.com/base-ui/react-focus-trap/components-api/#focus-trap)\n */\nfunction FocusTrap(props) {\n  const {\n    children,\n    disableAutoFocus = false,\n    disableEnforceFocus = false,\n    disableRestoreFocus = false,\n    getTabbable = defaultGetTabbable,\n    isEnabled = defaultIsEnabled,\n    open\n  } = props;\n  const ignoreNextEnforceFocus = React.useRef(false);\n  const sentinelStart = React.useRef(null);\n  const sentinelEnd = React.useRef(null);\n  const nodeToRestore = React.useRef(null);\n  const reactFocusEventTarget = React.useRef(null);\n  // This variable is useful when disableAutoFocus is true.\n  // It waits for the active element to move into the component to activate.\n  const activated = React.useRef(false);\n  const rootRef = React.useRef(null);\n  // @ts-expect-error TODO upstream fix\n  const handleRef = useForkRef(children.ref, rootRef);\n  const lastKeydown = React.useRef(null);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    activated.current = !disableAutoFocus;\n  }, [disableAutoFocus, open]);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = ownerDocument(rootRef.current);\n    if (!rootRef.current.contains(doc.activeElement)) {\n      if (!rootRef.current.hasAttribute('tabIndex')) {\n        if (process.env.NODE_ENV !== 'production') {\n          console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n        }\n        rootRef.current.setAttribute('tabIndex', '-1');\n      }\n      if (activated.current) {\n        rootRef.current.focus();\n      }\n    }\n    return () => {\n      // restoreLastFocus()\n      if (!disableRestoreFocus) {\n        // In IE11 it is possible for document.activeElement to be null resulting\n        // in nodeToRestore.current being null.\n        // Not all elements in IE11 have a focus method.\n        // Once IE11 support is dropped the focus() call can be unconditional.\n        if (nodeToRestore.current && nodeToRestore.current.focus) {\n          ignoreNextEnforceFocus.current = true;\n          nodeToRestore.current.focus();\n        }\n        nodeToRestore.current = null;\n      }\n    };\n    // Missing `disableRestoreFocus` which is fine.\n    // We don't support changing that prop on an open FocusTrap\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [open]);\n  React.useEffect(() => {\n    // We might render an empty child.\n    if (!open || !rootRef.current) {\n      return;\n    }\n    const doc = ownerDocument(rootRef.current);\n    const loopFocus = nativeEvent => {\n      lastKeydown.current = nativeEvent;\n      if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {\n        return;\n      }\n\n      // Make sure the next tab starts from the right place.\n      // doc.activeElement refers to the origin.\n      if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {\n        // We need to ignore the next contain as\n        // it will try to move the focus back to the rootRef element.\n        ignoreNextEnforceFocus.current = true;\n        if (sentinelEnd.current) {\n          sentinelEnd.current.focus();\n        }\n      }\n    };\n    const contain = () => {\n      const rootElement = rootRef.current;\n\n      // Cleanup functions are executed lazily in React 17.\n      // Contain can be called between the component being unmounted and its cleanup function being run.\n      if (rootElement === null) {\n        return;\n      }\n      if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {\n        ignoreNextEnforceFocus.current = false;\n        return;\n      }\n\n      // The focus is already inside\n      if (rootElement.contains(doc.activeElement)) {\n        return;\n      }\n\n      // The disableEnforceFocus is set and the focus is outside of the focus trap (and sentinel nodes)\n      if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {\n        return;\n      }\n\n      // if the focus event is not coming from inside the children's react tree, reset the refs\n      if (doc.activeElement !== reactFocusEventTarget.current) {\n        reactFocusEventTarget.current = null;\n      } else if (reactFocusEventTarget.current !== null) {\n        return;\n      }\n      if (!activated.current) {\n        return;\n      }\n      let tabbable = [];\n      if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {\n        tabbable = getTabbable(rootRef.current);\n      }\n\n      // one of the sentinel nodes was focused, so move the focus\n      // to the first/last tabbable element inside the focus trap\n      if (tabbable.length > 0) {\n        var _lastKeydown$current, _lastKeydown$current2;\n        const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');\n        const focusNext = tabbable[0];\n        const focusPrevious = tabbable[tabbable.length - 1];\n        if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {\n          if (isShiftTab) {\n            focusPrevious.focus();\n          } else {\n            focusNext.focus();\n          }\n        }\n        // no tabbable elements in the trap focus or the focus was outside of the focus trap\n      } else {\n        rootElement.focus();\n      }\n    };\n    doc.addEventListener('focusin', contain);\n    doc.addEventListener('keydown', loopFocus, true);\n\n    // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.\n    // for example https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n    // Instead, we can look if the active element was restored on the BODY element.\n    //\n    // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n    // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n    const interval = setInterval(() => {\n      if (doc.activeElement && doc.activeElement.tagName === 'BODY') {\n        contain();\n      }\n    }, 50);\n    return () => {\n      clearInterval(interval);\n      doc.removeEventListener('focusin', contain);\n      doc.removeEventListener('keydown', loopFocus, true);\n    };\n  }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);\n  const onFocus = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n    reactFocusEventTarget.current = event.target;\n    const childrenPropsHandler = children.props.onFocus;\n    if (childrenPropsHandler) {\n      childrenPropsHandler(event);\n    }\n  };\n  const handleFocusSentinel = event => {\n    if (nodeToRestore.current === null) {\n      nodeToRestore.current = event.relatedTarget;\n    }\n    activated.current = true;\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelStart,\n      \"data-testid\": \"sentinelStart\"\n    }), /*#__PURE__*/React.cloneElement(children, {\n      ref: handleRef,\n      onFocus\n    }), /*#__PURE__*/_jsx(\"div\", {\n      tabIndex: open ? 0 : -1,\n      onFocus: handleFocusSentinel,\n      ref: sentinelEnd,\n      \"data-testid\": \"sentinelEnd\"\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? FocusTrap.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef,\n  /**\n   * If `true`, the focus trap will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any focus trap children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the focus trap will not prevent focus from leaving the focus trap while open.\n   *\n   * Generally this should never be set to `true` as it makes the focus trap less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, the focus trap will not restore focus to previously focused element once\n   * focus trap is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.\n   * For instance, you can provide the \"tabbable\" npm dependency.\n   * @param {HTMLElement} root\n   */\n  getTabbable: PropTypes.func,\n  /**\n   * This prop extends the `open` prop.\n   * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.\n   * This prop should be memoized.\n   * It can be used to support multiple focus trap mounted at the same time.\n   * @default function defaultIsEnabled(): boolean {\n   *   return true;\n   * }\n   */\n  isEnabled: PropTypes.func,\n  /**\n   * If `true`, focus is locked.\n   */\n  open: PropTypes.bool.isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  FocusTrap['propTypes' + ''] = exactProp(FocusTrap.propTypes);\n}\nexport { FocusTrap };","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base-ui/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base-ui/react-portal/components-api/#portal)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, forwardedRef) {\n  const {\n    children,\n    container,\n    disablePortal = false\n  } = props;\n  const [mountNode, setMountNode] = React.useState(null);\n  // @ts-expect-error TODO upstream fix\n  const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, forwardedRef);\n  useEnhancedEffect(() => {\n    if (!disablePortal) {\n      setMountNode(getContainer(container) || document.body);\n    }\n  }, [container, disablePortal]);\n  useEnhancedEffect(() => {\n    if (mountNode && !disablePortal) {\n      setRef(forwardedRef, mountNode);\n      return () => {\n        setRef(forwardedRef, null);\n      };\n    }\n    return undefined;\n  }, [forwardedRef, mountNode, disablePortal]);\n  if (disablePortal) {\n    if ( /*#__PURE__*/React.isValidElement(children)) {\n      const newProps = {\n        ref: handleRef\n      };\n      return /*#__PURE__*/React.cloneElement(children, newProps);\n    }\n    return /*#__PURE__*/_jsx(React.Fragment, {\n      children: children\n    });\n  }\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The children to render into the `container`.\n   */\n  children: PropTypes.node,\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n  // eslint-disable-next-line\n  Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport { Portal };","import { unstable_ownerWindow as ownerWindow, unstable_ownerDocument as ownerDocument, unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\n// Is a vertical scrollbar displayed?\nfunction isOverflowing(container) {\n  const doc = ownerDocument(container);\n  if (doc.body === container) {\n    return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;\n  }\n  return container.scrollHeight > container.clientHeight;\n}\nexport function ariaHidden(element, show) {\n  if (show) {\n    element.setAttribute('aria-hidden', 'true');\n  } else {\n    element.removeAttribute('aria-hidden');\n  }\n}\nfunction getPaddingRight(element) {\n  return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;\n}\nfunction isAriaHiddenForbiddenOnElement(element) {\n  // The forbidden HTML tags are the ones from ARIA specification that\n  // can be children of body and can't have aria-hidden attribute.\n  // cf. https://www.w3.org/TR/html-aria/#docconformance\n  const forbiddenTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE', 'LINK', 'MAP', 'META', 'NOSCRIPT', 'PICTURE', 'COL', 'COLGROUP', 'PARAM', 'SLOT', 'SOURCE', 'TRACK'];\n  const isForbiddenTagName = forbiddenTagNames.indexOf(element.tagName) !== -1;\n  const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';\n  return isForbiddenTagName || isInputHidden;\n}\nfunction ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {\n  const blacklist = [mountElement, currentElement, ...elementsToExclude];\n  [].forEach.call(container.children, element => {\n    const isNotExcludedElement = blacklist.indexOf(element) === -1;\n    const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);\n    if (isNotExcludedElement && isNotForbiddenElement) {\n      ariaHidden(element, show);\n    }\n  });\n}\nfunction findIndexOf(items, callback) {\n  let idx = -1;\n  items.some((item, index) => {\n    if (callback(item)) {\n      idx = index;\n      return true;\n    }\n    return false;\n  });\n  return idx;\n}\nfunction handleContainer(containerInfo, props) {\n  const restoreStyle = [];\n  const container = containerInfo.container;\n  if (!props.disableScrollLock) {\n    if (isOverflowing(container)) {\n      // Compute the size before applying overflow hidden to avoid any scroll jumps.\n      const scrollbarSize = getScrollbarSize(ownerDocument(container));\n      restoreStyle.push({\n        value: container.style.paddingRight,\n        property: 'padding-right',\n        el: container\n      });\n      // Use computed style, here to get the real padding to add our scrollbar width.\n      container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;\n\n      // .mui-fixed is a global helper.\n      const fixedElements = ownerDocument(container).querySelectorAll('.mui-fixed');\n      [].forEach.call(fixedElements, element => {\n        restoreStyle.push({\n          value: element.style.paddingRight,\n          property: 'padding-right',\n          el: element\n        });\n        element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;\n      });\n    }\n    let scrollContainer;\n    if (container.parentNode instanceof DocumentFragment) {\n      scrollContainer = ownerDocument(container).body;\n    } else {\n      // Support html overflow-y: auto for scroll stability between pages\n      // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n      const parent = container.parentElement;\n      const containerWindow = ownerWindow(container);\n      scrollContainer = (parent == null ? void 0 : parent.nodeName) === 'HTML' && containerWindow.getComputedStyle(parent).overflowY === 'scroll' ? parent : container;\n    }\n\n    // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n    // screensize shrink.\n    restoreStyle.push({\n      value: scrollContainer.style.overflow,\n      property: 'overflow',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowX,\n      property: 'overflow-x',\n      el: scrollContainer\n    }, {\n      value: scrollContainer.style.overflowY,\n      property: 'overflow-y',\n      el: scrollContainer\n    });\n    scrollContainer.style.overflow = 'hidden';\n  }\n  const restore = () => {\n    restoreStyle.forEach(({\n      value,\n      el,\n      property\n    }) => {\n      if (value) {\n        el.style.setProperty(property, value);\n      } else {\n        el.style.removeProperty(property);\n      }\n    });\n  };\n  return restore;\n}\nfunction getHiddenSiblings(container) {\n  const hiddenSiblings = [];\n  [].forEach.call(container.children, element => {\n    if (element.getAttribute('aria-hidden') === 'true') {\n      hiddenSiblings.push(element);\n    }\n  });\n  return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\nexport class ModalManager {\n  constructor() {\n    this.containers = void 0;\n    this.modals = void 0;\n    this.modals = [];\n    this.containers = [];\n  }\n  add(modal, container) {\n    let modalIndex = this.modals.indexOf(modal);\n    if (modalIndex !== -1) {\n      return modalIndex;\n    }\n    modalIndex = this.modals.length;\n    this.modals.push(modal);\n\n    // If the modal we are adding is already in the DOM.\n    if (modal.modalRef) {\n      ariaHidden(modal.modalRef, false);\n    }\n    const hiddenSiblings = getHiddenSiblings(container);\n    ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);\n    const containerIndex = findIndexOf(this.containers, item => item.container === container);\n    if (containerIndex !== -1) {\n      this.containers[containerIndex].modals.push(modal);\n      return modalIndex;\n    }\n    this.containers.push({\n      modals: [modal],\n      container,\n      restore: null,\n      hiddenSiblings\n    });\n    return modalIndex;\n  }\n  mount(modal, props) {\n    const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n    const containerInfo = this.containers[containerIndex];\n    if (!containerInfo.restore) {\n      containerInfo.restore = handleContainer(containerInfo, props);\n    }\n  }\n  remove(modal, ariaHiddenState = true) {\n    const modalIndex = this.modals.indexOf(modal);\n    if (modalIndex === -1) {\n      return modalIndex;\n    }\n    const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n    const containerInfo = this.containers[containerIndex];\n    containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n    this.modals.splice(modalIndex, 1);\n\n    // If that was the last modal in a container, clean up the container.\n    if (containerInfo.modals.length === 0) {\n      // The modal might be closed before it had the chance to be mounted in the DOM.\n      if (containerInfo.restore) {\n        containerInfo.restore();\n      }\n      if (modal.modalRef) {\n        // In case the modal wasn't in the DOM yet.\n        ariaHidden(modal.modalRef, ariaHiddenState);\n      }\n      ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);\n      this.containers.splice(containerIndex, 1);\n    } else {\n      // Otherwise make sure the next top modal is visible to a screen reader.\n      const nextTop = containerInfo.modals[containerInfo.modals.length - 1];\n      // as soon as a modal is adding its modalRef is undefined. it can't set\n      // aria-hidden because the dom element doesn't exist either\n      // when modal was unmounted before modalRef gets null\n      if (nextTop.modalRef) {\n        ariaHidden(nextTop.modalRef, false);\n      }\n    }\n    return modalIndex;\n  }\n  isTopModal(modal) {\n    return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n  }\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_useEventCallback as useEventCallback, unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nimport { extractEventHandlers } from '../utils';\nimport { ModalManager, ariaHidden } from './ModalManager';\nfunction getContainer(container) {\n  return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n  return children ? children.props.hasOwnProperty('in') : false;\n}\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst defaultManager = new ModalManager();\n/**\n *\n * Demos:\n *\n * - [Modal](https://mui.com/base-ui/react-modal/#hook)\n *\n * API:\n *\n * - [useModal API](https://mui.com/base-ui/react-modal/hooks-api/#use-modal)\n */\nexport function useModal(parameters) {\n  const {\n    container,\n    disableEscapeKeyDown = false,\n    disableScrollLock = false,\n    // @ts-ignore internal logic - Base UI supports the manager as a prop too\n    manager = defaultManager,\n    closeAfterTransition = false,\n    onTransitionEnter,\n    onTransitionExited,\n    children,\n    onClose,\n    open,\n    rootRef\n  } = parameters;\n\n  // @ts-ignore internal logic\n  const modal = React.useRef({});\n  const mountNodeRef = React.useRef(null);\n  const modalRef = React.useRef(null);\n  const handleRef = useForkRef(modalRef, rootRef);\n  const [exited, setExited] = React.useState(!open);\n  const hasTransition = getHasTransition(children);\n  let ariaHiddenProp = true;\n  if (parameters['aria-hidden'] === 'false' || parameters['aria-hidden'] === false) {\n    ariaHiddenProp = false;\n  }\n  const getDoc = () => ownerDocument(mountNodeRef.current);\n  const getModal = () => {\n    modal.current.modalRef = modalRef.current;\n    modal.current.mount = mountNodeRef.current;\n    return modal.current;\n  };\n  const handleMounted = () => {\n    manager.mount(getModal(), {\n      disableScrollLock\n    });\n\n    // Fix a bug on Chrome where the scroll isn't initially 0.\n    if (modalRef.current) {\n      modalRef.current.scrollTop = 0;\n    }\n  };\n  const handleOpen = useEventCallback(() => {\n    const resolvedContainer = getContainer(container) || getDoc().body;\n    manager.add(getModal(), resolvedContainer);\n\n    // The element was already mounted.\n    if (modalRef.current) {\n      handleMounted();\n    }\n  });\n  const isTopModal = React.useCallback(() => manager.isTopModal(getModal()), [manager]);\n  const handlePortalRef = useEventCallback(node => {\n    mountNodeRef.current = node;\n    if (!node) {\n      return;\n    }\n    if (open && isTopModal()) {\n      handleMounted();\n    } else if (modalRef.current) {\n      ariaHidden(modalRef.current, ariaHiddenProp);\n    }\n  });\n  const handleClose = React.useCallback(() => {\n    manager.remove(getModal(), ariaHiddenProp);\n  }, [ariaHiddenProp, manager]);\n  React.useEffect(() => {\n    return () => {\n      handleClose();\n    };\n  }, [handleClose]);\n  React.useEffect(() => {\n    if (open) {\n      handleOpen();\n    } else if (!hasTransition || !closeAfterTransition) {\n      handleClose();\n    }\n  }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n  const createHandleKeyDown = otherHandlers => event => {\n    var _otherHandlers$onKeyD;\n    (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);\n\n    // The handler doesn't take event.defaultPrevented into account:\n    //\n    // event.preventDefault() is meant to stop default behaviors like\n    // clicking a checkbox to check it, hitting a button to submit a form,\n    // and hitting left arrow to move the cursor in a text input etc.\n    // Only special HTML elements have these default behaviors.\n    if (event.key !== 'Escape' || event.which === 229 ||\n    // Wait until IME is settled.\n    !isTopModal()) {\n      return;\n    }\n    if (!disableEscapeKeyDown) {\n      // Swallow the event, in case someone is listening for the escape key on the body.\n      event.stopPropagation();\n      if (onClose) {\n        onClose(event, 'escapeKeyDown');\n      }\n    }\n  };\n  const createHandleBackdropClick = otherHandlers => event => {\n    var _otherHandlers$onClic;\n    (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);\n    if (event.target !== event.currentTarget) {\n      return;\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const getRootProps = (otherHandlers = {}) => {\n    const propsEventHandlers = extractEventHandlers(parameters);\n\n    // The custom event handlers shouldn't be spread on the root element\n    delete propsEventHandlers.onTransitionEnter;\n    delete propsEventHandlers.onTransitionExited;\n    const externalEventHandlers = _extends({}, propsEventHandlers, otherHandlers);\n    return _extends({\n      role: 'presentation'\n    }, externalEventHandlers, {\n      onKeyDown: createHandleKeyDown(externalEventHandlers),\n      ref: handleRef\n    });\n  };\n  const getBackdropProps = (otherHandlers = {}) => {\n    const externalEventHandlers = otherHandlers;\n    return _extends({\n      'aria-hidden': true\n    }, externalEventHandlers, {\n      onClick: createHandleBackdropClick(externalEventHandlers),\n      open\n    });\n  };\n  const getTransitionProps = () => {\n    const handleEnter = () => {\n      setExited(false);\n      if (onTransitionEnter) {\n        onTransitionEnter();\n      }\n    };\n    const handleExited = () => {\n      setExited(true);\n      if (onTransitionExited) {\n        onTransitionExited();\n      }\n      if (closeAfterTransition) {\n        handleClose();\n      }\n    };\n    return {\n      onEnter: createChainedFunction(handleEnter, children == null ? void 0 : children.props.onEnter),\n      onExited: createChainedFunction(handleExited, children == null ? void 0 : children.props.onExited)\n    };\n  };\n  return {\n    getRootProps,\n    getBackdropProps,\n    getTransitionProps,\n    rootRef: handleRef,\n    portalRef: handlePortalRef,\n    isTopModal,\n    exited,\n    hasTransition\n  };\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n  return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n  return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n  return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n  if (node == null) {\n    return window;\n  }\n\n  if (node.toString() !== '[object Window]') {\n    var ownerDocument = node.ownerDocument;\n    return ownerDocument ? ownerDocument.defaultView || window : window;\n  }\n\n  return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n  var OwnElement = getWindow(node).Element;\n  return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n  var OwnElement = getWindow(node).HTMLElement;\n  return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n  // IE 11 has no ShadowRoot\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n\n  var OwnElement = getWindow(node).ShadowRoot;\n  return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n  var state = _ref.state;\n  Object.keys(state.elements).forEach(function (name) {\n    var style = state.styles[name] || {};\n    var attributes = state.attributes[name] || {};\n    var element = state.elements[name]; // arrow is optional + virtual elements\n\n    if (!isHTMLElement(element) || !getNodeName(element)) {\n      return;\n    } // Flow doesn't support to extend this property, but it's the most\n    // effective way to apply styles to an HTMLElement\n    // $FlowFixMe[cannot-write]\n\n\n    Object.assign(element.style, style);\n    Object.keys(attributes).forEach(function (name) {\n      var value = attributes[name];\n\n      if (value === false) {\n        element.removeAttribute(name);\n      } else {\n        element.setAttribute(name, value === true ? '' : value);\n      }\n    });\n  });\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state;\n  var initialStyles = {\n    popper: {\n      position: state.options.strategy,\n      left: '0',\n      top: '0',\n      margin: '0'\n    },\n    arrow: {\n      position: 'absolute'\n    },\n    reference: {}\n  };\n  Object.assign(state.elements.popper.style, initialStyles.popper);\n  state.styles = initialStyles;\n\n  if (state.elements.arrow) {\n    Object.assign(state.elements.arrow.style, initialStyles.arrow);\n  }\n\n  return function () {\n    Object.keys(state.elements).forEach(function (name) {\n      var element = state.elements[name];\n      var attributes = state.attributes[name] || {};\n      var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n      var style = styleProperties.reduce(function (style, property) {\n        style[property] = '';\n        return style;\n      }, {}); // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      }\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (attribute) {\n        element.removeAttribute(attribute);\n      });\n    });\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'applyStyles',\n  enabled: true,\n  phase: 'write',\n  fn: applyStyles,\n  effect: effect,\n  requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n  return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n  var uaData = navigator.userAgentData;\n\n  if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n    return uaData.brands.map(function (item) {\n      return item.brand + \"/\" + item.version;\n    }).join(' ');\n  }\n\n  return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n  return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n\n  var clientRect = element.getBoundingClientRect();\n  var scaleX = 1;\n  var scaleY = 1;\n\n  if (includeScale && isHTMLElement(element)) {\n    scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n    scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n  }\n\n  var _ref = isElement(element) ? getWindow(element) : window,\n      visualViewport = _ref.visualViewport;\n\n  var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n  var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n  var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n  var width = clientRect.width / scaleX;\n  var height = clientRect.height / scaleY;\n  return {\n    width: width,\n    height: height,\n    top: y,\n    right: x + width,\n    bottom: y + height,\n    left: x,\n    x: x,\n    y: y\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n  var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n  // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n  var width = element.offsetWidth;\n  var height = element.offsetHeight;\n\n  if (Math.abs(clientRect.width - width) <= 1) {\n    width = clientRect.width;\n  }\n\n  if (Math.abs(clientRect.height - height) <= 1) {\n    height = clientRect.height;\n  }\n\n  return {\n    x: element.offsetLeft,\n    y: element.offsetTop,\n    width: width,\n    height: height\n  };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n  var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n  if (parent.contains(child)) {\n    return true;\n  } // then fallback to custom implementation with Shadow DOM support\n  else if (rootNode && isShadowRoot(rootNode)) {\n      var next = child;\n\n      do {\n        if (next && parent.isSameNode(next)) {\n          return true;\n        } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n        next = next.parentNode || next.host;\n      } while (next);\n    } // Give up, the result is false\n\n\n  return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n  return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n  // $FlowFixMe[incompatible-return]: assume body is always available\n  return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n  element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n  if (getNodeName(element) === 'html') {\n    return element;\n  }\n\n  return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n    // $FlowFixMe[incompatible-return]\n    // $FlowFixMe[prop-missing]\n    element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n    element.parentNode || ( // DOM Element detected\n    isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n    // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n    getDocumentElement(element) // fallback\n\n  );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n  if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n  getComputedStyle(element).position === 'fixed') {\n    return null;\n  }\n\n  return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n  var isFirefox = /firefox/i.test(getUAString());\n  var isIE = /Trident/i.test(getUAString());\n\n  if (isIE && isHTMLElement(element)) {\n    // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n    var elementCss = getComputedStyle(element);\n\n    if (elementCss.position === 'fixed') {\n      return null;\n    }\n  }\n\n  var currentNode = getParentNode(element);\n\n  if (isShadowRoot(currentNode)) {\n    currentNode = currentNode.host;\n  }\n\n  while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n    var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n    // create a containing block.\n    // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n    if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n      return currentNode;\n    } else {\n      currentNode = currentNode.parentNode;\n    }\n  }\n\n  return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n  var window = getWindow(element);\n  var offsetParent = getTrueOffsetParent(element);\n\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent);\n  }\n\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n    return window;\n  }\n\n  return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n  return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n  return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n  var v = within(min, value, max);\n  return v > max ? max : v;\n}","export default function getFreshSideObject() {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0\n  };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n  return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n  return keys.reduce(function (hashMap, key) {\n    hashMap[key] = value;\n    return hashMap;\n  }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n  padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : padding;\n  return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n  var _state$modifiersData$;\n\n  var state = _ref.state,\n      name = _ref.name,\n      options = _ref.options;\n  var arrowElement = state.elements.arrow;\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var basePlacement = getBasePlacement(state.placement);\n  var axis = getMainAxisFromPlacement(basePlacement);\n  var isVertical = [left, right].indexOf(basePlacement) >= 0;\n  var len = isVertical ? 'height' : 'width';\n\n  if (!arrowElement || !popperOffsets) {\n    return;\n  }\n\n  var paddingObject = toPaddingObject(options.padding, state);\n  var arrowRect = getLayoutRect(arrowElement);\n  var minProp = axis === 'y' ? top : left;\n  var maxProp = axis === 'y' ? bottom : right;\n  var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n  var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n  var arrowOffsetParent = getOffsetParent(arrowElement);\n  var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n  var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n  // outside of the popper bounds\n\n  var min = paddingObject[minProp];\n  var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n  var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n  var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n  var axisProp = axis;\n  state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options;\n  var _options$element = options.element,\n      arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n  if (arrowElement == null) {\n    return;\n  } // CSS selector\n\n\n  if (typeof arrowElement === 'string') {\n    arrowElement = state.elements.popper.querySelector(arrowElement);\n\n    if (!arrowElement) {\n      return;\n    }\n  }\n\n  if (!contains(state.elements.popper, arrowElement)) {\n    return;\n  }\n\n  state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'arrow',\n  enabled: true,\n  phase: 'main',\n  fn: arrow,\n  effect: effect,\n  requires: ['popperOffsets'],\n  requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n  return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n  top: 'auto',\n  right: 'auto',\n  bottom: 'auto',\n  left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n  var x = _ref.x,\n      y = _ref.y;\n  var dpr = win.devicePixelRatio || 1;\n  return {\n    x: round(x * dpr) / dpr || 0,\n    y: round(y * dpr) / dpr || 0\n  };\n}\n\nexport function mapToStyles(_ref2) {\n  var _Object$assign2;\n\n  var popper = _ref2.popper,\n      popperRect = _ref2.popperRect,\n      placement = _ref2.placement,\n      variation = _ref2.variation,\n      offsets = _ref2.offsets,\n      position = _ref2.position,\n      gpuAcceleration = _ref2.gpuAcceleration,\n      adaptive = _ref2.adaptive,\n      roundOffsets = _ref2.roundOffsets,\n      isFixed = _ref2.isFixed;\n  var _offsets$x = offsets.x,\n      x = _offsets$x === void 0 ? 0 : _offsets$x,\n      _offsets$y = offsets.y,\n      y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n  var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n    x: x,\n    y: y\n  }) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref3.x;\n  y = _ref3.y;\n  var hasX = offsets.hasOwnProperty('x');\n  var hasY = offsets.hasOwnProperty('y');\n  var sideX = left;\n  var sideY = top;\n  var win = window;\n\n  if (adaptive) {\n    var offsetParent = getOffsetParent(popper);\n    var heightProp = 'clientHeight';\n    var widthProp = 'clientWidth';\n\n    if (offsetParent === getWindow(popper)) {\n      offsetParent = getDocumentElement(popper);\n\n      if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n        heightProp = 'scrollHeight';\n        widthProp = 'scrollWidth';\n      }\n    } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n    offsetParent = offsetParent;\n\n    if (placement === top || (placement === left || placement === right) && variation === end) {\n      sideY = bottom;\n      var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n      offsetParent[heightProp];\n      y -= offsetY - popperRect.height;\n      y *= gpuAcceleration ? 1 : -1;\n    }\n\n    if (placement === left || (placement === top || placement === bottom) && variation === end) {\n      sideX = right;\n      var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n      offsetParent[widthProp];\n      x -= offsetX - popperRect.width;\n      x *= gpuAcceleration ? 1 : -1;\n    }\n  }\n\n  var commonStyles = Object.assign({\n    position: position\n  }, adaptive && unsetSides);\n\n  var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n    x: x,\n    y: y\n  }, getWindow(popper)) : {\n    x: x,\n    y: y\n  };\n\n  x = _ref4.x;\n  y = _ref4.y;\n\n  if (gpuAcceleration) {\n    var _Object$assign;\n\n    return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n  }\n\n  return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n  var state = _ref5.state,\n      options = _ref5.options;\n  var _options$gpuAccelerat = options.gpuAcceleration,\n      gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n      _options$adaptive = options.adaptive,\n      adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n      _options$roundOffsets = options.roundOffsets,\n      roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n  var commonStyles = {\n    placement: getBasePlacement(state.placement),\n    variation: getVariation(state.placement),\n    popper: state.elements.popper,\n    popperRect: state.rects.popper,\n    gpuAcceleration: gpuAcceleration,\n    isFixed: state.options.strategy === 'fixed'\n  };\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.popperOffsets,\n      position: state.options.strategy,\n      adaptive: adaptive,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  if (state.modifiersData.arrow != null) {\n    state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n      offsets: state.modifiersData.arrow,\n      position: 'absolute',\n      adaptive: false,\n      roundOffsets: roundOffsets\n    })));\n  }\n\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-placement': state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'computeStyles',\n  enabled: true,\n  phase: 'beforeWrite',\n  fn: computeStyles,\n  data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n  passive: true\n};\n\nfunction effect(_ref) {\n  var state = _ref.state,\n      instance = _ref.instance,\n      options = _ref.options;\n  var _options$scroll = options.scroll,\n      scroll = _options$scroll === void 0 ? true : _options$scroll,\n      _options$resize = options.resize,\n      resize = _options$resize === void 0 ? true : _options$resize;\n  var window = getWindow(state.elements.popper);\n  var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n  if (scroll) {\n    scrollParents.forEach(function (scrollParent) {\n      scrollParent.addEventListener('scroll', instance.update, passive);\n    });\n  }\n\n  if (resize) {\n    window.addEventListener('resize', instance.update, passive);\n  }\n\n  return function () {\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.removeEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.removeEventListener('resize', instance.update, passive);\n    }\n  };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'eventListeners',\n  enabled: true,\n  phase: 'write',\n  fn: function fn() {},\n  effect: effect,\n  data: {}\n};","var hash = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}","var hash = {\n  start: 'end',\n  end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n  return placement.replace(/start|end/g, function (matched) {\n    return hash[matched];\n  });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n  var win = getWindow(node);\n  var scrollLeft = win.pageXOffset;\n  var scrollTop = win.pageYOffset;\n  return {\n    scrollLeft: scrollLeft,\n    scrollTop: scrollTop\n  };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  // Popper 1 is broken in this case and never had a bug report so let's assume\n  // it's not an issue. I don't think anyone ever specifies width on <html>\n  // anyway.\n  // Browsers where the left scrollbar doesn't cause an issue report `0` for\n  // this (e.g. Edge 2019, IE11, Safari)\n  return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n  var win = getWindow(element);\n  var html = getDocumentElement(element);\n  var visualViewport = win.visualViewport;\n  var width = html.clientWidth;\n  var height = html.clientHeight;\n  var x = 0;\n  var y = 0;\n\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    var layoutViewport = isLayoutViewport();\n\n    if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x + getWindowScrollBarX(element),\n    y: y\n  };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n  var _element$ownerDocumen;\n\n  var html = getDocumentElement(element);\n  var winScroll = getWindowScroll(element);\n  var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n  var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n  var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n  var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n  var y = -winScroll.scrollTop;\n\n  if (getComputedStyle(body || html).direction === 'rtl') {\n    x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n  }\n\n  return {\n    width: width,\n    height: height,\n    x: x,\n    y: y\n  };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n  // Firefox wants us to check `-x` and `-y` variations as well\n  var _getComputedStyle = getComputedStyle(element),\n      overflow = _getComputedStyle.overflow,\n      overflowX = _getComputedStyle.overflowX,\n      overflowY = _getComputedStyle.overflowY;\n\n  return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n  if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return node.ownerDocument.body;\n  }\n\n  if (isHTMLElement(node) && isScrollParent(node)) {\n    return node;\n  }\n\n  return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n  var _element$ownerDocumen;\n\n  if (list === void 0) {\n    list = [];\n  }\n\n  var scrollParent = getScrollParent(element);\n  var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n  var win = getWindow(scrollParent);\n  var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n  var updatedList = list.concat(target);\n  return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n  updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n  return Object.assign({}, rect, {\n    left: rect.x,\n    top: rect.y,\n    right: rect.x + rect.width,\n    bottom: rect.y + rect.height\n  });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n  var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n  rect.top = rect.top + element.clientTop;\n  rect.left = rect.left + element.clientLeft;\n  rect.bottom = rect.top + element.clientHeight;\n  rect.right = rect.left + element.clientWidth;\n  rect.width = element.clientWidth;\n  rect.height = element.clientHeight;\n  rect.x = rect.left;\n  rect.y = rect.top;\n  return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n  return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n  var clippingParents = listScrollParents(getParentNode(element));\n  var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n  var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n  if (!isElement(clipperElement)) {\n    return [];\n  } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n  return clippingParents.filter(function (clippingParent) {\n    return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n  });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n  var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n  var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n  var firstClippingParent = clippingParents[0];\n  var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n    var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n  clippingRect.width = clippingRect.right - clippingRect.left;\n  clippingRect.height = clippingRect.bottom - clippingRect.top;\n  clippingRect.x = clippingRect.left;\n  clippingRect.y = clippingRect.top;\n  return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n  var reference = _ref.reference,\n      element = _ref.element,\n      placement = _ref.placement;\n  var basePlacement = placement ? getBasePlacement(placement) : null;\n  var variation = placement ? getVariation(placement) : null;\n  var commonX = reference.x + reference.width / 2 - element.width / 2;\n  var commonY = reference.y + reference.height / 2 - element.height / 2;\n  var offsets;\n\n  switch (basePlacement) {\n    case top:\n      offsets = {\n        x: commonX,\n        y: reference.y - element.height\n      };\n      break;\n\n    case bottom:\n      offsets = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n\n    case right:\n      offsets = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n\n    case left:\n      offsets = {\n        x: reference.x - element.width,\n        y: commonY\n      };\n      break;\n\n    default:\n      offsets = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n\n  var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n  if (mainAxis != null) {\n    var len = mainAxis === 'y' ? 'height' : 'width';\n\n    switch (variation) {\n      case start:\n        offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n        break;\n\n      case end:\n        offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n        break;\n\n      default:\n    }\n  }\n\n  return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      _options$placement = _options.placement,\n      placement = _options$placement === void 0 ? state.placement : _options$placement,\n      _options$strategy = _options.strategy,\n      strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n      _options$boundary = _options.boundary,\n      boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n      _options$rootBoundary = _options.rootBoundary,\n      rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n      _options$elementConte = _options.elementContext,\n      elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n      _options$altBoundary = _options.altBoundary,\n      altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n      _options$padding = _options.padding,\n      padding = _options$padding === void 0 ? 0 : _options$padding;\n  var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  var altContext = elementContext === popper ? reference : popper;\n  var popperRect = state.rects.popper;\n  var element = state.elements[altBoundary ? altContext : elementContext];\n  var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n  var referenceClientRect = getBoundingClientRect(state.elements.reference);\n  var popperOffsets = computeOffsets({\n    reference: referenceClientRect,\n    element: popperRect,\n    strategy: 'absolute',\n    placement: placement\n  });\n  var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n  var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n  // 0 or negative = within the clipping rect\n\n  var overflowOffsets = {\n    top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n    bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n    left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n    right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n  };\n  var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n  if (elementContext === popper && offsetData) {\n    var offset = offsetData[placement];\n    Object.keys(overflowOffsets).forEach(function (key) {\n      var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n      var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n      overflowOffsets[key] += offset[axis] * multiply;\n    });\n  }\n\n  return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n  if (options === void 0) {\n    options = {};\n  }\n\n  var _options = options,\n      placement = _options.placement,\n      boundary = _options.boundary,\n      rootBoundary = _options.rootBoundary,\n      padding = _options.padding,\n      flipVariations = _options.flipVariations,\n      _options$allowedAutoP = _options.allowedAutoPlacements,\n      allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n  var variation = getVariation(placement);\n  var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n    return getVariation(placement) === variation;\n  }) : basePlacements;\n  var allowedPlacements = placements.filter(function (placement) {\n    return allowedAutoPlacements.indexOf(placement) >= 0;\n  });\n\n  if (allowedPlacements.length === 0) {\n    allowedPlacements = placements;\n  } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n  var overflows = allowedPlacements.reduce(function (acc, placement) {\n    acc[placement] = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding\n    })[getBasePlacement(placement)];\n    return acc;\n  }, {});\n  return Object.keys(overflows).sort(function (a, b) {\n    return overflows[a] - overflows[b];\n  });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n  if (getBasePlacement(placement) === auto) {\n    return [];\n  }\n\n  var oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n\n  if (state.modifiersData[name]._skip) {\n    return;\n  }\n\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n      specifiedFallbackPlacements = options.fallbackPlacements,\n      padding = options.padding,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      _options$flipVariatio = options.flipVariations,\n      flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n      allowedAutoPlacements = options.allowedAutoPlacements;\n  var preferredPlacement = state.options.placement;\n  var basePlacement = getBasePlacement(preferredPlacement);\n  var isBasePlacement = basePlacement === preferredPlacement;\n  var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n  var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n    return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      flipVariations: flipVariations,\n      allowedAutoPlacements: allowedAutoPlacements\n    }) : placement);\n  }, []);\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var checksMap = new Map();\n  var makeFallbackChecks = true;\n  var firstFittingPlacement = placements[0];\n\n  for (var i = 0; i < placements.length; i++) {\n    var placement = placements[i];\n\n    var _basePlacement = getBasePlacement(placement);\n\n    var isStartVariation = getVariation(placement) === start;\n    var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n    var len = isVertical ? 'width' : 'height';\n    var overflow = detectOverflow(state, {\n      placement: placement,\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      altBoundary: altBoundary,\n      padding: padding\n    });\n    var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n    if (referenceRect[len] > popperRect[len]) {\n      mainVariationSide = getOppositePlacement(mainVariationSide);\n    }\n\n    var altVariationSide = getOppositePlacement(mainVariationSide);\n    var checks = [];\n\n    if (checkMainAxis) {\n      checks.push(overflow[_basePlacement] <= 0);\n    }\n\n    if (checkAltAxis) {\n      checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n    }\n\n    if (checks.every(function (check) {\n      return check;\n    })) {\n      firstFittingPlacement = placement;\n      makeFallbackChecks = false;\n      break;\n    }\n\n    checksMap.set(placement, checks);\n  }\n\n  if (makeFallbackChecks) {\n    // `2` may be desired in some cases – research later\n    var numberOfChecks = flipVariations ? 3 : 1;\n\n    var _loop = function _loop(_i) {\n      var fittingPlacement = placements.find(function (placement) {\n        var checks = checksMap.get(placement);\n\n        if (checks) {\n          return checks.slice(0, _i).every(function (check) {\n            return check;\n          });\n        }\n      });\n\n      if (fittingPlacement) {\n        firstFittingPlacement = fittingPlacement;\n        return \"break\";\n      }\n    };\n\n    for (var _i = numberOfChecks; _i > 0; _i--) {\n      var _ret = _loop(_i);\n\n      if (_ret === \"break\") break;\n    }\n  }\n\n  if (state.placement !== firstFittingPlacement) {\n    state.modifiersData[name]._skip = true;\n    state.placement = firstFittingPlacement;\n    state.reset = true;\n  }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'flip',\n  enabled: true,\n  phase: 'main',\n  fn: flip,\n  requiresIfExists: ['offset'],\n  data: {\n    _skip: false\n  }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n  if (preventedOffsets === void 0) {\n    preventedOffsets = {\n      x: 0,\n      y: 0\n    };\n  }\n\n  return {\n    top: overflow.top - rect.height - preventedOffsets.y,\n    right: overflow.right - rect.width + preventedOffsets.x,\n    bottom: overflow.bottom - rect.height + preventedOffsets.y,\n    left: overflow.left - rect.width - preventedOffsets.x\n  };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n  return [top, right, bottom, left].some(function (side) {\n    return overflow[side] >= 0;\n  });\n}\n\nfunction hide(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var preventedOffsets = state.modifiersData.preventOverflow;\n  var referenceOverflow = detectOverflow(state, {\n    elementContext: 'reference'\n  });\n  var popperAltOverflow = detectOverflow(state, {\n    altBoundary: true\n  });\n  var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n  var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n  var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n  var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n  state.modifiersData[name] = {\n    referenceClippingOffsets: referenceClippingOffsets,\n    popperEscapeOffsets: popperEscapeOffsets,\n    isReferenceHidden: isReferenceHidden,\n    hasPopperEscaped: hasPopperEscaped\n  };\n  state.attributes.popper = Object.assign({}, state.attributes.popper, {\n    'data-popper-reference-hidden': isReferenceHidden,\n    'data-popper-escaped': hasPopperEscaped\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'hide',\n  enabled: true,\n  phase: 'main',\n  requiresIfExists: ['preventOverflow'],\n  fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n  var basePlacement = getBasePlacement(placement);\n  var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n  var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n    placement: placement\n  })) : offset,\n      skidding = _ref[0],\n      distance = _ref[1];\n\n  skidding = skidding || 0;\n  distance = (distance || 0) * invertDistance;\n  return [left, right].indexOf(basePlacement) >= 0 ? {\n    x: distance,\n    y: skidding\n  } : {\n    x: skidding,\n    y: distance\n  };\n}\n\nfunction offset(_ref2) {\n  var state = _ref2.state,\n      options = _ref2.options,\n      name = _ref2.name;\n  var _options$offset = options.offset,\n      offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n  var data = placements.reduce(function (acc, placement) {\n    acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n    return acc;\n  }, {});\n  var _data$state$placement = data[state.placement],\n      x = _data$state$placement.x,\n      y = _data$state$placement.y;\n\n  if (state.modifiersData.popperOffsets != null) {\n    state.modifiersData.popperOffsets.x += x;\n    state.modifiersData.popperOffsets.y += y;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'offset',\n  enabled: true,\n  phase: 'main',\n  requires: ['popperOffsets'],\n  fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n  var state = _ref.state,\n      name = _ref.name;\n  // Offsets are the actual position the popper needs to have to be\n  // properly positioned near its reference element\n  // This is the most basic placement, and will be adjusted by\n  // the modifiers in the next step\n  state.modifiersData[name] = computeOffsets({\n    reference: state.rects.reference,\n    element: state.rects.popper,\n    strategy: 'absolute',\n    placement: state.placement\n  });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'popperOffsets',\n  enabled: true,\n  phase: 'read',\n  fn: popperOffsets,\n  data: {}\n};","export default function getAltAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n  var state = _ref.state,\n      options = _ref.options,\n      name = _ref.name;\n  var _options$mainAxis = options.mainAxis,\n      checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n      _options$altAxis = options.altAxis,\n      checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n      boundary = options.boundary,\n      rootBoundary = options.rootBoundary,\n      altBoundary = options.altBoundary,\n      padding = options.padding,\n      _options$tether = options.tether,\n      tether = _options$tether === void 0 ? true : _options$tether,\n      _options$tetherOffset = options.tetherOffset,\n      tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n  var overflow = detectOverflow(state, {\n    boundary: boundary,\n    rootBoundary: rootBoundary,\n    padding: padding,\n    altBoundary: altBoundary\n  });\n  var basePlacement = getBasePlacement(state.placement);\n  var variation = getVariation(state.placement);\n  var isBasePlacement = !variation;\n  var mainAxis = getMainAxisFromPlacement(basePlacement);\n  var altAxis = getAltAxis(mainAxis);\n  var popperOffsets = state.modifiersData.popperOffsets;\n  var referenceRect = state.rects.reference;\n  var popperRect = state.rects.popper;\n  var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n    placement: state.placement\n  })) : tetherOffset;\n  var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n    mainAxis: tetherOffsetValue,\n    altAxis: tetherOffsetValue\n  } : Object.assign({\n    mainAxis: 0,\n    altAxis: 0\n  }, tetherOffsetValue);\n  var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n  var data = {\n    x: 0,\n    y: 0\n  };\n\n  if (!popperOffsets) {\n    return;\n  }\n\n  if (checkMainAxis) {\n    var _offsetModifierState$;\n\n    var mainSide = mainAxis === 'y' ? top : left;\n    var altSide = mainAxis === 'y' ? bottom : right;\n    var len = mainAxis === 'y' ? 'height' : 'width';\n    var offset = popperOffsets[mainAxis];\n    var min = offset + overflow[mainSide];\n    var max = offset - overflow[altSide];\n    var additive = tether ? -popperRect[len] / 2 : 0;\n    var minLen = variation === start ? referenceRect[len] : popperRect[len];\n    var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n    // outside the reference bounds\n\n    var arrowElement = state.elements.arrow;\n    var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n      width: 0,\n      height: 0\n    };\n    var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n    var arrowPaddingMin = arrowPaddingObject[mainSide];\n    var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n    // to include its full size in the calculation. If the reference is small\n    // and near the edge of a boundary, the popper can overflow even if the\n    // reference is not overflowing as well (e.g. virtual elements with no\n    // width or height)\n\n    var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n    var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n    var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n    var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n    var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n    var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n    var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n    var tetherMax = offset + maxOffset - offsetModifierValue;\n    var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n    popperOffsets[mainAxis] = preventedOffset;\n    data[mainAxis] = preventedOffset - offset;\n  }\n\n  if (checkAltAxis) {\n    var _offsetModifierState$2;\n\n    var _mainSide = mainAxis === 'x' ? top : left;\n\n    var _altSide = mainAxis === 'x' ? bottom : right;\n\n    var _offset = popperOffsets[altAxis];\n\n    var _len = altAxis === 'y' ? 'height' : 'width';\n\n    var _min = _offset + overflow[_mainSide];\n\n    var _max = _offset - overflow[_altSide];\n\n    var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n    var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n    var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n    var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n    var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n    popperOffsets[altAxis] = _preventedOffset;\n    data[altAxis] = _preventedOffset - _offset;\n  }\n\n  state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n  name: 'preventOverflow',\n  enabled: true,\n  phase: 'main',\n  fn: preventOverflow,\n  requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n  return {\n    scrollLeft: element.scrollLeft,\n    scrollTop: element.scrollTop\n  };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n  if (node === getWindow(node) || !isHTMLElement(node)) {\n    return getWindowScroll(node);\n  } else {\n    return getHTMLElementScroll(node);\n  }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n  var rect = element.getBoundingClientRect();\n  var scaleX = round(rect.width) / element.offsetWidth || 1;\n  var scaleY = round(rect.height) / element.offsetHeight || 1;\n  return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n\n  var isOffsetParentAnElement = isHTMLElement(offsetParent);\n  var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n  var documentElement = getDocumentElement(offsetParent);\n  var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n  var scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  var offsets = {\n    x: 0,\n    y: 0\n  };\n\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n    isScrollParent(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n\n    if (isHTMLElement(offsetParent)) {\n      offsets = getBoundingClientRect(offsetParent, true);\n      offsets.x += offsetParent.clientLeft;\n      offsets.y += offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n  var map = new Map();\n  var visited = new Set();\n  var result = [];\n  modifiers.forEach(function (modifier) {\n    map.set(modifier.name, modifier);\n  }); // On visiting object, check for its dependencies and visit them recursively\n\n  function sort(modifier) {\n    visited.add(modifier.name);\n    var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n    requires.forEach(function (dep) {\n      if (!visited.has(dep)) {\n        var depModifier = map.get(dep);\n\n        if (depModifier) {\n          sort(depModifier);\n        }\n      }\n    });\n    result.push(modifier);\n  }\n\n  modifiers.forEach(function (modifier) {\n    if (!visited.has(modifier.name)) {\n      // check for visited object\n      sort(modifier);\n    }\n  });\n  return result;\n}\n\nexport default function orderModifiers(modifiers) {\n  // order based on dependencies\n  var orderedModifiers = order(modifiers); // order based on phase\n\n  return modifierPhases.reduce(function (acc, phase) {\n    return acc.concat(orderedModifiers.filter(function (modifier) {\n      return modifier.phase === phase;\n    }));\n  }, []);\n}","export default function debounce(fn) {\n  var pending;\n  return function () {\n    if (!pending) {\n      pending = new Promise(function (resolve) {\n        Promise.resolve().then(function () {\n          pending = undefined;\n          resolve(fn());\n        });\n      });\n    }\n\n    return pending;\n  };\n}","export default function mergeByName(modifiers) {\n  var merged = modifiers.reduce(function (merged, current) {\n    var existing = merged[current.name];\n    merged[current.name] = existing ? Object.assign({}, existing, current, {\n      options: Object.assign({}, existing.options, current.options),\n      data: Object.assign({}, existing.data, current.data)\n    }) : current;\n    return merged;\n  }, {}); // IE11 does not support Object.values\n\n  return Object.keys(merged).map(function (key) {\n    return merged[key];\n  });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n  placement: 'bottom',\n  modifiers: [],\n  strategy: 'absolute'\n};\n\nfunction areValidElements() {\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  return !args.some(function (element) {\n    return !(element && typeof element.getBoundingClientRect === 'function');\n  });\n}\n\nexport function popperGenerator(generatorOptions) {\n  if (generatorOptions === void 0) {\n    generatorOptions = {};\n  }\n\n  var _generatorOptions = generatorOptions,\n      _generatorOptions$def = _generatorOptions.defaultModifiers,\n      defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n      _generatorOptions$def2 = _generatorOptions.defaultOptions,\n      defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n  return function createPopper(reference, popper, options) {\n    if (options === void 0) {\n      options = defaultOptions;\n    }\n\n    var state = {\n      placement: 'bottom',\n      orderedModifiers: [],\n      options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n      modifiersData: {},\n      elements: {\n        reference: reference,\n        popper: popper\n      },\n      attributes: {},\n      styles: {}\n    };\n    var effectCleanupFns = [];\n    var isDestroyed = false;\n    var instance = {\n      state: state,\n      setOptions: function setOptions(setOptionsAction) {\n        var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n        cleanupModifierEffects();\n        state.options = Object.assign({}, defaultOptions, state.options, options);\n        state.scrollParents = {\n          reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n          popper: listScrollParents(popper)\n        }; // Orders the modifiers based on their dependencies and `phase`\n        // properties\n\n        var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n        state.orderedModifiers = orderedModifiers.filter(function (m) {\n          return m.enabled;\n        });\n        runModifierEffects();\n        return instance.update();\n      },\n      // Sync update – it will always be executed, even if not necessary. This\n      // is useful for low frequency updates where sync behavior simplifies the\n      // logic.\n      // For high frequency updates (e.g. `resize` and `scroll` events), always\n      // prefer the async Popper#update method\n      forceUpdate: function forceUpdate() {\n        if (isDestroyed) {\n          return;\n        }\n\n        var _state$elements = state.elements,\n            reference = _state$elements.reference,\n            popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n        // anymore\n\n        if (!areValidElements(reference, popper)) {\n          return;\n        } // Store the reference and popper rects to be read by modifiers\n\n\n        state.rects = {\n          reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n          popper: getLayoutRect(popper)\n        }; // Modifiers have the ability to reset the current update cycle. The\n        // most common use case for this is the `flip` modifier changing the\n        // placement, which then needs to re-run all the modifiers, because the\n        // logic was previously ran for the previous placement and is therefore\n        // stale/incorrect\n\n        state.reset = false;\n        state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n        // is filled with the initial data specified by the modifier. This means\n        // it doesn't persist and is fresh on each update.\n        // To ensure persistent data, use `${name}#persistent`\n\n        state.orderedModifiers.forEach(function (modifier) {\n          return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n        });\n\n        for (var index = 0; index < state.orderedModifiers.length; index++) {\n          if (state.reset === true) {\n            state.reset = false;\n            index = -1;\n            continue;\n          }\n\n          var _state$orderedModifie = state.orderedModifiers[index],\n              fn = _state$orderedModifie.fn,\n              _state$orderedModifie2 = _state$orderedModifie.options,\n              _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n              name = _state$orderedModifie.name;\n\n          if (typeof fn === 'function') {\n            state = fn({\n              state: state,\n              options: _options,\n              name: name,\n              instance: instance\n            }) || state;\n          }\n        }\n      },\n      // Async and optimistically optimized update – it will not be executed if\n      // not necessary (debounced to run at most once-per-tick)\n      update: debounce(function () {\n        return new Promise(function (resolve) {\n          instance.forceUpdate();\n          resolve(state);\n        });\n      }),\n      destroy: function destroy() {\n        cleanupModifierEffects();\n        isDestroyed = true;\n      }\n    };\n\n    if (!areValidElements(reference, popper)) {\n      return instance;\n    }\n\n    instance.setOptions(options).then(function (state) {\n      if (!isDestroyed && options.onFirstUpdate) {\n        options.onFirstUpdate(state);\n      }\n    }); // Modifiers have the ability to execute arbitrary code before the first\n    // update cycle runs. They will be executed in the same order as the update\n    // cycle. This is useful when a modifier adds some persistent data that\n    // other modifiers need to use, but the modifier is run after the dependent\n    // one.\n\n    function runModifierEffects() {\n      state.orderedModifiers.forEach(function (_ref) {\n        var name = _ref.name,\n            _ref$options = _ref.options,\n            options = _ref$options === void 0 ? {} : _ref$options,\n            effect = _ref.effect;\n\n        if (typeof effect === 'function') {\n          var cleanupFn = effect({\n            state: state,\n            name: name,\n            instance: instance,\n            options: options\n          });\n\n          var noopFn = function noopFn() {};\n\n          effectCleanupFns.push(cleanupFn || noopFn);\n        }\n      });\n    }\n\n    function cleanupModifierEffects() {\n      effectCleanupFns.forEach(function (fn) {\n        return fn();\n      });\n      effectCleanupFns = [];\n    }\n\n    return instance;\n  };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n  defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { generateUtilityClass } from '../generateUtilityClass';\nimport { generateUtilityClasses } from '../generateUtilityClasses';\nconst COMPONENT_NAME = 'Popper';\nexport function getPopperUtilityClass(slot) {\n  return generateUtilityClass(COMPONENT_NAME, slot);\n}\nexport const popperClasses = generateUtilityClasses(COMPONENT_NAME, ['root']);","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\", \"ownerState\"],\n  _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '../composeClasses';\nimport { Portal } from '../Portal';\nimport { getPopperUtilityClass } from './popperClasses';\nimport { useSlotProps } from '../utils';\nimport { useClassNamesOverride } from '../utils/ClassNameConfigurator';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n  if (direction === 'ltr') {\n    return placement;\n  }\n  switch (placement) {\n    case 'bottom-end':\n      return 'bottom-start';\n    case 'bottom-start':\n      return 'bottom-end';\n    case 'top-end':\n      return 'top-start';\n    case 'top-start':\n      return 'top-end';\n    default:\n      return placement;\n  }\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n  return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n  return !isHTMLElement(element);\n}\nconst useUtilityClasses = () => {\n  const slots = {\n    root: ['root']\n  };\n  return composeClasses(slots, useClassNamesOverride(getPopperUtilityClass));\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, forwardedRef) {\n  var _slots$root;\n  const {\n      anchorEl,\n      children,\n      direction,\n      disablePortal,\n      modifiers,\n      open,\n      placement: initialPlacement,\n      popperOptions,\n      popperRef: popperRefProp,\n      slotProps = {},\n      slots = {},\n      TransitionProps\n      // @ts-ignore internal logic\n      // prevent from spreading to DOM, it can come from the parent component e.g. Select.\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const tooltipRef = React.useRef(null);\n  const ownRef = useForkRef(tooltipRef, forwardedRef);\n  const popperRef = React.useRef(null);\n  const handlePopperRef = useForkRef(popperRef, popperRefProp);\n  const handlePopperRefRef = React.useRef(handlePopperRef);\n  useEnhancedEffect(() => {\n    handlePopperRefRef.current = handlePopperRef;\n  }, [handlePopperRef]);\n  React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n  const rtlPlacement = flipPlacement(initialPlacement, direction);\n  /**\n   * placement initialized from prop but can change during lifetime if modifiers.flip.\n   * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n   */\n  const [placement, setPlacement] = React.useState(rtlPlacement);\n  const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n  React.useEffect(() => {\n    if (popperRef.current) {\n      popperRef.current.forceUpdate();\n    }\n  });\n  React.useEffect(() => {\n    if (anchorEl) {\n      setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n    }\n  }, [anchorEl]);\n  useEnhancedEffect(() => {\n    if (!resolvedAnchorElement || !open) {\n      return undefined;\n    }\n    const handlePopperUpdate = data => {\n      setPlacement(data.placement);\n    };\n    if (process.env.NODE_ENV !== 'production') {\n      if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n        const box = resolvedAnchorElement.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      }\n    }\n    let popperModifiers = [{\n      name: 'preventOverflow',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'flip',\n      options: {\n        altBoundary: disablePortal\n      }\n    }, {\n      name: 'onUpdate',\n      enabled: true,\n      phase: 'afterWrite',\n      fn: ({\n        state\n      }) => {\n        handlePopperUpdate(state);\n      }\n    }];\n    if (modifiers != null) {\n      popperModifiers = popperModifiers.concat(modifiers);\n    }\n    if (popperOptions && popperOptions.modifiers != null) {\n      popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n    }\n    const popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({\n      placement: rtlPlacement\n    }, popperOptions, {\n      modifiers: popperModifiers\n    }));\n    handlePopperRefRef.current(popper);\n    return () => {\n      popper.destroy();\n      handlePopperRefRef.current(null);\n    };\n  }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n  const childProps = {\n    placement: placement\n  };\n  if (TransitionProps !== null) {\n    childProps.TransitionProps = TransitionProps;\n  }\n  const classes = useUtilityClasses();\n  const Root = (_slots$root = slots.root) != null ? _slots$root : 'div';\n  const rootProps = useSlotProps({\n    elementType: Root,\n    externalSlotProps: slotProps.root,\n    externalForwardedProps: other,\n    additionalProps: {\n      role: 'tooltip',\n      ref: ownRef\n    },\n    ownerState: props,\n    className: classes.root\n  });\n  return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n    children: typeof children === 'function' ? children(childProps) : children\n  }));\n});\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n *\n * Demos:\n *\n * - [Popper](https://mui.com/base-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/base-ui/react-popper/components-api/#popper)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(props, forwardedRef) {\n  const {\n      anchorEl,\n      children,\n      container: containerProp,\n      direction = 'ltr',\n      disablePortal = false,\n      keepMounted = false,\n      modifiers,\n      open,\n      placement = 'bottom',\n      popperOptions = defaultPopperOptions,\n      popperRef,\n      style,\n      transition = false,\n      slotProps = {},\n      slots = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const [exited, setExited] = React.useState(true);\n  const handleEnter = () => {\n    setExited(false);\n  };\n  const handleExited = () => {\n    setExited(true);\n  };\n  if (!keepMounted && !open && (!transition || exited)) {\n    return null;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  let container;\n  if (containerProp) {\n    container = containerProp;\n  } else if (anchorEl) {\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n    container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n  }\n  const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n  const transitionProps = transition ? {\n    in: open,\n    onEnter: handleEnter,\n    onExited: handleExited\n  } : undefined;\n  return /*#__PURE__*/_jsx(Portal, {\n    disablePortal: disablePortal,\n    container: container,\n    children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n      anchorEl: anchorEl,\n      direction: direction,\n      disablePortal: disablePortal,\n      modifiers: modifiers,\n      ref: forwardedRef,\n      open: transition ? !exited : open,\n      placement: placement,\n      popperOptions: popperOptions,\n      popperRef: popperRef,\n      slotProps: slotProps,\n      slots: slots\n    }, other, {\n      style: _extends({\n        // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n        position: 'fixed',\n        // Fix Popper.js display issue\n        top: 0,\n        left: 0,\n        display\n      }, style),\n      TransitionProps: transitionProps,\n      children: children\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n    if (props.open) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * Direction of the text.\n   * @default 'ltr'\n   */\n  direction: PropTypes.oneOf(['ltr', 'rtl']),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: PropTypes.arrayOf(PropTypes.shape({\n    data: PropTypes.object,\n    effect: PropTypes.func,\n    enabled: PropTypes.bool,\n    fn: PropTypes.func,\n    name: PropTypes.any,\n    options: PropTypes.object,\n    phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: PropTypes.arrayOf(PropTypes.string),\n    requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: PropTypes.shape({\n    modifiers: PropTypes.array,\n    onFirstUpdate: PropTypes.func,\n    placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: PropTypes.oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: refType,\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: PropTypes.bool\n} : void 0;\nexport { Popper };","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"maxRows\", \"minRows\", \"style\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getStyleValue(value) {\n  return parseInt(value, 10) || 0;\n}\nconst styles = {\n  shadow: {\n    // Visibility needed to hide the extra text area on iPads\n    visibility: 'hidden',\n    // Remove from the content flow\n    position: 'absolute',\n    // Ignore the scrollbar width\n    overflow: 'hidden',\n    height: 0,\n    top: 0,\n    left: 0,\n    // Create a new layer, increase the isolation of the computed values\n    transform: 'translateZ(0)'\n  }\n};\nfunction isEmpty(obj) {\n  return obj === undefined || obj === null || Object.keys(obj).length === 0 || obj.outerHeightStyle === 0 && !obj.overflowing;\n}\n\n/**\n *\n * Demos:\n *\n * - [Textarea Autosize](https://mui.com/base-ui/react-textarea-autosize/)\n * - [Textarea Autosize](https://mui.com/material-ui/react-textarea-autosize/)\n *\n * API:\n *\n * - [TextareaAutosize API](https://mui.com/base-ui/react-textarea-autosize/components-api/#textarea-autosize)\n */\nconst TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, forwardedRef) {\n  const {\n      onChange,\n      maxRows,\n      minRows = 1,\n      style,\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    current: isControlled\n  } = React.useRef(value != null);\n  const inputRef = React.useRef(null);\n  const handleRef = useForkRef(forwardedRef, inputRef);\n  const shadowRef = React.useRef(null);\n  const calculateTextareaStyles = React.useCallback(() => {\n    const input = inputRef.current;\n    const containerWindow = ownerWindow(input);\n    const computedStyle = containerWindow.getComputedStyle(input);\n\n    // If input's width is shrunk and it's not visible, don't sync height.\n    if (computedStyle.width === '0px') {\n      return {\n        outerHeightStyle: 0,\n        overflowing: false\n      };\n    }\n    const inputShallow = shadowRef.current;\n    inputShallow.style.width = computedStyle.width;\n    inputShallow.value = input.value || props.placeholder || 'x';\n    if (inputShallow.value.slice(-1) === '\\n') {\n      // Certain fonts which overflow the line height will cause the textarea\n      // to report a different scrollHeight depending on whether the last line\n      // is empty. Make it non-empty to avoid this issue.\n      inputShallow.value += ' ';\n    }\n    const boxSizing = computedStyle.boxSizing;\n    const padding = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);\n    const border = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);\n\n    // The height of the inner content\n    const innerHeight = inputShallow.scrollHeight;\n\n    // Measure height of a textarea with a single row\n    inputShallow.value = 'x';\n    const singleRowHeight = inputShallow.scrollHeight;\n\n    // The height of the outer content\n    let outerHeight = innerHeight;\n    if (minRows) {\n      outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n    }\n    if (maxRows) {\n      outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n    }\n    outerHeight = Math.max(outerHeight, singleRowHeight);\n\n    // Take the box sizing into account for applying this value as a style.\n    const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n    const overflowing = Math.abs(outerHeight - innerHeight) <= 1;\n    return {\n      outerHeightStyle,\n      overflowing\n    };\n  }, [maxRows, minRows, props.placeholder]);\n  const syncHeight = React.useCallback(() => {\n    const textareaStyles = calculateTextareaStyles();\n    if (isEmpty(textareaStyles)) {\n      return;\n    }\n    const input = inputRef.current;\n    input.style.height = `${textareaStyles.outerHeightStyle}px`;\n    input.style.overflow = textareaStyles.overflowing ? 'hidden' : '';\n  }, [calculateTextareaStyles]);\n  useEnhancedEffect(() => {\n    const handleResize = () => {\n      syncHeight();\n    };\n    // Workaround a \"ResizeObserver loop completed with undelivered notifications\" error\n    // in test.\n    // Note that we might need to use this logic in production per https://github.com/WICG/resize-observer/issues/38\n    // Also see https://github.com/mui/mui-x/issues/8733\n    let rAF;\n    const rAFHandleResize = () => {\n      cancelAnimationFrame(rAF);\n      rAF = requestAnimationFrame(() => {\n        handleResize();\n      });\n    };\n    const debounceHandleResize = debounce(handleResize);\n    const input = inputRef.current;\n    const containerWindow = ownerWindow(input);\n    containerWindow.addEventListener('resize', debounceHandleResize);\n    let resizeObserver;\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(process.env.NODE_ENV === 'test' ? rAFHandleResize : handleResize);\n      resizeObserver.observe(input);\n    }\n    return () => {\n      debounceHandleResize.clear();\n      cancelAnimationFrame(rAF);\n      containerWindow.removeEventListener('resize', debounceHandleResize);\n      if (resizeObserver) {\n        resizeObserver.disconnect();\n      }\n    };\n  }, [calculateTextareaStyles, syncHeight]);\n  useEnhancedEffect(() => {\n    syncHeight();\n  });\n  const handleChange = event => {\n    if (!isControlled) {\n      syncHeight();\n    }\n    if (onChange) {\n      onChange(event);\n    }\n  };\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(\"textarea\", _extends({\n      value: value,\n      onChange: handleChange,\n      ref: handleRef\n      // Apply the rows prop to get a \"correct\" first SSR paint\n      ,\n      rows: minRows,\n      style: style\n    }, other)), /*#__PURE__*/_jsx(\"textarea\", {\n      \"aria-hidden\": true,\n      className: props.className,\n      readOnly: true,\n      ref: shadowRef,\n      tabIndex: -1,\n      style: _extends({}, styles.shadow, style, {\n        paddingTop: 0,\n        paddingBottom: 0\n      })\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * Maximum number of rows to display.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display.\n   * @default 1\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  placeholder: PropTypes.string,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * @ignore\n   */\n  value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport { TextareaAutosize };","'use client';\n\n/* eslint-disable no-constant-condition */\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n  return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n  const {\n    ignoreAccents = true,\n    ignoreCase = true,\n    limit,\n    matchFrom = 'any',\n    stringify,\n    trim = false\n  } = config;\n  return (options, {\n    inputValue,\n    getOptionLabel\n  }) => {\n    let input = trim ? inputValue.trim() : inputValue;\n    if (ignoreCase) {\n      input = input.toLowerCase();\n    }\n    if (ignoreAccents) {\n      input = stripDiacritics(input);\n    }\n    const filteredOptions = !input ? options : options.filter(option => {\n      let candidate = (stringify || getOptionLabel)(option);\n      if (ignoreCase) {\n        candidate = candidate.toLowerCase();\n      }\n      if (ignoreAccents) {\n        candidate = stripDiacritics(candidate);\n      }\n      return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n    });\n    return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n  };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n  for (let i = 0; i < array.length; i += 1) {\n    if (comp(array[i])) {\n      return i;\n    }\n  }\n  return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n  var _listboxRef$current$p;\n  return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nexport function useAutocomplete(props) {\n  const {\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    unstable_classNamePrefix = 'Mui',\n    autoComplete = false,\n    autoHighlight = false,\n    autoSelect = false,\n    blurOnSelect = false,\n    clearOnBlur = !props.freeSolo,\n    clearOnEscape = false,\n    componentName = 'useAutocomplete',\n    defaultValue = props.multiple ? [] : null,\n    disableClearable = false,\n    disableCloseOnSelect = false,\n    disabled: disabledProp,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    filterOptions = defaultFilterOptions,\n    filterSelectedOptions = false,\n    freeSolo = false,\n    getOptionDisabled,\n    getOptionKey,\n    getOptionLabel: getOptionLabelProp = option => {\n      var _option$label;\n      return (_option$label = option.label) != null ? _option$label : option;\n    },\n    groupBy,\n    handleHomeEndKeys = !props.freeSolo,\n    id: idProp,\n    includeInputInList = false,\n    inputValue: inputValueProp,\n    isOptionEqualToValue = (option, value) => option === value,\n    multiple = false,\n    onChange,\n    onClose,\n    onHighlightChange,\n    onInputChange,\n    onOpen,\n    open: openProp,\n    openOnFocus = false,\n    options,\n    readOnly = false,\n    selectOnFocus = !props.freeSolo,\n    value: valueProp\n  } = props;\n  const id = useId(idProp);\n  let getOptionLabel = getOptionLabelProp;\n  getOptionLabel = option => {\n    const optionLabel = getOptionLabelProp(option);\n    if (typeof optionLabel !== 'string') {\n      if (process.env.NODE_ENV !== 'production') {\n        const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n        console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n      }\n      return String(optionLabel);\n    }\n    return optionLabel;\n  };\n  const ignoreFocus = React.useRef(false);\n  const firstFocus = React.useRef(true);\n  const inputRef = React.useRef(null);\n  const listboxRef = React.useRef(null);\n  const [anchorEl, setAnchorEl] = React.useState(null);\n  const [focusedTag, setFocusedTag] = React.useState(-1);\n  const defaultHighlighted = autoHighlight ? 0 : -1;\n  const highlightedIndexRef = React.useRef(defaultHighlighted);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: componentName\n  });\n  const [inputValue, setInputValueState] = useControlled({\n    controlled: inputValueProp,\n    default: '',\n    name: componentName,\n    state: 'inputValue'\n  });\n  const [focused, setFocused] = React.useState(false);\n  const resetInputValue = React.useCallback((event, newValue) => {\n    // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n    // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n    const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n    if (!isOptionSelected && !clearOnBlur) {\n      return;\n    }\n    let newInputValue;\n    if (multiple) {\n      newInputValue = '';\n    } else if (newValue == null) {\n      newInputValue = '';\n    } else {\n      const optionLabel = getOptionLabel(newValue);\n      newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n    }\n    if (inputValue === newInputValue) {\n      return;\n    }\n    setInputValueState(newInputValue);\n    if (onInputChange) {\n      onInputChange(event, newInputValue, 'reset');\n    }\n  }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n  const [open, setOpenState] = useControlled({\n    controlled: openProp,\n    default: false,\n    name: componentName,\n    state: 'open'\n  });\n  const [inputPristine, setInputPristine] = React.useState(true);\n  const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n  const popupOpen = open && !readOnly;\n  const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n    if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n      return false;\n    }\n    return true;\n  }),\n  // we use the empty string to manipulate `filterOptions` to not filter any options\n  // i.e. the filter predicate always returns true\n  {\n    inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n    getOptionLabel\n  }) : [];\n  const previousProps = usePreviousProps({\n    filteredOptions,\n    value,\n    inputValue\n  });\n  React.useEffect(() => {\n    const valueChange = value !== previousProps.value;\n    if (focused && !valueChange) {\n      return;\n    }\n\n    // Only reset the input's value when freeSolo if the component's value changes.\n    if (freeSolo && !valueChange) {\n      return;\n    }\n    resetInputValue(null, value);\n  }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n  const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n  if (process.env.NODE_ENV !== 'production') {\n    if (value !== null && !freeSolo && options.length > 0) {\n      const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n      if (missingValue.length > 0) {\n        console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n      }\n    }\n  }\n  const focusTag = useEventCallback(tagToFocus => {\n    if (tagToFocus === -1) {\n      inputRef.current.focus();\n    } else {\n      anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n    }\n  });\n\n  // Ensure the focusedTag is never inconsistent\n  React.useEffect(() => {\n    if (multiple && focusedTag > value.length - 1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n  }, [value, multiple, focusedTag, focusTag]);\n  function validOptionIndex(index, direction) {\n    if (!listboxRef.current || index < 0 || index >= filteredOptions.length) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n      if (option && option.hasAttribute('tabindex') && !nextFocusDisabled) {\n        // The next option is available\n        return nextFocus;\n      }\n\n      // The next option is disabled, move to the next element.\n      // with looped index\n      if (direction === 'next') {\n        nextFocus = (nextFocus + 1) % filteredOptions.length;\n      } else {\n        nextFocus = (nextFocus - 1 + filteredOptions.length) % filteredOptions.length;\n      }\n\n      // We end up with initial index, that means we don't have available options.\n      // All of them are disabled\n      if (nextFocus === index) {\n        return -1;\n      }\n    }\n  }\n  const setHighlightedIndex = useEventCallback(({\n    event,\n    index,\n    reason = 'auto'\n  }) => {\n    highlightedIndexRef.current = index;\n\n    // does the index exist?\n    if (index === -1) {\n      inputRef.current.removeAttribute('aria-activedescendant');\n    } else {\n      inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n    }\n    if (onHighlightChange) {\n      onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n    const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n    if (prev) {\n      prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n      prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n    }\n    let listboxNode = listboxRef.current;\n    if (listboxRef.current.getAttribute('role') !== 'listbox') {\n      listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n    }\n\n    // \"No results\"\n    if (!listboxNode) {\n      return;\n    }\n    if (index === -1) {\n      listboxNode.scrollTop = 0;\n      return;\n    }\n    const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n    if (!option) {\n      return;\n    }\n    option.classList.add(`${unstable_classNamePrefix}-focused`);\n    if (reason === 'keyboard') {\n      option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n    }\n\n    // Scroll active descendant into view.\n    // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n    // In case of mouse clicks and touch (in mobile devices) we avoid scrolling the element and keep both behaviors same.\n    // Consider this API instead once it has a better browser support:\n    // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n    if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse' && reason !== 'touch') {\n      const element = option;\n      const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n      const elementBottom = element.offsetTop + element.offsetHeight;\n      if (elementBottom > scrollBottom) {\n        listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n      } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n        listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n      }\n    }\n  });\n  const changeHighlightedIndex = useEventCallback(({\n    event,\n    diff,\n    direction = 'next',\n    reason = 'auto'\n  }) => {\n    if (!popupOpen) {\n      return;\n    }\n    const getNextIndex = () => {\n      const maxIndex = filteredOptions.length - 1;\n      if (diff === 'reset') {\n        return defaultHighlighted;\n      }\n      if (diff === 'start') {\n        return 0;\n      }\n      if (diff === 'end') {\n        return maxIndex;\n      }\n      const newIndex = highlightedIndexRef.current + diff;\n      if (newIndex < 0) {\n        if (newIndex === -1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n          return 0;\n        }\n        return maxIndex;\n      }\n      if (newIndex > maxIndex) {\n        if (newIndex === maxIndex + 1 && includeInputInList) {\n          return -1;\n        }\n        if (disableListWrap || Math.abs(diff) > 1) {\n          return maxIndex;\n        }\n        return 0;\n      }\n      return newIndex;\n    };\n    const nextIndex = validOptionIndex(getNextIndex(), direction);\n    setHighlightedIndex({\n      index: nextIndex,\n      reason,\n      event\n    });\n\n    // Sync the content of the input with the highlighted option.\n    if (autoComplete && diff !== 'reset') {\n      if (nextIndex === -1) {\n        inputRef.current.value = inputValue;\n      } else {\n        const option = getOptionLabel(filteredOptions[nextIndex]);\n        inputRef.current.value = option;\n\n        // The portion of the selected suggestion that has not been typed by the user,\n        // a completion string, appears inline after the input cursor in the textbox.\n        const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n        if (index === 0 && inputValue.length > 0) {\n          inputRef.current.setSelectionRange(inputValue.length, option.length);\n        }\n      }\n    }\n  });\n  const getPreviousHighlightedOptionIndex = () => {\n    const isSameValue = (value1, value2) => {\n      const label1 = value1 ? getOptionLabel(value1) : '';\n      const label2 = value2 ? getOptionLabel(value2) : '';\n      return label1 === label2;\n    };\n    if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && previousProps.inputValue === inputValue && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n      const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n      if (previousHighlightedOption) {\n        return findIndex(filteredOptions, option => {\n          return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n        });\n      }\n    }\n    return -1;\n  };\n  const syncHighlightedIndex = React.useCallback(() => {\n    if (!popupOpen) {\n      return;\n    }\n\n    // Check if the previously highlighted option still exists in the updated filtered options list and if the value and inputValue haven't changed\n    // If it exists and the value and the inputValue haven't changed, just update its index, otherwise continue execution\n    const previousHighlightedOptionIndex = getPreviousHighlightedOptionIndex();\n    if (previousHighlightedOptionIndex !== -1) {\n      highlightedIndexRef.current = previousHighlightedOptionIndex;\n      return;\n    }\n    const valueItem = multiple ? value[0] : value;\n\n    // The popup is empty, reset\n    if (filteredOptions.length === 0 || valueItem == null) {\n      changeHighlightedIndex({\n        diff: 'reset'\n      });\n      return;\n    }\n    if (!listboxRef.current) {\n      return;\n    }\n\n    // Synchronize the value with the highlighted index\n    if (valueItem != null) {\n      const currentOption = filteredOptions[highlightedIndexRef.current];\n\n      // Keep the current highlighted index if possible\n      if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n        return;\n      }\n      const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n      if (itemIndex === -1) {\n        changeHighlightedIndex({\n          diff: 'reset'\n        });\n      } else {\n        setHighlightedIndex({\n          index: itemIndex\n        });\n      }\n      return;\n    }\n\n    // Prevent the highlighted index to leak outside the boundaries.\n    if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n      setHighlightedIndex({\n        index: filteredOptions.length - 1\n      });\n      return;\n    }\n\n    // Restore the focus to the previous index.\n    setHighlightedIndex({\n      index: highlightedIndexRef.current\n    });\n    // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [\n  // Only sync the highlighted index when the option switch between empty and not\n  filteredOptions.length,\n  // Don't sync the highlighted index with the value when multiple\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n  const handleListboxRef = useEventCallback(node => {\n    setRef(listboxRef, node);\n    if (!node) {\n      return;\n    }\n    syncHighlightedIndex();\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n        if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n          console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (for example enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n        } else {\n          console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n        }\n      }\n    }, [componentName]);\n  }\n  React.useEffect(() => {\n    syncHighlightedIndex();\n  }, [syncHighlightedIndex]);\n  const handleOpen = event => {\n    if (open) {\n      return;\n    }\n    setOpenState(true);\n    setInputPristine(true);\n    if (onOpen) {\n      onOpen(event);\n    }\n  };\n  const handleClose = (event, reason) => {\n    if (!open) {\n      return;\n    }\n    setOpenState(false);\n    if (onClose) {\n      onClose(event, reason);\n    }\n  };\n  const handleValue = (event, newValue, reason, details) => {\n    if (multiple) {\n      if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n        return;\n      }\n    } else if (value === newValue) {\n      return;\n    }\n    if (onChange) {\n      onChange(event, newValue, reason, details);\n    }\n    setValueState(newValue);\n  };\n  const isTouch = React.useRef(false);\n  const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n    let reason = reasonProp;\n    let newValue = option;\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      if (process.env.NODE_ENV !== 'production') {\n        const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n        if (matches.length > 1) {\n          console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n        }\n      }\n      const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n      if (itemIndex === -1) {\n        newValue.push(option);\n      } else if (origin !== 'freeSolo') {\n        newValue.splice(itemIndex, 1);\n        reason = 'removeOption';\n      }\n    }\n    resetInputValue(event, newValue);\n    handleValue(event, newValue, reason, {\n      option\n    });\n    if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n      handleClose(event, reason);\n    }\n    if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n      inputRef.current.blur();\n    }\n  };\n  function validTagIndex(index, direction) {\n    if (index === -1) {\n      return -1;\n    }\n    let nextFocus = index;\n    while (true) {\n      // Out of range\n      if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n        return -1;\n      }\n      const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n      // Same logic as MenuList.js\n      if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n        nextFocus += direction === 'next' ? 1 : -1;\n      } else {\n        return nextFocus;\n      }\n    }\n  }\n  const handleFocusTag = (event, direction) => {\n    if (!multiple) {\n      return;\n    }\n    if (inputValue === '') {\n      handleClose(event, 'toggleInput');\n    }\n    let nextTag = focusedTag;\n    if (focusedTag === -1) {\n      if (inputValue === '' && direction === 'previous') {\n        nextTag = value.length - 1;\n      }\n    } else {\n      nextTag += direction === 'next' ? 1 : -1;\n      if (nextTag < 0) {\n        nextTag = 0;\n      }\n      if (nextTag === value.length) {\n        nextTag = -1;\n      }\n    }\n    nextTag = validTagIndex(nextTag, direction);\n    setFocusedTag(nextTag);\n    focusTag(nextTag);\n  };\n  const handleClear = event => {\n    ignoreFocus.current = true;\n    setInputValueState('');\n    if (onInputChange) {\n      onInputChange(event, '', 'clear');\n    }\n    handleValue(event, multiple ? [] : null, 'clear');\n  };\n  const handleKeyDown = other => event => {\n    if (other.onKeyDown) {\n      other.onKeyDown(event);\n    }\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n    if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n      setFocusedTag(-1);\n      focusTag(-1);\n    }\n\n    // Wait until IME is settled.\n    if (event.which !== 229) {\n      switch (event.key) {\n        case 'Home':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'start',\n              direction: 'next',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'End':\n          if (popupOpen && handleHomeEndKeys) {\n            // Prevent scroll of the page\n            event.preventDefault();\n            changeHighlightedIndex({\n              diff: 'end',\n              direction: 'previous',\n              reason: 'keyboard',\n              event\n            });\n          }\n          break;\n        case 'PageUp':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -pageSize,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'PageDown':\n          // Prevent scroll of the page\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: pageSize,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowDown':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: 1,\n            direction: 'next',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowUp':\n          // Prevent cursor move\n          event.preventDefault();\n          changeHighlightedIndex({\n            diff: -1,\n            direction: 'previous',\n            reason: 'keyboard',\n            event\n          });\n          handleOpen(event);\n          break;\n        case 'ArrowLeft':\n          handleFocusTag(event, 'previous');\n          break;\n        case 'ArrowRight':\n          handleFocusTag(event, 'next');\n          break;\n        case 'Enter':\n          if (highlightedIndexRef.current !== -1 && popupOpen) {\n            const option = filteredOptions[highlightedIndexRef.current];\n            const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n            // Avoid early form validation, let the end-users continue filling the form.\n            event.preventDefault();\n            if (disabled) {\n              return;\n            }\n            selectNewValue(event, option, 'selectOption');\n\n            // Move the selection to the end.\n            if (autoComplete) {\n              inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n            }\n          } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n            if (multiple) {\n              // Allow people to add new values before they submit the form.\n              event.preventDefault();\n            }\n            selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n          }\n          break;\n        case 'Escape':\n          if (popupOpen) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClose(event, 'escape');\n          } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n            // Avoid Opera to exit fullscreen mode.\n            event.preventDefault();\n            // Avoid the Modal to handle the event.\n            event.stopPropagation();\n            handleClear(event);\n          }\n          break;\n        case 'Backspace':\n          // Remove the value on the left of the \"cursor\"\n          if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n            const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        case 'Delete':\n          // Remove the value on the right of the \"cursor\"\n          if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n            const index = focusedTag;\n            const newValue = value.slice();\n            newValue.splice(index, 1);\n            handleValue(event, newValue, 'removeOption', {\n              option: value[index]\n            });\n          }\n          break;\n        default:\n      }\n    }\n  };\n  const handleFocus = event => {\n    setFocused(true);\n    if (openOnFocus && !ignoreFocus.current) {\n      handleOpen(event);\n    }\n  };\n  const handleBlur = event => {\n    // Ignore the event when using the scrollbar with IE11\n    if (unstable_isActiveElementInListbox(listboxRef)) {\n      inputRef.current.focus();\n      return;\n    }\n    setFocused(false);\n    firstFocus.current = true;\n    ignoreFocus.current = false;\n    if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n      selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n    } else if (autoSelect && freeSolo && inputValue !== '') {\n      selectNewValue(event, inputValue, 'blur', 'freeSolo');\n    } else if (clearOnBlur) {\n      resetInputValue(event, value);\n    }\n    handleClose(event, 'blur');\n  };\n  const handleInputChange = event => {\n    const newValue = event.target.value;\n    if (inputValue !== newValue) {\n      setInputValueState(newValue);\n      setInputPristine(false);\n      if (onInputChange) {\n        onInputChange(event, newValue, 'input');\n      }\n    }\n    if (newValue === '') {\n      if (!disableClearable && !multiple) {\n        handleValue(event, null, 'clear');\n      }\n    } else {\n      handleOpen(event);\n    }\n  };\n  const handleOptionMouseMove = event => {\n    const index = Number(event.currentTarget.getAttribute('data-option-index'));\n    if (highlightedIndexRef.current !== index) {\n      setHighlightedIndex({\n        event,\n        index,\n        reason: 'mouse'\n      });\n    }\n  };\n  const handleOptionTouchStart = event => {\n    setHighlightedIndex({\n      event,\n      index: Number(event.currentTarget.getAttribute('data-option-index')),\n      reason: 'touch'\n    });\n    isTouch.current = true;\n  };\n  const handleOptionClick = event => {\n    const index = Number(event.currentTarget.getAttribute('data-option-index'));\n    selectNewValue(event, filteredOptions[index], 'selectOption');\n    isTouch.current = false;\n  };\n  const handleTagDelete = index => event => {\n    const newValue = value.slice();\n    newValue.splice(index, 1);\n    handleValue(event, newValue, 'removeOption', {\n      option: value[index]\n    });\n  };\n  const handlePopupIndicator = event => {\n    if (open) {\n      handleClose(event, 'toggleInput');\n    } else {\n      handleOpen(event);\n    }\n  };\n\n  // Prevent input blur when interacting with the combobox\n  const handleMouseDown = event => {\n    // Prevent focusing the input if click is anywhere outside the Autocomplete\n    if (!event.currentTarget.contains(event.target)) {\n      return;\n    }\n    if (event.target.getAttribute('id') !== id) {\n      event.preventDefault();\n    }\n  };\n\n  // Focus the input when interacting with the combobox\n  const handleClick = event => {\n    // Prevent focusing the input if click is anywhere outside the Autocomplete\n    if (!event.currentTarget.contains(event.target)) {\n      return;\n    }\n    inputRef.current.focus();\n    if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n      inputRef.current.select();\n    }\n    firstFocus.current = false;\n  };\n  const handleInputMouseDown = event => {\n    if (!disabledProp && (inputValue === '' || !open)) {\n      handlePopupIndicator(event);\n    }\n  };\n  let dirty = freeSolo && inputValue.length > 0;\n  dirty = dirty || (multiple ? value.length > 0 : value !== null);\n  let groupedOptions = filteredOptions;\n  if (groupBy) {\n    // used to keep track of key and indexes in the result array\n    const indexBy = new Map();\n    let warn = false;\n    groupedOptions = filteredOptions.reduce((acc, option, index) => {\n      const group = groupBy(option);\n      if (acc.length > 0 && acc[acc.length - 1].group === group) {\n        acc[acc.length - 1].options.push(option);\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          if (indexBy.get(group) && !warn) {\n            console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n            warn = true;\n          }\n          indexBy.set(group, true);\n        }\n        acc.push({\n          key: index,\n          index,\n          group,\n          options: [option]\n        });\n      }\n      return acc;\n    }, []);\n  }\n  if (disabledProp && focused) {\n    handleBlur();\n  }\n  return {\n    getRootProps: (other = {}) => _extends({\n      'aria-owns': listboxAvailable ? `${id}-listbox` : null\n    }, other, {\n      onKeyDown: handleKeyDown(other),\n      onMouseDown: handleMouseDown,\n      onClick: handleClick\n    }),\n    getInputLabelProps: () => ({\n      id: `${id}-label`,\n      htmlFor: id\n    }),\n    getInputProps: () => ({\n      id,\n      value: inputValue,\n      onBlur: handleBlur,\n      onFocus: handleFocus,\n      onChange: handleInputChange,\n      onMouseDown: handleInputMouseDown,\n      // if open then this is handled imperatively so don't let react override\n      // only have an opinion about this when closed\n      'aria-activedescendant': popupOpen ? '' : null,\n      'aria-autocomplete': autoComplete ? 'both' : 'list',\n      'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n      'aria-expanded': listboxAvailable,\n      // Disable browser's suggestion that might overlap with the popup.\n      // Handle autocomplete but not autofill.\n      autoComplete: 'off',\n      ref: inputRef,\n      autoCapitalize: 'none',\n      spellCheck: 'false',\n      role: 'combobox',\n      disabled: disabledProp\n    }),\n    getClearProps: () => ({\n      tabIndex: -1,\n      type: 'button',\n      onClick: handleClear\n    }),\n    getPopupIndicatorProps: () => ({\n      tabIndex: -1,\n      type: 'button',\n      onClick: handlePopupIndicator\n    }),\n    getTagProps: ({\n      index\n    }) => _extends({\n      key: index,\n      'data-tag-index': index,\n      tabIndex: -1\n    }, !readOnly && {\n      onDelete: handleTagDelete(index)\n    }),\n    getListboxProps: () => ({\n      role: 'listbox',\n      id: `${id}-listbox`,\n      'aria-labelledby': `${id}-label`,\n      ref: handleListboxRef,\n      onMouseDown: event => {\n        // Prevent blur\n        event.preventDefault();\n      }\n    }),\n    getOptionProps: ({\n      index,\n      option\n    }) => {\n      var _getOptionKey;\n      const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n      const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n      return {\n        key: (_getOptionKey = getOptionKey == null ? void 0 : getOptionKey(option)) != null ? _getOptionKey : getOptionLabel(option),\n        tabIndex: -1,\n        role: 'option',\n        id: `${id}-option-${index}`,\n        onMouseMove: handleOptionMouseMove,\n        onClick: handleOptionClick,\n        onTouchStart: handleOptionTouchStart,\n        'data-option-index': index,\n        'aria-disabled': disabled,\n        'aria-selected': selected\n      };\n    },\n    id,\n    inputValue,\n    value,\n    dirty,\n    expanded: popupOpen && anchorEl,\n    popupOpen,\n    focused: focused || focusedTag !== -1,\n    anchorEl,\n    setAnchorEl,\n    focusedTag,\n    groupedOptions\n  };\n}","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar React = _interopRequireWildcard(require(\"react\"));\nvar _styledEngine = require(\"@mui/styled-engine\");\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isObjectEmpty(obj) {\n  return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n  const contextTheme = React.useContext(_styledEngine.ThemeContext);\n  return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nvar _default = exports.default = useTheme;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"component\", \"components\", \"componentsProps\", \"container\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"transition\", \"slots\", \"slotProps\"];\nimport { Popper as BasePopper } from '@mui/base/Popper';\nimport useTheme from '@mui/system/useThemeWithoutDefault';\nimport refType from '@mui/utils/refType';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { styled, useThemeProps } from '../styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(BasePopper, {\n  name: 'MuiPopper',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n  var _slots$root;\n  const theme = useTheme();\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPopper'\n  });\n  const {\n      anchorEl,\n      component,\n      components,\n      componentsProps,\n      container,\n      disablePortal,\n      keepMounted,\n      modifiers,\n      open,\n      placement,\n      popperOptions,\n      popperRef,\n      transition,\n      slots,\n      slotProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n  const otherProps = _extends({\n    anchorEl,\n    container,\n    disablePortal,\n    keepMounted,\n    modifiers,\n    open,\n    placement,\n    popperOptions,\n    popperRef,\n    transition\n  }, other);\n  return /*#__PURE__*/_jsx(PopperRoot, _extends({\n    as: component,\n    direction: theme == null ? void 0 : theme.direction,\n    slots: {\n      root: RootComponent\n    },\n    slotProps: slotProps != null ? slotProps : componentsProps\n  }, otherProps, {\n    ref: ref\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n   * or a function that returns either.\n   * It's used to set the position of the popper.\n   * The return value will passed as the reference object of the Popper instance.\n   */\n  anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n  /**\n   * Popper render function or node.\n   */\n  children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Popper.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Popper.js is based on a \"plugin-like\" architecture,\n   * most of its features are fully encapsulated \"modifiers\".\n   *\n   * A modifier is a function that is called each time Popper.js needs to\n   * compute the position of the popper.\n   * For this reason, modifiers should be very performant to avoid bottlenecks.\n   * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n   */\n  modifiers: PropTypes.arrayOf(PropTypes.shape({\n    data: PropTypes.object,\n    effect: PropTypes.func,\n    enabled: PropTypes.bool,\n    fn: PropTypes.func,\n    name: PropTypes.any,\n    options: PropTypes.object,\n    phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n    requires: PropTypes.arrayOf(PropTypes.string),\n    requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n  })),\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Popper placement.\n   * @default 'bottom'\n   */\n  placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n  /**\n   * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n   * @default {}\n   */\n  popperOptions: PropTypes.shape({\n    modifiers: PropTypes.array,\n    onFirstUpdate: PropTypes.func,\n    placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n    strategy: PropTypes.oneOf(['absolute', 'fixed'])\n  }),\n  /**\n   * A ref that points to the used popper instance.\n   */\n  popperRef: refType,\n  /**\n   * The props used for each slot inside the Popper.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Popper.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Help supporting a react-transition-group/Transition component.\n   * @default false\n   */\n  transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n  return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disableGutters,\n    inset,\n    disableSticky\n  } = ownerState;\n  const slots = {\n    root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n  };\n  return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n  name: 'MuiListSubheader',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  boxSizing: 'border-box',\n  lineHeight: '48px',\n  listStyle: 'none',\n  color: (theme.vars || theme).palette.text.secondary,\n  fontFamily: theme.typography.fontFamily,\n  fontWeight: theme.typography.fontWeightMedium,\n  fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n  color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n  color: 'inherit'\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, ownerState.inset && {\n  paddingLeft: 72\n}, !ownerState.disableSticky && {\n  position: 'sticky',\n  top: 0,\n  zIndex: 1,\n  backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiListSubheader'\n  });\n  const {\n      className,\n      color = 'default',\n      component = 'li',\n      disableGutters = false,\n      disableSticky = false,\n      inset = false\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disableGutters,\n    disableSticky,\n    inset\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    ref: ref,\n    ownerState: ownerState\n  }, other));\n});\nListSubheader.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   * @default 'default'\n   */\n  color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the List Subheader will not have gutters.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, the List Subheader will not stick to the top during scroll.\n   * @default false\n   */\n  disableSticky: PropTypes.bool,\n  /**\n   * If `true`, the List Subheader is indented.\n   * @default false\n   */\n  inset: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getChipUtilityClass(slot) {\n  return generateUtilityClass('MuiChip', slot);\n}\nconst chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);\nexport default chipClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"avatar\", \"className\", \"clickable\", \"color\", \"component\", \"deleteIcon\", \"disabled\", \"icon\", \"label\", \"onClick\", \"onDelete\", \"onKeyDown\", \"onKeyUp\", \"size\", \"variant\", \"tabIndex\", \"skipFocusWhenDisabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport CancelIcon from '../internal/svg-icons/Cancel';\nimport useForkRef from '../utils/useForkRef';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport capitalize from '../utils/capitalize';\nimport ButtonBase from '../ButtonBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport chipClasses, { getChipUtilityClass } from './chipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disabled,\n    size,\n    color,\n    iconColor,\n    onDelete,\n    clickable,\n    variant\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, disabled && 'disabled', `size${capitalize(size)}`, `color${capitalize(color)}`, clickable && 'clickable', clickable && `clickableColor${capitalize(color)}`, onDelete && 'deletable', onDelete && `deletableColor${capitalize(color)}`, `${variant}${capitalize(color)}`],\n    label: ['label', `label${capitalize(size)}`],\n    avatar: ['avatar', `avatar${capitalize(size)}`, `avatarColor${capitalize(color)}`],\n    icon: ['icon', `icon${capitalize(size)}`, `iconColor${capitalize(iconColor)}`],\n    deleteIcon: ['deleteIcon', `deleteIcon${capitalize(size)}`, `deleteIconColor${capitalize(color)}`, `deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n  };\n  return composeClasses(slots, getChipUtilityClass, classes);\n};\nconst ChipRoot = styled('div', {\n  name: 'MuiChip',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      color,\n      iconColor,\n      clickable,\n      onDelete,\n      size,\n      variant\n    } = ownerState;\n    return [{\n      [`& .${chipClasses.avatar}`]: styles.avatar\n    }, {\n      [`& .${chipClasses.avatar}`]: styles[`avatar${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.avatar}`]: styles[`avatarColor${capitalize(color)}`]\n    }, {\n      [`& .${chipClasses.icon}`]: styles.icon\n    }, {\n      [`& .${chipClasses.icon}`]: styles[`icon${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.icon}`]: styles[`iconColor${capitalize(iconColor)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles.deleteIcon\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(size)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconColor${capitalize(color)}`]\n    }, {\n      [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n    }, styles.root, styles[`size${capitalize(size)}`], styles[`color${capitalize(color)}`], clickable && styles.clickable, clickable && color !== 'default' && styles[`clickableColor${capitalize(color)})`], onDelete && styles.deletable, onDelete && color !== 'default' && styles[`deletableColor${capitalize(color)}`], styles[variant], styles[`${variant}${capitalize(color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const textColor = theme.palette.mode === 'light' ? theme.palette.grey[700] : theme.palette.grey[300];\n  return _extends({\n    maxWidth: '100%',\n    fontFamily: theme.typography.fontFamily,\n    fontSize: theme.typography.pxToRem(13),\n    display: 'inline-flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    height: 32,\n    color: (theme.vars || theme).palette.text.primary,\n    backgroundColor: (theme.vars || theme).palette.action.selected,\n    borderRadius: 32 / 2,\n    whiteSpace: 'nowrap',\n    transition: theme.transitions.create(['background-color', 'box-shadow']),\n    // reset cursor explicitly in case ButtonBase is used\n    cursor: 'unset',\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n    textDecoration: 'none',\n    border: 0,\n    // Remove `button` border\n    padding: 0,\n    // Remove `button` padding\n    verticalAlign: 'middle',\n    boxSizing: 'border-box',\n    [`&.${chipClasses.disabled}`]: {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`& .${chipClasses.avatar}`]: {\n      marginLeft: 5,\n      marginRight: -6,\n      width: 24,\n      height: 24,\n      color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,\n      fontSize: theme.typography.pxToRem(12)\n    },\n    [`& .${chipClasses.avatarColorPrimary}`]: {\n      color: (theme.vars || theme).palette.primary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.primary.dark\n    },\n    [`& .${chipClasses.avatarColorSecondary}`]: {\n      color: (theme.vars || theme).palette.secondary.contrastText,\n      backgroundColor: (theme.vars || theme).palette.secondary.dark\n    },\n    [`& .${chipClasses.avatarSmall}`]: {\n      marginLeft: 4,\n      marginRight: -4,\n      width: 18,\n      height: 18,\n      fontSize: theme.typography.pxToRem(10)\n    },\n    [`& .${chipClasses.icon}`]: _extends({\n      marginLeft: 5,\n      marginRight: -6\n    }, ownerState.size === 'small' && {\n      fontSize: 18,\n      marginLeft: 4,\n      marginRight: -4\n    }, ownerState.iconColor === ownerState.color && _extends({\n      color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor\n    }, ownerState.color !== 'default' && {\n      color: 'inherit'\n    })),\n    [`& .${chipClasses.deleteIcon}`]: _extends({\n      WebkitTapHighlightColor: 'transparent',\n      color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : alpha(theme.palette.text.primary, 0.26),\n      fontSize: 22,\n      cursor: 'pointer',\n      margin: '0 5px 0 -6px',\n      '&:hover': {\n        color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(theme.palette.text.primary, 0.4)\n      }\n    }, ownerState.size === 'small' && {\n      fontSize: 16,\n      marginRight: 4,\n      marginLeft: -4\n    }, ownerState.color !== 'default' && {\n      color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].contrastTextChannel} / 0.7)` : alpha(theme.palette[ownerState.color].contrastText, 0.7),\n      '&:hover, &:active': {\n        color: (theme.vars || theme).palette[ownerState.color].contrastText\n      }\n    })\n  }, ownerState.size === 'small' && {\n    height: 24\n  }, ownerState.color !== 'default' && {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n    color: (theme.vars || theme).palette[ownerState.color].contrastText\n  }, ownerState.onDelete && {\n    [`&.${chipClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  }, ownerState.onDelete && ownerState.color !== 'default' && {\n    [`&.${chipClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n    }\n  });\n}, ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.clickable && {\n  userSelect: 'none',\n  WebkitTapHighlightColor: 'transparent',\n  cursor: 'pointer',\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n  },\n  '&:active': {\n    boxShadow: (theme.vars || theme).shadows[1]\n  }\n}, ownerState.clickable && ownerState.color !== 'default' && {\n  [`&:hover, &.${chipClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n  }\n}), ({\n  theme,\n  ownerState\n}) => _extends({}, ownerState.variant === 'outlined' && {\n  backgroundColor: 'transparent',\n  border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n  [`&.${chipClasses.clickable}:hover`]: {\n    backgroundColor: (theme.vars || theme).palette.action.hover\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`& .${chipClasses.avatar}`]: {\n    marginLeft: 4\n  },\n  [`& .${chipClasses.avatarSmall}`]: {\n    marginLeft: 2\n  },\n  [`& .${chipClasses.icon}`]: {\n    marginLeft: 4\n  },\n  [`& .${chipClasses.iconSmall}`]: {\n    marginLeft: 2\n  },\n  [`& .${chipClasses.deleteIcon}`]: {\n    marginRight: 5\n  },\n  [`& .${chipClasses.deleteIconSmall}`]: {\n    marginRight: 3\n  }\n}, ownerState.variant === 'outlined' && ownerState.color !== 'default' && {\n  color: (theme.vars || theme).palette[ownerState.color].main,\n  border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7)}`,\n  [`&.${chipClasses.clickable}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)\n  },\n  [`&.${chipClasses.focusVisible}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)\n  },\n  [`& .${chipClasses.deleteIcon}`]: {\n    color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7),\n    '&:hover, &:active': {\n      color: (theme.vars || theme).palette[ownerState.color].main\n    }\n  }\n}));\nconst ChipLabel = styled('span', {\n  name: 'MuiChip',\n  slot: 'Label',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      size\n    } = ownerState;\n    return [styles.label, styles[`label${capitalize(size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  overflow: 'hidden',\n  textOverflow: 'ellipsis',\n  paddingLeft: 12,\n  paddingRight: 12,\n  whiteSpace: 'nowrap'\n}, ownerState.variant === 'outlined' && {\n  paddingLeft: 11,\n  paddingRight: 11\n}, ownerState.size === 'small' && {\n  paddingLeft: 8,\n  paddingRight: 8\n}, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n  paddingLeft: 7,\n  paddingRight: 7\n}));\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n  return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\nconst Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiChip'\n  });\n  const {\n      avatar: avatarProp,\n      className,\n      clickable: clickableProp,\n      color = 'default',\n      component: ComponentProp,\n      deleteIcon: deleteIconProp,\n      disabled = false,\n      icon: iconProp,\n      label,\n      onClick,\n      onDelete,\n      onKeyDown,\n      onKeyUp,\n      size = 'medium',\n      variant = 'filled',\n      tabIndex,\n      skipFocusWhenDisabled = false // TODO v6: Rename to `focusableWhenDisabled`.\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const chipRef = React.useRef(null);\n  const handleRef = useForkRef(chipRef, ref);\n  const handleDeleteIconClick = event => {\n    // Stop the event from bubbling up to the `Chip`\n    event.stopPropagation();\n    if (onDelete) {\n      onDelete(event);\n    }\n  };\n  const handleKeyDown = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n      // Will be handled in keyUp, otherwise some browsers\n      // might init navigation\n      event.preventDefault();\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleKeyUp = event => {\n    // Ignore events from children of `Chip`.\n    if (event.currentTarget === event.target) {\n      if (onDelete && isDeleteKeyboardEvent(event)) {\n        onDelete(event);\n      } else if (event.key === 'Escape' && chipRef.current) {\n        chipRef.current.blur();\n      }\n    }\n    if (onKeyUp) {\n      onKeyUp(event);\n    }\n  };\n  const clickable = clickableProp !== false && onClick ? true : clickableProp;\n  const component = clickable || onDelete ? ButtonBase : ComponentProp || 'div';\n  const ownerState = _extends({}, props, {\n    component,\n    disabled,\n    size,\n    color,\n    iconColor: /*#__PURE__*/React.isValidElement(iconProp) ? iconProp.props.color || color : color,\n    onDelete: !!onDelete,\n    clickable,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const moreProps = component === ButtonBase ? _extends({\n    component: ComponentProp || 'div',\n    focusVisibleClassName: classes.focusVisible\n  }, onDelete && {\n    disableRipple: true\n  }) : {};\n  let deleteIcon = null;\n  if (onDelete) {\n    deleteIcon = deleteIconProp && /*#__PURE__*/React.isValidElement(deleteIconProp) ? ( /*#__PURE__*/React.cloneElement(deleteIconProp, {\n      className: clsx(deleteIconProp.props.className, classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    })) : /*#__PURE__*/_jsx(CancelIcon, {\n      className: clsx(classes.deleteIcon),\n      onClick: handleDeleteIconClick\n    });\n  }\n  let avatar = null;\n  if (avatarProp && /*#__PURE__*/React.isValidElement(avatarProp)) {\n    avatar = /*#__PURE__*/React.cloneElement(avatarProp, {\n      className: clsx(classes.avatar, avatarProp.props.className)\n    });\n  }\n  let icon = null;\n  if (iconProp && /*#__PURE__*/React.isValidElement(iconProp)) {\n    icon = /*#__PURE__*/React.cloneElement(iconProp, {\n      className: clsx(classes.icon, iconProp.props.className)\n    });\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    if (avatar && icon) {\n      console.error('MUI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n    }\n  }\n  return /*#__PURE__*/_jsxs(ChipRoot, _extends({\n    as: component,\n    className: clsx(classes.root, className),\n    disabled: clickable && disabled ? true : undefined,\n    onClick: onClick,\n    onKeyDown: handleKeyDown,\n    onKeyUp: handleKeyUp,\n    ref: handleRef,\n    tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,\n    ownerState: ownerState\n  }, moreProps, other, {\n    children: [avatar || icon, /*#__PURE__*/_jsx(ChipLabel, {\n      className: clsx(classes.label),\n      ownerState: ownerState,\n      children: label\n    }), deleteIcon]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Chip.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The Avatar element to display.\n   */\n  avatar: PropTypes.element,\n  /**\n   * This prop isn't supported.\n   * Use the `component` prop if you need to change the children structure.\n   */\n  children: unsupportedProp,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the chip will appear clickable, and will raise when pressed,\n   * even if the onClick prop is not defined.\n   * If `false`, the chip will not appear clickable, even if onClick prop is defined.\n   * This can be used, for example,\n   * along with the component prop to indicate an anchor Chip is clickable.\n   * Note: this controls the UI and does not affect the onClick event.\n   */\n  clickable: PropTypes.bool,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'default'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * Override the default delete icon element. Shown only if `onDelete` is set.\n   */\n  deleteIcon: PropTypes.element,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * Icon element.\n   */\n  icon: PropTypes.element,\n  /**\n   * The content of the component.\n   */\n  label: PropTypes.node,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * Callback fired when the delete icon is clicked.\n   * If set, the delete icon will be shown.\n   */\n  onDelete: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * If `true`, allows the disabled chip to escape focus.\n   * If `false`, allows the disabled chip to receive focus.\n   * @default false\n   */\n  skipFocusWhenDisabled: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.number,\n  /**\n   * The variant to use.\n   * @default 'filled'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Chip;","export default function formControlState({\n  props,\n  states,\n  muiFormControl\n}) {\n  return states.reduce((acc, state) => {\n    acc[state] = props[state];\n    if (muiFormControl) {\n      if (typeof props[state] === 'undefined') {\n        acc[state] = muiFormControl[state];\n      }\n    }\n    return acc;\n  }, {});\n}","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","'use client';\n\nimport * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n  return React.useContext(FormControlContext);\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as SystemGlobalStyles } from '@mui/system';\nimport defaultTheme from '../styles/defaultTheme';\nimport THEME_ID from '../styles/identifier';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles(props) {\n  return /*#__PURE__*/_jsx(SystemGlobalStyles, _extends({}, props, {\n    defaultTheme: defaultTheme,\n    themeId: THEME_ID\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The styles you want to apply globally.\n   */\n  styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool])\n} : void 0;\nexport default GlobalStyles;","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n  return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n//                    True when any number or string with length.\nexport function isFilled(obj, SSR = false) {\n  return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n//                    True when adorned at the start.\nexport function isAdornedStart(obj) {\n  return obj.startAdornment;\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getInputBaseUtilityClass(slot) {\n  return generateUtilityClass('MuiInputBase', slot);\n}\nconst inputBaseClasses = generateUtilityClasses('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);\nexport default inputBaseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"className\", \"color\", \"components\", \"componentsProps\", \"defaultValue\", \"disabled\", \"disableInjectingGlobalStyles\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"size\", \"slotProps\", \"slots\", \"startAdornment\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport refType from '@mui/utils/refType';\nimport { TextareaAutosize } from '@mui/base';\nimport { isHostComponent } from '@mui/base/utils';\nimport composeClasses from '@mui/utils/composeClasses';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport GlobalStyles from '../GlobalStyles';\nimport { isFilled } from './utils';\nimport inputBaseClasses, { getInputBaseUtilityClass } from './inputBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const rootOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.formControl && styles.formControl, ownerState.startAdornment && styles.adornedStart, ownerState.endAdornment && styles.adornedEnd, ownerState.error && styles.error, ownerState.size === 'small' && styles.sizeSmall, ownerState.multiline && styles.multiline, ownerState.color && styles[`color${capitalize(ownerState.color)}`], ownerState.fullWidth && styles.fullWidth, ownerState.hiddenLabel && styles.hiddenLabel];\n};\nexport const inputOverridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    disabled,\n    error,\n    endAdornment,\n    focused,\n    formControl,\n    fullWidth,\n    hiddenLabel,\n    multiline,\n    readOnly,\n    size,\n    startAdornment,\n    type\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size && size !== 'medium' && `size${capitalize(size)}`, multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],\n    input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']\n  };\n  return composeClasses(slots, getInputBaseUtilityClass, classes);\n};\nexport const InputBaseRoot = styled('div', {\n  name: 'MuiInputBase',\n  slot: 'Root',\n  overridesResolver: rootOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.body1, {\n  color: (theme.vars || theme).palette.text.primary,\n  lineHeight: '1.4375em',\n  // 23px\n  boxSizing: 'border-box',\n  // Prevent padding issue with fullWidth.\n  position: 'relative',\n  cursor: 'text',\n  display: 'inline-flex',\n  alignItems: 'center',\n  [`&.${inputBaseClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.text.disabled,\n    cursor: 'default'\n  }\n}, ownerState.multiline && _extends({\n  padding: '4px 0 5px'\n}, ownerState.size === 'small' && {\n  paddingTop: 1\n}), ownerState.fullWidth && {\n  width: '100%'\n}));\nexport const InputBaseComponent = styled('input', {\n  name: 'MuiInputBase',\n  slot: 'Input',\n  overridesResolver: inputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => {\n  const light = theme.palette.mode === 'light';\n  const placeholder = _extends({\n    color: 'currentColor'\n  }, theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  }, {\n    transition: theme.transitions.create('opacity', {\n      duration: theme.transitions.duration.shorter\n    })\n  });\n  const placeholderHidden = {\n    opacity: '0 !important'\n  };\n  const placeholderVisible = theme.vars ? {\n    opacity: theme.vars.opacity.inputPlaceholder\n  } : {\n    opacity: light ? 0.42 : 0.5\n  };\n  return _extends({\n    font: 'inherit',\n    letterSpacing: 'inherit',\n    color: 'currentColor',\n    padding: '4px 0 5px',\n    border: 0,\n    boxSizing: 'content-box',\n    background: 'none',\n    height: '1.4375em',\n    // Reset 23pxthe native input line-height\n    margin: 0,\n    // Reset for Safari\n    WebkitTapHighlightColor: 'transparent',\n    display: 'block',\n    // Make the flex item shrink with Firefox\n    minWidth: 0,\n    width: '100%',\n    // Fix IE11 width issue\n    animationName: 'mui-auto-fill-cancel',\n    animationDuration: '10ms',\n    '&::-webkit-input-placeholder': placeholder,\n    '&::-moz-placeholder': placeholder,\n    // Firefox 19+\n    '&:-ms-input-placeholder': placeholder,\n    // IE11\n    '&::-ms-input-placeholder': placeholder,\n    // Edge\n    '&:focus': {\n      outline: 0\n    },\n    // Reset Firefox invalid required input style\n    '&:invalid': {\n      boxShadow: 'none'\n    },\n    '&::-webkit-search-decoration': {\n      // Remove the padding when type=search.\n      WebkitAppearance: 'none'\n    },\n    // Show and hide the placeholder logic\n    [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {\n      '&::-webkit-input-placeholder': placeholderHidden,\n      '&::-moz-placeholder': placeholderHidden,\n      // Firefox 19+\n      '&:-ms-input-placeholder': placeholderHidden,\n      // IE11\n      '&::-ms-input-placeholder': placeholderHidden,\n      // Edge\n      '&:focus::-webkit-input-placeholder': placeholderVisible,\n      '&:focus::-moz-placeholder': placeholderVisible,\n      // Firefox 19+\n      '&:focus:-ms-input-placeholder': placeholderVisible,\n      // IE11\n      '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n    },\n    [`&.${inputBaseClasses.disabled}`]: {\n      opacity: 1,\n      // Reset iOS opacity\n      WebkitTextFillColor: (theme.vars || theme).palette.text.disabled // Fix opacity Safari bug\n    },\n    '&:-webkit-autofill': {\n      animationDuration: '5000s',\n      animationName: 'mui-auto-fill'\n    }\n  }, ownerState.size === 'small' && {\n    paddingTop: 1\n  }, ownerState.multiline && {\n    height: 'auto',\n    resize: 'none',\n    padding: 0,\n    paddingTop: 0\n  }, ownerState.type === 'search' && {\n    // Improve type search style.\n    MozAppearance: 'textfield'\n  });\n});\nconst inputGlobalStyles = /*#__PURE__*/_jsx(GlobalStyles, {\n  styles: {\n    '@keyframes mui-auto-fill': {\n      from: {\n        display: 'block'\n      }\n    },\n    '@keyframes mui-auto-fill-cancel': {\n      from: {\n        display: 'block'\n      }\n    }\n  }\n});\n\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\nconst InputBase = /*#__PURE__*/React.forwardRef(function InputBase(inProps, ref) {\n  var _slotProps$input;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiInputBase'\n  });\n  const {\n      'aria-describedby': ariaDescribedby,\n      autoComplete,\n      autoFocus,\n      className,\n      components = {},\n      componentsProps = {},\n      defaultValue,\n      disabled,\n      disableInjectingGlobalStyles,\n      endAdornment,\n      fullWidth = false,\n      id,\n      inputComponent = 'input',\n      inputProps: inputPropsProp = {},\n      inputRef: inputRefProp,\n      maxRows,\n      minRows,\n      multiline = false,\n      name,\n      onBlur,\n      onChange,\n      onClick,\n      onFocus,\n      onKeyDown,\n      onKeyUp,\n      placeholder,\n      readOnly,\n      renderSuffix,\n      rows,\n      slotProps = {},\n      slots = {},\n      startAdornment,\n      type = 'text',\n      value: valueProp\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n  const {\n    current: isControlled\n  } = React.useRef(value != null);\n  const inputRef = React.useRef();\n  const handleInputRefWarning = React.useCallback(instance => {\n    if (process.env.NODE_ENV !== 'production') {\n      if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n        console.error(['MUI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `ref` prop.', 'Make sure the `ref` prop is called with a HTMLInputElement.'].join('\\n'));\n      }\n    }\n  }, []);\n  const handleInputRef = useForkRef(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);\n  const [focused, setFocused] = React.useState(false);\n  const muiFormControl = useFormControl();\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (muiFormControl) {\n        return muiFormControl.registerEffect();\n      }\n      return undefined;\n    }, [muiFormControl]);\n  }\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'disabled', 'error', 'hiddenLabel', 'size', 'required', 'filled']\n  });\n  fcs.focused = muiFormControl ? muiFormControl.focused : focused;\n\n  // The blur won't fire when the disabled state is set on a focused input.\n  // We need to book keep the focused state manually.\n  React.useEffect(() => {\n    if (!muiFormControl && disabled && focused) {\n      setFocused(false);\n      if (onBlur) {\n        onBlur();\n      }\n    }\n  }, [muiFormControl, disabled, focused, onBlur]);\n  const onFilled = muiFormControl && muiFormControl.onFilled;\n  const onEmpty = muiFormControl && muiFormControl.onEmpty;\n  const checkDirty = React.useCallback(obj => {\n    if (isFilled(obj)) {\n      if (onFilled) {\n        onFilled();\n      }\n    } else if (onEmpty) {\n      onEmpty();\n    }\n  }, [onFilled, onEmpty]);\n  useEnhancedEffect(() => {\n    if (isControlled) {\n      checkDirty({\n        value\n      });\n    }\n  }, [value, checkDirty, isControlled]);\n  const handleFocus = event => {\n    // Fix a bug with IE11 where the focus/blur events are triggered\n    // while the component is disabled.\n    if (fcs.disabled) {\n      event.stopPropagation();\n      return;\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (inputPropsProp.onFocus) {\n      inputPropsProp.onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    } else {\n      setFocused(true);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (inputPropsProp.onBlur) {\n      inputPropsProp.onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    } else {\n      setFocused(false);\n    }\n  };\n  const handleChange = (event, ...args) => {\n    if (!isControlled) {\n      const element = event.target || inputRef.current;\n      if (element == null) {\n        throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Expected valid input target. Did you use a custom \\`inputComponent\\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : _formatMuiErrorMessage(1));\n      }\n      checkDirty({\n        value: element.value\n      });\n    }\n    if (inputPropsProp.onChange) {\n      inputPropsProp.onChange(event, ...args);\n    }\n\n    // Perform in the willUpdate\n    if (onChange) {\n      onChange(event, ...args);\n    }\n  };\n\n  // Check the input state on mount, in case it was filled by the user\n  // or auto filled by the browser before the hydration (for SSR).\n  React.useEffect(() => {\n    checkDirty(inputRef.current);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  const handleClick = event => {\n    if (inputRef.current && event.currentTarget === event.target) {\n      inputRef.current.focus();\n    }\n    if (onClick) {\n      onClick(event);\n    }\n  };\n  let InputComponent = inputComponent;\n  let inputProps = inputPropsProp;\n  if (multiline && InputComponent === 'input') {\n    if (rows) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (minRows || maxRows) {\n          console.warn('MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.');\n        }\n      }\n      inputProps = _extends({\n        type: undefined,\n        minRows: rows,\n        maxRows: rows\n      }, inputProps);\n    } else {\n      inputProps = _extends({\n        type: undefined,\n        maxRows,\n        minRows\n      }, inputProps);\n    }\n    InputComponent = TextareaAutosize;\n  }\n  const handleAutoFill = event => {\n    // Provide a fake value as Chrome might not let you access it for security reasons.\n    checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n      value: 'x'\n    });\n  };\n  React.useEffect(() => {\n    if (muiFormControl) {\n      muiFormControl.setAdornedStart(Boolean(startAdornment));\n    }\n  }, [muiFormControl, startAdornment]);\n  const ownerState = _extends({}, props, {\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    endAdornment,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    startAdornment,\n    type\n  });\n  const classes = useUtilityClasses(ownerState);\n  const Root = slots.root || components.Root || InputBaseRoot;\n  const rootProps = slotProps.root || componentsProps.root || {};\n  const Input = slots.input || components.Input || InputBaseComponent;\n  inputProps = _extends({}, inputProps, (_slotProps$input = slotProps.input) != null ? _slotProps$input : componentsProps.input);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [!disableInjectingGlobalStyles && inputGlobalStyles, /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n      ownerState: _extends({}, ownerState, rootProps.ownerState)\n    }, {\n      ref: ref,\n      onClick: handleClick\n    }, other, {\n      className: clsx(classes.root, rootProps.className, className, readOnly && 'MuiInputBase-readOnly'),\n      children: [startAdornment, /*#__PURE__*/_jsx(FormControlContext.Provider, {\n        value: null,\n        children: /*#__PURE__*/_jsx(Input, _extends({\n          ownerState: ownerState,\n          \"aria-invalid\": fcs.error,\n          \"aria-describedby\": ariaDescribedby,\n          autoComplete: autoComplete,\n          autoFocus: autoFocus,\n          defaultValue: defaultValue,\n          disabled: fcs.disabled,\n          id: id,\n          onAnimationStart: handleAutoFill,\n          name: name,\n          placeholder: placeholder,\n          readOnly: readOnly,\n          required: fcs.required,\n          rows: rows,\n          value: value,\n          onKeyDown: onKeyDown,\n          onKeyUp: onKeyUp,\n          type: type\n        }, inputProps, !isHostComponent(Input) && {\n          as: InputComponent,\n          ownerState: _extends({}, ownerState, inputProps.ownerState)\n        }, {\n          ref: handleInputRef,\n          className: clsx(classes.input, inputProps.className, readOnly && 'MuiInputBase-readOnly'),\n          onBlur: handleBlur,\n          onChange: handleChange,\n          onFocus: handleFocus\n        }))\n      }), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n        startAdornment\n      })) : null]\n    }))]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.\n   * This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.\n   * @default false\n   */\n  disableInjectingGlobalStyles: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: elementTypeAcceptingRef,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the `input` is blurred.\n   *\n   * Notice that the first argument (event) might be undefined.\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onClick: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the `input` doesn't satisfy its constraints.\n   */\n  onInvalid: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyUp: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  renderSuffix: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The size of the component.\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default InputBase;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getInputUtilityClass(slot) {\n  return generateUtilityClass('MuiInput', slot);\n}\nconst inputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiInput', ['root', 'underline', 'input']));\nexport default inputClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getOutlinedInputUtilityClass(slot) {\n  return generateUtilityClass('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiOutlinedInput', ['root', 'notchedOutline', 'input']));\nexport default outlinedInputClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getFilledInputUtilityClass(slot) {\n  return generateUtilityClass('MuiFilledInput', slot);\n}\nconst filledInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiFilledInput', ['root', 'underline', 'input']));\nexport default filledInputClasses;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n  return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionKey\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"],\n  _excluded2 = [\"ref\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport { useAutocomplete, createFilterOptions } from '@mui/base';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport { styled, createUseThemeProps } from '../zero-styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nconst useThemeProps = createUseThemeProps('MuiAutocomplete');\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePortal,\n    expanded,\n    focused,\n    fullWidth,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused,\n    popupOpen,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n    inputRoot: ['inputRoot'],\n    input: ['input', inputFocused && 'inputFocused'],\n    tag: ['tag', `tagSize${capitalize(size)}`],\n    endAdornment: ['endAdornment'],\n    clearIndicator: ['clearIndicator'],\n    popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n    popper: ['popper', disablePortal && 'popperDisablePortal'],\n    paper: ['paper'],\n    listbox: ['listbox'],\n    loading: ['loading'],\n    noOptions: ['noOptions'],\n    option: ['option'],\n    groupLabel: ['groupLabel'],\n    groupUl: ['groupUl']\n  };\n  return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    const {\n      fullWidth,\n      hasClearIcon,\n      hasPopupIcon,\n      inputFocused,\n      size\n    } = ownerState;\n    return [{\n      [`& .${autocompleteClasses.tag}`]: styles.tag\n    }, {\n      [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n    }, {\n      [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n    }, {\n      [`& .${autocompleteClasses.input}`]: styles.input\n    }, {\n      [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n    }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n  }\n})({\n  [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n    visibility: 'visible'\n  },\n  /* Avoid double tap issue on iOS */\n  '@media (pointer: fine)': {\n    [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n      visibility: 'visible'\n    }\n  },\n  [`& .${autocompleteClasses.tag}`]: {\n    margin: 3,\n    maxWidth: 'calc(100% - 6px)'\n  },\n  [`& .${autocompleteClasses.inputRoot}`]: {\n    flexWrap: 'wrap',\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4\n    },\n    [`& .${autocompleteClasses.input}`]: {\n      width: 0,\n      minWidth: 30\n    }\n  },\n  [`& .${inputClasses.root}`]: {\n    paddingBottom: 1,\n    '& .MuiInput-input': {\n      padding: '4px 4px 4px 0px'\n    }\n  },\n  [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    [`& .${inputClasses.input}`]: {\n      padding: '2px 4px 3px 0'\n    }\n  },\n  [`& .${outlinedInputClasses.root}`]: {\n    padding: 9,\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${autocompleteClasses.input}`]: {\n      padding: '7.5px 4px 7.5px 5px'\n    },\n    [`& .${autocompleteClasses.endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    // Don't specify paddingRight, as it overrides the default value set when there is only\n    // one of the popup or clear icon as the specificity is equal so the latter one wins\n    paddingTop: 6,\n    paddingBottom: 6,\n    paddingLeft: 6,\n    [`& .${autocompleteClasses.input}`]: {\n      padding: '2.5px 4px 2.5px 8px'\n    }\n  },\n  [`& .${filledInputClasses.root}`]: {\n    paddingTop: 19,\n    paddingLeft: 8,\n    [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 26 + 4 + 9\n    },\n    [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n      paddingRight: 52 + 4 + 9\n    },\n    [`& .${filledInputClasses.input}`]: {\n      padding: '7px 4px'\n    },\n    [`& .${autocompleteClasses.endAdornment}`]: {\n      right: 9\n    }\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n    paddingBottom: 1,\n    [`& .${filledInputClasses.input}`]: {\n      padding: '2.5px 4px'\n    }\n  },\n  [`& .${inputBaseClasses.hiddenLabel}`]: {\n    paddingTop: 8\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n    paddingTop: 0,\n    paddingBottom: 0,\n    [`& .${autocompleteClasses.input}`]: {\n      paddingTop: 16,\n      paddingBottom: 17\n    }\n  },\n  [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n    [`& .${autocompleteClasses.input}`]: {\n      paddingTop: 8,\n      paddingBottom: 9\n    }\n  },\n  [`& .${autocompleteClasses.input}`]: {\n    flexGrow: 1,\n    textOverflow: 'ellipsis',\n    opacity: 0\n  },\n  variants: [{\n    props: {\n      fullWidth: true\n    },\n    style: {\n      width: '100%'\n    }\n  }, {\n    props: {\n      size: 'small'\n    },\n    style: {\n      [`& .${autocompleteClasses.tag}`]: {\n        margin: 2,\n        maxWidth: 'calc(100% - 4px)'\n      }\n    }\n  }, {\n    props: {\n      inputFocused: true\n    },\n    style: {\n      [`& .${autocompleteClasses.input}`]: {\n        opacity: 1\n      }\n    }\n  }]\n});\nconst AutocompleteEndAdornment = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'EndAdornment',\n  overridesResolver: (props, styles) => styles.endAdornment\n})({\n  // We use a position absolute to support wrapping tags.\n  position: 'absolute',\n  right: 0,\n  top: '50%',\n  transform: 'translate(0, -50%)'\n});\nconst AutocompleteClearIndicator = styled(IconButton, {\n  name: 'MuiAutocomplete',\n  slot: 'ClearIndicator',\n  overridesResolver: (props, styles) => styles.clearIndicator\n})({\n  marginRight: -2,\n  padding: 4,\n  visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n  name: 'MuiAutocomplete',\n  slot: 'PopupIndicator',\n  overridesResolver: ({\n    ownerState\n  }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})({\n  padding: 2,\n  marginRight: -2,\n  variants: [{\n    props: {\n      popupOpen: true\n    },\n    style: {\n      transform: 'rotate(180deg)'\n    }\n  }]\n});\nconst AutocompletePopper = styled(Popper, {\n  name: 'MuiAutocomplete',\n  slot: 'Popper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${autocompleteClasses.option}`]: styles.option\n    }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n  }\n})(({\n  theme\n}) => ({\n  zIndex: (theme.vars || theme).zIndex.modal,\n  variants: [{\n    props: {\n      disablePortal: true\n    },\n    style: {\n      position: 'absolute'\n    }\n  }]\n}));\nconst AutocompletePaper = styled(Paper, {\n  name: 'MuiAutocomplete',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})(({\n  theme\n}) => _extends({}, theme.typography.body1, {\n  overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Loading',\n  overridesResolver: (props, styles) => styles.loading\n})(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'NoOptions',\n  overridesResolver: (props, styles) => styles.noOptions\n})(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n  name: 'MuiAutocomplete',\n  slot: 'Listbox',\n  overridesResolver: (props, styles) => styles.listbox\n})(({\n  theme\n}) => ({\n  listStyle: 'none',\n  margin: 0,\n  padding: '8px 0',\n  maxHeight: '40vh',\n  overflow: 'auto',\n  position: 'relative',\n  [`& .${autocompleteClasses.option}`]: {\n    minHeight: 48,\n    display: 'flex',\n    overflow: 'hidden',\n    justifyContent: 'flex-start',\n    alignItems: 'center',\n    cursor: 'pointer',\n    paddingTop: 6,\n    boxSizing: 'border-box',\n    outline: '0',\n    WebkitTapHighlightColor: 'transparent',\n    paddingBottom: 6,\n    paddingLeft: 16,\n    paddingRight: 16,\n    [theme.breakpoints.up('sm')]: {\n      minHeight: 'auto'\n    },\n    [`&.${autocompleteClasses.focused}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.hover,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    },\n    '&[aria-disabled=\"true\"]': {\n      opacity: (theme.vars || theme).palette.action.disabledOpacity,\n      pointerEvents: 'none'\n    },\n    [`&.${autocompleteClasses.focusVisible}`]: {\n      backgroundColor: (theme.vars || theme).palette.action.focus\n    },\n    '&[aria-selected=\"true\"]': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n      [`&.${autocompleteClasses.focused}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n        // Reset on touch devices, it doesn't add specificity\n        '@media (hover: none)': {\n          backgroundColor: (theme.vars || theme).palette.action.selected\n        }\n      },\n      [`&.${autocompleteClasses.focusVisible}`]: {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n      }\n    }\n  }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n  name: 'MuiAutocomplete',\n  slot: 'GroupLabel',\n  overridesResolver: (props, styles) => styles.groupLabel\n})(({\n  theme\n}) => ({\n  backgroundColor: (theme.vars || theme).palette.background.paper,\n  top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n  name: 'MuiAutocomplete',\n  slot: 'GroupUl',\n  overridesResolver: (props, styles) => styles.groupUl\n})({\n  padding: 0,\n  [`& .${autocompleteClasses.option}`]: {\n    paddingLeft: 24\n  }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n  var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiAutocomplete'\n  });\n\n  /* eslint-disable @typescript-eslint/no-unused-vars */\n  const {\n      autoComplete = false,\n      autoHighlight = false,\n      autoSelect = false,\n      blurOnSelect = false,\n      ChipProps,\n      className,\n      clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n        fontSize: \"small\"\n      })),\n      clearOnBlur = !props.freeSolo,\n      clearOnEscape = false,\n      clearText = 'Clear',\n      closeText = 'Close',\n      componentsProps = {},\n      defaultValue = props.multiple ? [] : null,\n      disableClearable = false,\n      disableCloseOnSelect = false,\n      disabled = false,\n      disabledItemsFocusable = false,\n      disableListWrap = false,\n      disablePortal = false,\n      filterSelectedOptions = false,\n      forcePopupIcon = 'auto',\n      freeSolo = false,\n      fullWidth = false,\n      getLimitTagsText = more => `+${more}`,\n      getOptionLabel: getOptionLabelProp,\n      groupBy,\n      handleHomeEndKeys = !props.freeSolo,\n      includeInputInList = false,\n      limitTags = -1,\n      ListboxComponent = 'ul',\n      ListboxProps,\n      loading = false,\n      loadingText = 'Loading…',\n      multiple = false,\n      noOptionsText = 'No options',\n      openOnFocus = false,\n      openText = 'Open',\n      PaperComponent = Paper,\n      PopperComponent = Popper,\n      popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n      readOnly = false,\n      renderGroup: renderGroupProp,\n      renderInput,\n      renderOption: renderOptionProp,\n      renderTags,\n      selectOnFocus = !props.freeSolo,\n      size = 'medium',\n      slotProps = {}\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  /* eslint-enable @typescript-eslint/no-unused-vars */\n\n  const {\n    getRootProps,\n    getInputProps,\n    getInputLabelProps,\n    getPopupIndicatorProps,\n    getClearProps,\n    getTagProps,\n    getListboxProps,\n    getOptionProps,\n    value,\n    dirty,\n    expanded,\n    id,\n    popupOpen,\n    focused,\n    focusedTag,\n    anchorEl,\n    setAnchorEl,\n    inputValue,\n    groupedOptions\n  } = useAutocomplete(_extends({}, props, {\n    componentName: 'Autocomplete'\n  }));\n  const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n  const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n  const {\n    onMouseDown: handleInputMouseDown\n  } = getInputProps();\n  const {\n    ref: externalListboxRef\n  } = ListboxProps != null ? ListboxProps : {};\n  const _getListboxProps = getListboxProps(),\n    {\n      ref: listboxRef\n    } = _getListboxProps,\n    otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded2);\n  const combinedListboxRef = useForkRef(listboxRef, externalListboxRef);\n  const defaultGetOptionLabel = option => {\n    var _option$label;\n    return (_option$label = option.label) != null ? _option$label : option;\n  };\n  const getOptionLabel = getOptionLabelProp || defaultGetOptionLabel;\n\n  // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n  const ownerState = _extends({}, props, {\n    disablePortal,\n    expanded,\n    focused,\n    fullWidth,\n    getOptionLabel,\n    hasClearIcon,\n    hasPopupIcon,\n    inputFocused: focusedTag === -1,\n    popupOpen,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  let startAdornment;\n  if (multiple && value.length > 0) {\n    const getCustomizedTagProps = params => _extends({\n      className: classes.tag,\n      disabled\n    }, getTagProps(params));\n    if (renderTags) {\n      startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n    } else {\n      startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n        label: getOptionLabel(option),\n        size: size\n      }, getCustomizedTagProps({\n        index\n      }), ChipProps)));\n    }\n  }\n  if (limitTags > -1 && Array.isArray(startAdornment)) {\n    const more = startAdornment.length - limitTags;\n    if (!focused && more > 0) {\n      startAdornment = startAdornment.splice(0, limitTags);\n      startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n        className: classes.tag,\n        children: getLimitTagsText(more)\n      }, startAdornment.length));\n    }\n  }\n  const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n    children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n      className: classes.groupLabel,\n      ownerState: ownerState,\n      component: \"div\",\n      children: params.group\n    }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n      className: classes.groupUl,\n      ownerState: ownerState,\n      children: params.children\n    })]\n  }, params.key);\n  const renderGroup = renderGroupProp || defaultRenderGroup;\n  const defaultRenderOption = (props2, option) => {\n    // Need to clearly apply key because of https://github.com/vercel/next.js/issues/55642\n    return /*#__PURE__*/_createElement(\"li\", _extends({}, props2, {\n      key: props2.key\n    }), getOptionLabel(option));\n  };\n  const renderOption = renderOptionProp || defaultRenderOption;\n  const renderListOption = (option, index) => {\n    const optionProps = getOptionProps({\n      option,\n      index\n    });\n    return renderOption(_extends({}, optionProps, {\n      className: classes.option\n    }), option, {\n      selected: optionProps['aria-selected'],\n      index,\n      inputValue\n    }, ownerState);\n  };\n  const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n  const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n  const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n  const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n  const renderAutocompletePopperChildren = children => /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n    as: PopperComponent,\n    disablePortal: disablePortal,\n    style: {\n      width: anchorEl ? anchorEl.clientWidth : null\n    },\n    ownerState: ownerState,\n    role: \"presentation\",\n    anchorEl: anchorEl,\n    open: popupOpen\n  }, popperSlotProps, {\n    className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n    children: /*#__PURE__*/_jsx(AutocompletePaper, _extends({\n      ownerState: ownerState,\n      as: PaperComponent\n    }, paperSlotProps, {\n      className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n      children: children\n    }))\n  }));\n  let autocompletePopper = null;\n  if (!loading && groupedOptions.length > 0) {\n    autocompletePopper = renderAutocompletePopperChildren( /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n      as: ListboxComponent,\n      className: classes.listbox,\n      ownerState: ownerState\n    }, otherListboxProps, ListboxProps, {\n      ref: combinedListboxRef,\n      children: groupedOptions.map((option, index) => {\n        if (groupBy) {\n          return renderGroup({\n            key: option.key,\n            group: option.group,\n            children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n          });\n        }\n        return renderListOption(option, index);\n      })\n    })));\n  } else if (loading && groupedOptions.length === 0) {\n    autocompletePopper = renderAutocompletePopperChildren( /*#__PURE__*/_jsx(AutocompleteLoading, {\n      className: classes.loading,\n      ownerState: ownerState,\n      children: loadingText\n    }));\n  } else if (groupedOptions.length === 0 && !freeSolo && !loading) {\n    autocompletePopper = renderAutocompletePopperChildren( /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n      className: classes.noOptions,\n      ownerState: ownerState,\n      role: \"presentation\",\n      onMouseDown: event => {\n        // Prevent input blur when interacting with the \"no options\" content\n        event.preventDefault();\n      },\n      children: noOptionsText\n    }));\n  }\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n      ref: ref,\n      className: clsx(classes.root, className),\n      ownerState: ownerState\n    }, getRootProps(other), {\n      children: renderInput({\n        id,\n        disabled,\n        fullWidth: true,\n        size: size === 'small' ? 'small' : undefined,\n        InputLabelProps: getInputLabelProps(),\n        InputProps: _extends({\n          ref: setAnchorEl,\n          className: classes.inputRoot,\n          startAdornment,\n          onClick: event => {\n            if (event.target === event.currentTarget) {\n              handleInputMouseDown(event);\n            }\n          }\n        }, (hasClearIcon || hasPopupIcon) && {\n          endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n            className: classes.endAdornment,\n            ownerState: ownerState,\n            children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n              \"aria-label\": clearText,\n              title: clearText,\n              ownerState: ownerState\n            }, clearIndicatorSlotProps, {\n              className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n              children: clearIcon\n            })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n              disabled: disabled,\n              \"aria-label\": popupOpen ? closeText : openText,\n              title: popupOpen ? closeText : openText,\n              ownerState: ownerState\n            }, popupIndicatorSlotProps, {\n              className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n              children: popupIcon\n            })) : null]\n          })\n        }),\n        inputProps: _extends({\n          className: classes.input,\n          disabled,\n          readOnly\n        }, getInputProps())\n      })\n    })), anchorEl ? autocompletePopper : null]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the portion of the selected suggestion that the user hasn't typed,\n   * known as the completion string, appears inline after the input cursor in the textbox.\n   * The inline completion string is visually highlighted and has a selected state.\n   * @default false\n   */\n  autoComplete: PropTypes.bool,\n  /**\n   * If `true`, the first option is automatically highlighted.\n   * @default false\n   */\n  autoHighlight: PropTypes.bool,\n  /**\n   * If `true`, the selected option becomes the value of the input\n   * when the Autocomplete loses focus unless the user chooses\n   * a different option or changes the character string in the input.\n   *\n   * When using the `freeSolo` mode, the typed value will be the input value\n   * if the Autocomplete loses focus without highlighting an option.\n   * @default false\n   */\n  autoSelect: PropTypes.bool,\n  /**\n   * Control if the input should be blurred when an option is selected:\n   *\n   * - `false` the input is not blurred.\n   * - `true` the input is always blurred.\n   * - `touch` the input is blurred after a touch event.\n   * - `mouse` the input is blurred after a mouse event.\n   * @default false\n   */\n  blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n  /**\n   * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n   */\n  ChipProps: PropTypes.object,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The icon to display in place of the default clear icon.\n   * @default <ClearIcon fontSize=\"small\" />\n   */\n  clearIcon: PropTypes.node,\n  /**\n   * If `true`, the input's text is cleared on blur if no value is selected.\n   *\n   * Set it to `true` if you want to help the user enter a new value.\n   * Set it to `false` if you want to help the user resume their search.\n   * @default !props.freeSolo\n   */\n  clearOnBlur: PropTypes.bool,\n  /**\n   * If `true`, clear all values when the user presses escape and the popup is closed.\n   * @default false\n   */\n  clearOnEscape: PropTypes.bool,\n  /**\n   * Override the default text for the *clear* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Clear'\n   */\n  clearText: PropTypes.string,\n  /**\n   * Override the default text for the *close popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Close'\n   */\n  closeText: PropTypes.string,\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    clearIndicator: PropTypes.object,\n    paper: PropTypes.object,\n    popper: PropTypes.object,\n    popupIndicator: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   * @default props.multiple ? [] : null\n   */\n  defaultValue: chainPropTypes(PropTypes.any, props => {\n    if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n      return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n    }\n    return null;\n  }),\n  /**\n   * If `true`, the input can't be cleared.\n   * @default false\n   */\n  disableClearable: PropTypes.bool,\n  /**\n   * If `true`, the popup won't close when a value is selected.\n   * @default false\n   */\n  disableCloseOnSelect: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the list box in the popup will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * A function that determines the filtered options to be rendered on search.\n   *\n   * @default createFilterOptions()\n   * @param {Value[]} options The options to render.\n   * @param {object} state The state of the component.\n   * @returns {Value[]}\n   */\n  filterOptions: PropTypes.func,\n  /**\n   * If `true`, hide the selected options from the list box.\n   * @default false\n   */\n  filterSelectedOptions: PropTypes.bool,\n  /**\n   * Force the visibility display of the popup icon.\n   * @default 'auto'\n   */\n  forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n  /**\n   * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n   * @default false\n   */\n  freeSolo: PropTypes.bool,\n  /**\n   * If `true`, the input will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The label to display when the tags are truncated (`limitTags`).\n   *\n   * @param {number} more The number of truncated tags.\n   * @returns {ReactNode}\n   * @default (more) => `+${more}`\n   */\n  getLimitTagsText: PropTypes.func,\n  /**\n   * Used to determine the disabled state for a given option.\n   *\n   * @param {Value} option The option to test.\n   * @returns {boolean}\n   */\n  getOptionDisabled: PropTypes.func,\n  /**\n   * Used to determine the key for a given option.\n   * This can be useful when the labels of options are not unique (since labels are used as keys by default).\n   *\n   * @param {Value} option The option to get the key for.\n   * @returns {string | number}\n   */\n  getOptionKey: PropTypes.func,\n  /**\n   * Used to determine the string value for a given option.\n   * It's used to fill the input (and the list box options if `renderOption` is not provided).\n   *\n   * If used in free solo mode, it must accept both the type of the options and a string.\n   *\n   * @param {Value} option\n   * @returns {string}\n   * @default (option) => option.label ?? option\n   */\n  getOptionLabel: PropTypes.func,\n  /**\n   * If provided, the options will be grouped under the returned string.\n   * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n   *\n   * @param {Value} options The options to group.\n   * @returns {string}\n   */\n  groupBy: PropTypes.func,\n  /**\n   * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n   * It should move focus to the first option and last option, respectively.\n   * @default !props.freeSolo\n   */\n  handleHomeEndKeys: PropTypes.bool,\n  /**\n   * This prop is used to help implement the accessibility logic.\n   * If you don't provide an id it will fall back to a randomly generated one.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the highlight can move to the input.\n   * @default false\n   */\n  includeInputInList: PropTypes.bool,\n  /**\n   * The input value.\n   */\n  inputValue: PropTypes.string,\n  /**\n   * Used to determine if the option represents the given value.\n   * Uses strict equality by default.\n   * ⚠️ Both arguments need to be handled, an option can only match with one value.\n   *\n   * @param {Value} option The option to test.\n   * @param {Value} value The value to test against.\n   * @returns {boolean}\n   */\n  isOptionEqualToValue: PropTypes.func,\n  /**\n   * The maximum number of tags that will be visible when not focused.\n   * Set `-1` to disable the limit.\n   * @default -1\n   */\n  limitTags: integerPropType,\n  /**\n   * The component used to render the listbox.\n   * @default 'ul'\n   */\n  ListboxComponent: PropTypes.elementType,\n  /**\n   * Props applied to the Listbox element.\n   */\n  ListboxProps: PropTypes.object,\n  /**\n   * If `true`, the component is in a loading state.\n   * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, for example `options` are empty).\n   * @default false\n   */\n  loading: PropTypes.bool,\n  /**\n   * Text to display when in a loading state.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Loading…'\n   */\n  loadingText: PropTypes.node,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Text to display when there are no options.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'No options'\n   */\n  noOptionsText: PropTypes.node,\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {Value|Value[]} value The new value of the component.\n   * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n   * @param {string} [details]\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the highlight option changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {Value} option The highlighted option.\n   * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n   */\n  onHighlightChange: PropTypes.func,\n  /**\n   * Callback fired when the input value changes.\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   * @param {string} value The new value of the text input.\n   * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n   */\n  onInputChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * Callback fired when the popup requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {React.SyntheticEvent} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * If `true`, the popup will open on input focus.\n   * @default false\n   */\n  openOnFocus: PropTypes.bool,\n  /**\n   * Override the default text for the *open popup* icon button.\n   *\n   * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n   * @default 'Open'\n   */\n  openText: PropTypes.string,\n  /**\n   * Array of options.\n   */\n  options: PropTypes.array.isRequired,\n  /**\n   * The component used to render the body of the popup.\n   * @default Paper\n   */\n  PaperComponent: PropTypes.elementType,\n  /**\n   * The component used to position the popup.\n   * @default Popper\n   */\n  PopperComponent: PropTypes.elementType,\n  /**\n   * The icon to display in place of the default popup icon.\n   * @default <ArrowDropDownIcon />\n   */\n  popupIcon: PropTypes.node,\n  /**\n   * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n   * @default false\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * Render the group.\n   *\n   * @param {AutocompleteRenderGroupParams} params The group to render.\n   * @returns {ReactNode}\n   */\n  renderGroup: PropTypes.func,\n  /**\n   * Render the input.\n   *\n   * @param {object} params\n   * @returns {ReactNode}\n   */\n  renderInput: PropTypes.func.isRequired,\n  /**\n   * Render the option, use `getOptionLabel` by default.\n   *\n   * @param {object} props The props to apply on the li element.\n   * @param {Value} option The option to render.\n   * @param {object} state The state of each option.\n   * @param {object} ownerState The state of the Autocomplete component.\n   * @returns {ReactNode}\n   */\n  renderOption: PropTypes.func,\n  /**\n   * Render the selected value.\n   *\n   * @param {Value[]} value The `value` provided to the component.\n   * @param {function} getTagProps A tag props getter.\n   * @param {object} ownerState The state of the Autocomplete component.\n   * @returns {ReactNode}\n   */\n  renderTags: PropTypes.func,\n  /**\n   * If `true`, the input's text is selected on focus.\n   * It helps the user clear the selected value.\n   * @default !props.freeSolo\n   */\n  selectOnFocus: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n  /**\n   * The props used for each slot inside.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    clearIndicator: PropTypes.object,\n    paper: PropTypes.object,\n    popper: PropTypes.object,\n    popupIndicator: PropTypes.object\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the autocomplete.\n   *\n   * The value must have reference equality with the option in order to be selected.\n   * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n   */\n  value: chainPropTypes(PropTypes.any, props => {\n    if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n      return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n    }\n    return null;\n  })\n} : void 0;\nexport default Autocomplete;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n  entering: {\n    opacity: 1\n  },\n  entered: {\n    opacity: 1\n  }\n};\n\n/**\n * The Fade transition is used by the [Modal](/material-ui/react-modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {\n  const theme = useTheme();\n  const defaultTimeout = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = defaultTimeout,\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const enableStrictModeCompat = true;\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, children.ref, ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const transitionProps = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n    node.style.transition = theme.transitions.create('opacity', transitionProps);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    appear: appear,\n    in: inProp,\n    nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, _extends({\n        style: _extends({\n          opacity: 0,\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, styles[state], style, children.props.style),\n        ref: handleRef\n      }, childProps));\n    }\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fade.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Fade;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getBackdropUtilityClass(slot) {\n  return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"invisible\", \"open\", \"slotProps\", \"slots\", \"TransitionComponent\", \"transitionDuration\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Fade from '../Fade';\nimport { getBackdropUtilityClass } from './backdropClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    invisible\n  } = ownerState;\n  const slots = {\n    root: ['root', invisible && 'invisible']\n  };\n  return composeClasses(slots, getBackdropUtilityClass, classes);\n};\nconst BackdropRoot = styled('div', {\n  name: 'MuiBackdrop',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.invisible && styles.invisible];\n  }\n})(({\n  ownerState\n}) => _extends({\n  position: 'fixed',\n  display: 'flex',\n  alignItems: 'center',\n  justifyContent: 'center',\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0,\n  backgroundColor: 'rgba(0, 0, 0, 0.5)',\n  WebkitTapHighlightColor: 'transparent'\n}, ownerState.invisible && {\n  backgroundColor: 'transparent'\n}));\nconst Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {\n  var _slotProps$root, _ref, _slots$root;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiBackdrop'\n  });\n  const {\n      children,\n      className,\n      component = 'div',\n      components = {},\n      componentsProps = {},\n      invisible = false,\n      open,\n      slotProps = {},\n      slots = {},\n      TransitionComponent = Fade,\n      transitionDuration\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    component,\n    invisible\n  });\n  const classes = useUtilityClasses(ownerState);\n  const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    in: open,\n    timeout: transitionDuration\n  }, other, {\n    children: /*#__PURE__*/_jsx(BackdropRoot, _extends({\n      \"aria-hidden\": true\n    }, rootSlotProps, {\n      as: (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : component,\n      className: clsx(classes.root, className, rootSlotProps == null ? void 0 : rootSlotProps.className),\n      ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n      classes: classes,\n      ref: ref,\n      children: children\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * If `true`, the backdrop is invisible.\n   * It can be used when rendering a popover or a custom select component.\n   * @default false\n   */\n  invisible: PropTypes.bool,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Fade\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nexport default Backdrop;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nconst boxClasses = generateUtilityClasses('MuiBox', ['root']);\nexport default boxClasses;","'use client';\n\nimport { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '../className';\nimport { createTheme } from '../styles';\nimport THEME_ID from '../styles/identifier';\nimport boxClasses from './boxClasses';\nconst defaultTheme = createTheme();\nconst Box = createBox({\n  themeId: THEME_ID,\n  defaultTheme,\n  defaultClassName: boxClasses.root,\n  generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getButtonUtilityClass(slot) {\n  return generateUtilityClass('MuiButton', slot);\n}\nconst buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorError', 'colorInfo', 'colorWarning', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'icon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\nexport default buttonClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\nexport default ButtonGroupContext;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupButtonContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  ButtonGroupButtonContext.displayName = 'ButtonGroupButtonContext';\n}\nexport default ButtonGroupButtonContext;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"color\", \"component\", \"className\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport resolveProps from '@mui/utils/resolveProps';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport buttonClasses, { getButtonUtilityClass } from './buttonClasses';\nimport ButtonGroupContext from '../ButtonGroup/ButtonGroupContext';\nimport ButtonGroupButtonContext from '../ButtonGroup/ButtonGroupButtonContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    color,\n    disableElevation,\n    fullWidth,\n    size,\n    variant,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `${variant}${capitalize(color)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, `color${capitalize(color)}`, disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n    label: ['label'],\n    startIcon: ['icon', 'startIcon', `iconSize${capitalize(size)}`],\n    endIcon: ['icon', 'endIcon', `iconSize${capitalize(size)}`]\n  };\n  const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst commonIconStyles = ownerState => _extends({}, ownerState.size === 'small' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 18\n  }\n}, ownerState.size === 'medium' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 20\n  }\n}, ownerState.size === 'large' && {\n  '& > *:nth-of-type(1)': {\n    fontSize: 22\n  }\n});\nconst ButtonRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiButton',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color)}`], styles[`size${capitalize(ownerState.size)}`], styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _theme$palette$getCon, _theme$palette;\n  const inheritContainedBackgroundColor = theme.palette.mode === 'light' ? theme.palette.grey[300] : theme.palette.grey[800];\n  const inheritContainedHoverBackgroundColor = theme.palette.mode === 'light' ? theme.palette.grey.A100 : theme.palette.grey[700];\n  return _extends({}, theme.typography.button, {\n    minWidth: 64,\n    padding: '6px 16px',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n      duration: theme.transitions.duration.short\n    }),\n    '&:hover': _extends({\n      textDecoration: 'none',\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n      border: `1px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: 'transparent'\n      }\n    }, ownerState.variant === 'contained' && {\n      backgroundColor: theme.vars ? theme.vars.palette.Button.inheritContainedHoverBg : inheritContainedHoverBackgroundColor,\n      boxShadow: (theme.vars || theme).shadows[4],\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        boxShadow: (theme.vars || theme).shadows[2],\n        backgroundColor: (theme.vars || theme).palette.grey[300]\n      }\n    }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n      backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n      }\n    }),\n    '&:active': _extends({}, ownerState.variant === 'contained' && {\n      boxShadow: (theme.vars || theme).shadows[8]\n    }),\n    [`&.${buttonClasses.focusVisible}`]: _extends({}, ownerState.variant === 'contained' && {\n      boxShadow: (theme.vars || theme).shadows[6]\n    }),\n    [`&.${buttonClasses.disabled}`]: _extends({\n      color: (theme.vars || theme).palette.action.disabled\n    }, ownerState.variant === 'outlined' && {\n      border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n    }, ownerState.variant === 'contained' && {\n      color: (theme.vars || theme).palette.action.disabled,\n      boxShadow: (theme.vars || theme).shadows[0],\n      backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n    })\n  }, ownerState.variant === 'text' && {\n    padding: '6px 8px'\n  }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  }, ownerState.variant === 'outlined' && {\n    padding: '5px 15px',\n    border: '1px solid currentColor'\n  }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].main,\n    border: theme.vars ? `1px solid rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : `1px solid ${alpha(theme.palette[ownerState.color].main, 0.5)}`\n  }, ownerState.variant === 'contained' && {\n    color: theme.vars ?\n    // this is safe because grey does not change between default light/dark mode\n    theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n    backgroundColor: theme.vars ? theme.vars.palette.Button.inheritContainedBg : inheritContainedBackgroundColor,\n    boxShadow: (theme.vars || theme).shadows[2]\n  }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n    color: (theme.vars || theme).palette[ownerState.color].contrastText,\n    backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n  }, ownerState.color === 'inherit' && {\n    color: 'inherit',\n    borderColor: 'currentColor'\n  }, ownerState.size === 'small' && ownerState.variant === 'text' && {\n    padding: '4px 5px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'text' && {\n    padding: '8px 11px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n    padding: '3px 9px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'outlined' && {\n    padding: '7px 21px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.size === 'small' && ownerState.variant === 'contained' && {\n    padding: '4px 10px',\n    fontSize: theme.typography.pxToRem(13)\n  }, ownerState.size === 'large' && ownerState.variant === 'contained' && {\n    padding: '8px 22px',\n    fontSize: theme.typography.pxToRem(15)\n  }, ownerState.fullWidth && {\n    width: '100%'\n  });\n}, ({\n  ownerState\n}) => ownerState.disableElevation && {\n  boxShadow: 'none',\n  '&:hover': {\n    boxShadow: 'none'\n  },\n  [`&.${buttonClasses.focusVisible}`]: {\n    boxShadow: 'none'\n  },\n  '&:active': {\n    boxShadow: 'none'\n  },\n  [`&.${buttonClasses.disabled}`]: {\n    boxShadow: 'none'\n  }\n});\nconst ButtonStartIcon = styled('span', {\n  name: 'MuiButton',\n  slot: 'StartIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inherit',\n  marginRight: 8,\n  marginLeft: -4\n}, ownerState.size === 'small' && {\n  marginLeft: -2\n}, commonIconStyles(ownerState)));\nconst ButtonEndIcon = styled('span', {\n  name: 'MuiButton',\n  slot: 'EndIcon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inherit',\n  marginRight: -4,\n  marginLeft: 8\n}, ownerState.size === 'small' && {\n  marginRight: -2\n}, commonIconStyles(ownerState)));\nconst Button = /*#__PURE__*/React.forwardRef(function Button(inProps, ref) {\n  // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n  const contextProps = React.useContext(ButtonGroupContext);\n  const buttonGroupButtonContextPositionClassName = React.useContext(ButtonGroupButtonContext);\n  const resolvedProps = resolveProps(contextProps, inProps);\n  const props = useThemeProps({\n    props: resolvedProps,\n    name: 'MuiButton'\n  });\n  const {\n      children,\n      color = 'primary',\n      component = 'button',\n      className,\n      disabled = false,\n      disableElevation = false,\n      disableFocusRipple = false,\n      endIcon: endIconProp,\n      focusVisibleClassName,\n      fullWidth = false,\n      size = 'medium',\n      startIcon: startIconProp,\n      type,\n      variant = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disabled,\n    disableElevation,\n    disableFocusRipple,\n    fullWidth,\n    size,\n    type,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const startIcon = startIconProp && /*#__PURE__*/_jsx(ButtonStartIcon, {\n    className: classes.startIcon,\n    ownerState: ownerState,\n    children: startIconProp\n  });\n  const endIcon = endIconProp && /*#__PURE__*/_jsx(ButtonEndIcon, {\n    className: classes.endIcon,\n    ownerState: ownerState,\n    children: endIconProp\n  });\n  const positionClassName = buttonGroupButtonContextPositionClassName || '';\n  return /*#__PURE__*/_jsxs(ButtonRoot, _extends({\n    ownerState: ownerState,\n    className: clsx(contextProps.className, classes.root, className, positionClassName),\n    component: component,\n    disabled: disabled,\n    focusRipple: !disableFocusRipple,\n    focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes,\n    children: [startIcon, children, endIcon]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, no elevation is used.\n   * @default false\n   */\n  disableElevation: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   *\n   * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n   * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * Element placed after the children.\n   */\n  endIcon: PropTypes.node,\n  /**\n   * @ignore\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * If `true`, the button will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The URL to link to when the button is clicked.\n   * If defined, an `a` element will be used as the root node.\n   */\n  href: PropTypes.string,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense button styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n  /**\n   * Element placed before the children.\n   */\n  startIcon: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n  /**\n   * The variant to use.\n   * @default 'text'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Button;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSwitchBaseUtilityClass(slot) {\n  return generateUtilityClass('PrivateSwitchBase', slot);\n}\nconst switchBaseClasses = generateUtilityClasses('PrivateSwitchBase', ['root', 'checked', 'disabled', 'input', 'edgeStart', 'edgeEnd']);\nexport default switchBaseClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"checked\", \"checkedIcon\", \"className\", \"defaultChecked\", \"disabled\", \"disableFocusRipple\", \"edge\", \"icon\", \"id\", \"inputProps\", \"inputRef\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"readOnly\", \"required\", \"tabIndex\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useControlled from '../utils/useControlled';\nimport useFormControl from '../FormControl/useFormControl';\nimport ButtonBase from '../ButtonBase';\nimport { getSwitchBaseUtilityClass } from './switchBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    checked,\n    disabled,\n    edge\n  } = ownerState;\n  const slots = {\n    root: ['root', checked && 'checked', disabled && 'disabled', edge && `edge${capitalize(edge)}`],\n    input: ['input']\n  };\n  return composeClasses(slots, getSwitchBaseUtilityClass, classes);\n};\nconst SwitchBaseRoot = styled(ButtonBase)(({\n  ownerState\n}) => _extends({\n  padding: 9,\n  borderRadius: '50%'\n}, ownerState.edge === 'start' && {\n  marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n  marginRight: ownerState.size === 'small' ? -3 : -12\n}));\nconst SwitchBaseInput = styled('input', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  cursor: 'inherit',\n  position: 'absolute',\n  opacity: 0,\n  width: '100%',\n  height: '100%',\n  top: 0,\n  left: 0,\n  margin: 0,\n  padding: 0,\n  zIndex: 1\n});\n\n/**\n * @ignore - internal component.\n */\nconst SwitchBase = /*#__PURE__*/React.forwardRef(function SwitchBase(props, ref) {\n  const {\n      autoFocus,\n      checked: checkedProp,\n      checkedIcon,\n      className,\n      defaultChecked,\n      disabled: disabledProp,\n      disableFocusRipple = false,\n      edge = false,\n      icon,\n      id,\n      inputProps,\n      inputRef,\n      name,\n      onBlur,\n      onChange,\n      onFocus,\n      readOnly,\n      required = false,\n      tabIndex,\n      type,\n      value\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [checked, setCheckedState] = useControlled({\n    controlled: checkedProp,\n    default: Boolean(defaultChecked),\n    name: 'SwitchBase',\n    state: 'checked'\n  });\n  const muiFormControl = useFormControl();\n  const handleFocus = event => {\n    if (onFocus) {\n      onFocus(event);\n    }\n    if (muiFormControl && muiFormControl.onFocus) {\n      muiFormControl.onFocus(event);\n    }\n  };\n  const handleBlur = event => {\n    if (onBlur) {\n      onBlur(event);\n    }\n    if (muiFormControl && muiFormControl.onBlur) {\n      muiFormControl.onBlur(event);\n    }\n  };\n  const handleInputChange = event => {\n    // Workaround for https://github.com/facebook/react/issues/9023\n    if (event.nativeEvent.defaultPrevented) {\n      return;\n    }\n    const newChecked = event.target.checked;\n    setCheckedState(newChecked);\n    if (onChange) {\n      // TODO v6: remove the second argument.\n      onChange(event, newChecked);\n    }\n  };\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  const hasLabelFor = type === 'checkbox' || type === 'radio';\n  const ownerState = _extends({}, props, {\n    checked,\n    disabled,\n    disableFocusRipple,\n    edge\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(SwitchBaseRoot, _extends({\n    component: \"span\",\n    className: clsx(classes.root, className),\n    centerRipple: true,\n    focusRipple: !disableFocusRipple,\n    disabled: disabled,\n    tabIndex: null,\n    role: undefined,\n    onFocus: handleFocus,\n    onBlur: handleBlur,\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [/*#__PURE__*/_jsx(SwitchBaseInput, _extends({\n      autoFocus: autoFocus,\n      checked: checkedProp,\n      defaultChecked: defaultChecked,\n      className: classes.input,\n      disabled: disabled,\n      id: hasLabelFor ? id : undefined,\n      name: name,\n      onChange: handleInputChange,\n      readOnly: readOnly,\n      ref: inputRef,\n      required: required,\n      ownerState: ownerState,\n      tabIndex: tabIndex,\n      type: type\n    }, type === 'checkbox' && value === undefined ? {} : {\n      value\n    }, inputProps)), checked ? checkedIcon : icon]\n  }));\n});\n\n// NB: If changed, please update Checkbox, Switch and Radio\n// so that the API documentation is updated.\nprocess.env.NODE_ENV !== \"production\" ? SwitchBase.propTypes = {\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   */\n  checkedIcon: PropTypes.node.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * @ignore\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the  keyboard focus ripple is disabled.\n   * @default false\n   */\n  disableFocusRipple: PropTypes.bool,\n  /**\n   * If given, uses a negative margin to counteract the padding on one\n   * side (this is often helpful for aligning the left or right\n   * side of the icon with content above or below, without ruining the border\n   * size and shape).\n   * @default false\n   */\n  edge: PropTypes.oneOf(['end', 'start', false]),\n  /**\n   * The icon to display when the component is unchecked.\n   */\n  icon: PropTypes.node.isRequired,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /*\n   * @ignore\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   */\n  required: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.object,\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The input component prop `type`.\n   */\n  type: PropTypes.string.isRequired,\n  /**\n   * The value of the component.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default SwitchBase;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z\"\n}), 'CheckBoxOutlineBlank');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"\n}), 'CheckBox');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z\"\n}), 'IndeterminateCheckBox');","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCheckboxUtilityClass(slot) {\n  return generateUtilityClass('MuiCheckbox', slot);\n}\nconst checkboxClasses = generateUtilityClasses('MuiCheckbox', ['root', 'checked', 'disabled', 'indeterminate', 'colorPrimary', 'colorSecondary', 'sizeSmall', 'sizeMedium']);\nexport default checkboxClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"checkedIcon\", \"color\", \"icon\", \"indeterminate\", \"indeterminateIcon\", \"inputProps\", \"size\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from '../internal/SwitchBase';\nimport CheckBoxOutlineBlankIcon from '../internal/svg-icons/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '../internal/svg-icons/CheckBox';\nimport IndeterminateCheckBoxIcon from '../internal/svg-icons/IndeterminateCheckBox';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport checkboxClasses, { getCheckboxUtilityClass } from './checkboxClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    indeterminate,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', indeterminate && 'indeterminate', `color${capitalize(color)}`, `size${capitalize(size)}`]\n  };\n  const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst CheckboxRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiCheckbox',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.indeterminate && styles.indeterminate, styles[`size${capitalize(ownerState.size)}`], ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  color: (theme.vars || theme).palette.text.secondary\n}, !ownerState.disableRipple && {\n  '&:hover': {\n    backgroundColor: theme.vars ? `rgba(${ownerState.color === 'default' ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(ownerState.color === 'default' ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  }\n}, ownerState.color !== 'default' && {\n  [`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]: {\n    color: (theme.vars || theme).palette[ownerState.color].main\n  },\n  [`&.${checkboxClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  }\n}));\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(CheckBoxIcon, {});\nconst defaultIcon = /*#__PURE__*/_jsx(CheckBoxOutlineBlankIcon, {});\nconst defaultIndeterminateIcon = /*#__PURE__*/_jsx(IndeterminateCheckBoxIcon, {});\nconst Checkbox = /*#__PURE__*/React.forwardRef(function Checkbox(inProps, ref) {\n  var _icon$props$fontSize, _indeterminateIcon$pr;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiCheckbox'\n  });\n  const {\n      checkedIcon = defaultCheckedIcon,\n      color = 'primary',\n      icon: iconProp = defaultIcon,\n      indeterminate = false,\n      indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,\n      inputProps,\n      size = 'medium',\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const icon = indeterminate ? indeterminateIconProp : iconProp;\n  const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;\n  const ownerState = _extends({}, props, {\n    color,\n    indeterminate,\n    size\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(CheckboxRoot, _extends({\n    type: \"checkbox\",\n    inputProps: _extends({\n      'data-indeterminate': indeterminate\n    }, inputProps),\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(indeterminateIcon, {\n      fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size\n    }),\n    ownerState: ownerState,\n    ref: ref,\n    className: clsx(classes.root, className)\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Checkbox.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <CheckBoxIcon />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The default checked state. Use when the component is not controlled.\n   */\n  defaultChecked: PropTypes.bool,\n  /**\n   * If `true`, the component is disabled.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <CheckBoxOutlineBlankIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * If `true`, the component appears indeterminate.\n   * This does not set the native input element to indeterminate due\n   * to inconsistent behavior across browsers.\n   * However, we set a `data-indeterminate` attribute on the `input`.\n   * @default false\n   */\n  indeterminate: PropTypes.bool,\n  /**\n   * The icon to display when the component is indeterminate.\n   * @default <IndeterminateCheckBoxIcon />\n   */\n  indeterminateIcon: PropTypes.node,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense checkbox styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   * The browser uses \"on\" as the default value.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Checkbox;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n  return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"disableShrink\", \"size\", \"style\", \"thickness\", \"value\", \"variant\"];\nlet _ = t => t,\n  _t,\n  _t2,\n  _t3,\n  _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getCircularProgressUtilityClass } from './circularProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes(_t || (_t = _`\n  0% {\n    transform: rotate(0deg);\n  }\n\n  100% {\n    transform: rotate(360deg);\n  }\n`));\nconst circularDashKeyframe = keyframes(_t2 || (_t2 = _`\n  0% {\n    stroke-dasharray: 1px, 200px;\n    stroke-dashoffset: 0;\n  }\n\n  50% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -15px;\n  }\n\n  100% {\n    stroke-dasharray: 100px, 200px;\n    stroke-dashoffset: -125px;\n  }\n`));\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    color,\n    disableShrink\n  } = ownerState;\n  const slots = {\n    root: ['root', variant, `color${capitalize(color)}`],\n    svg: ['svg'],\n    circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n  };\n  return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n  name: 'MuiCircularProgress',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  display: 'inline-block'\n}, ownerState.variant === 'determinate' && {\n  transition: theme.transitions.create('transform')\n}, ownerState.color !== 'inherit' && {\n  color: (theme.vars || theme).palette[ownerState.color].main\n}), ({\n  ownerState\n}) => ownerState.variant === 'indeterminate' && css(_t3 || (_t3 = _`\n      animation: ${0} 1.4s linear infinite;\n    `), circularRotateKeyframe));\nconst CircularProgressSVG = styled('svg', {\n  name: 'MuiCircularProgress',\n  slot: 'Svg',\n  overridesResolver: (props, styles) => styles.svg\n})({\n  display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n  name: 'MuiCircularProgress',\n  slot: 'Circle',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n  }\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  stroke: 'currentColor'\n}, ownerState.variant === 'determinate' && {\n  transition: theme.transitions.create('stroke-dashoffset')\n}, ownerState.variant === 'indeterminate' && {\n  // Some default value that looks fine waiting for the animation to kicks in.\n  strokeDasharray: '80px, 200px',\n  strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n}), ({\n  ownerState\n}) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink && css(_t4 || (_t4 = _`\n      animation: ${0} 1.4s ease-in-out infinite;\n    `), circularDashKeyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiCircularProgress'\n  });\n  const {\n      className,\n      color = 'primary',\n      disableShrink = false,\n      size = 40,\n      style,\n      thickness = 3.6,\n      value = 0,\n      variant = 'indeterminate'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    disableShrink,\n    size,\n    thickness,\n    value,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const circleStyle = {};\n  const rootStyle = {};\n  const rootProps = {};\n  if (variant === 'determinate') {\n    const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n    circleStyle.strokeDasharray = circumference.toFixed(3);\n    rootProps['aria-valuenow'] = Math.round(value);\n    circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n    rootStyle.transform = 'rotate(-90deg)';\n  }\n  return /*#__PURE__*/_jsx(CircularProgressRoot, _extends({\n    className: clsx(classes.root, className),\n    style: _extends({\n      width: size,\n      height: size\n    }, rootStyle, style),\n    ownerState: ownerState,\n    ref: ref,\n    role: \"progressbar\"\n  }, rootProps, other, {\n    children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n      className: classes.svg,\n      ownerState: ownerState,\n      viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n      children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n        className: classes.circle,\n        style: circleStyle,\n        ownerState: ownerState,\n        cx: SIZE,\n        cy: SIZE,\n        r: (SIZE - thickness) / 2,\n        fill: \"none\",\n        strokeWidth: thickness\n      })\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the shrink animation is disabled.\n   * This only works if variant is `indeterminate`.\n   * @default false\n   */\n  disableShrink: chainPropTypes(PropTypes.bool, props => {\n    if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n      return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n    }\n    return null;\n  }),\n  /**\n   * The size of the component.\n   * If using a number, the pixel unit is assumed.\n   * If using a string, you need to provide the CSS unit, for example '3rem'.\n   * @default 40\n   */\n  size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The thickness of the circle.\n   * @default 3.6\n   */\n  thickness: PropTypes.number,\n  /**\n   * The value of the progress indicator for the determinate variant.\n   * Value between 0 and 100.\n   * @default 0\n   */\n  value: PropTypes.number,\n  /**\n   * The variant to use.\n   * Use indeterminate when there is no progress value.\n   * @default 'indeterminate'\n   */\n  variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getModalUtilityClass(slot) {\n  return generateUtilityClass('MuiModal', slot);\n}\nconst modalClasses = generateUtilityClasses('MuiModal', ['root', 'hidden', 'backdrop']);\nexport default modalClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"BackdropComponent\", \"BackdropProps\", \"classes\", \"className\", \"closeAfterTransition\", \"children\", \"container\", \"component\", \"components\", \"componentsProps\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"onBackdropClick\", \"onClose\", \"onTransitionEnter\", \"onTransitionExited\", \"open\", \"slotProps\", \"slots\", \"theme\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport { useSlotProps } from '@mui/base/utils';\nimport { unstable_useModal as useModal } from '@mui/base/unstable_useModal';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FocusTrap from '../Unstable_TrapFocus';\nimport Portal from '../Portal';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Backdrop from '../Backdrop';\nimport { getModalUtilityClass } from './modalClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    open,\n    exited,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', !open && exited && 'hidden'],\n    backdrop: ['backdrop']\n  };\n  return composeClasses(slots, getModalUtilityClass, classes);\n};\nconst ModalRoot = styled('div', {\n  name: 'MuiModal',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.open && ownerState.exited && styles.hidden];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  position: 'fixed',\n  zIndex: (theme.vars || theme).zIndex.modal,\n  right: 0,\n  bottom: 0,\n  top: 0,\n  left: 0\n}, !ownerState.open && ownerState.exited && {\n  visibility: 'hidden'\n}));\nconst ModalBackdrop = styled(Backdrop, {\n  name: 'MuiModal',\n  slot: 'Backdrop',\n  overridesResolver: (props, styles) => {\n    return styles.backdrop;\n  }\n})({\n  zIndex: -1\n});\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/material-ui/api/dialog/)\n * - [Drawer](/material-ui/api/drawer/)\n * - [Menu](/material-ui/api/menu/)\n * - [Popover](/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\nconst Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$backdrop, _slotProps$root, _slotProps$backdrop;\n  const props = useThemeProps({\n    name: 'MuiModal',\n    props: inProps\n  });\n  const {\n      BackdropComponent = ModalBackdrop,\n      BackdropProps,\n      className,\n      closeAfterTransition = false,\n      children,\n      container,\n      component,\n      components = {},\n      componentsProps = {},\n      disableAutoFocus = false,\n      disableEnforceFocus = false,\n      disableEscapeKeyDown = false,\n      disablePortal = false,\n      disableRestoreFocus = false,\n      disableScrollLock = false,\n      hideBackdrop = false,\n      keepMounted = false,\n      onBackdropClick,\n      open,\n      slotProps,\n      slots\n      // eslint-disable-next-line react/prop-types\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const propsWithDefaults = _extends({}, props, {\n    closeAfterTransition,\n    disableAutoFocus,\n    disableEnforceFocus,\n    disableEscapeKeyDown,\n    disablePortal,\n    disableRestoreFocus,\n    disableScrollLock,\n    hideBackdrop,\n    keepMounted\n  });\n  const {\n    getRootProps,\n    getBackdropProps,\n    getTransitionProps,\n    portalRef,\n    isTopModal,\n    exited,\n    hasTransition\n  } = useModal(_extends({}, propsWithDefaults, {\n    rootRef: ref\n  }));\n  const ownerState = _extends({}, propsWithDefaults, {\n    exited\n  });\n  const classes = useUtilityClasses(ownerState);\n  const childProps = {};\n  if (children.props.tabIndex === undefined) {\n    childProps.tabIndex = '-1';\n  }\n\n  // It's a Transition like component\n  if (hasTransition) {\n    const {\n      onEnter,\n      onExited\n    } = getTransitionProps();\n    childProps.onEnter = onEnter;\n    childProps.onExited = onExited;\n  }\n  const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : ModalRoot;\n  const BackdropSlot = (_ref2 = (_slots$backdrop = slots == null ? void 0 : slots.backdrop) != null ? _slots$backdrop : components.Backdrop) != null ? _ref2 : BackdropComponent;\n  const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n  const backdropSlotProps = (_slotProps$backdrop = slotProps == null ? void 0 : slotProps.backdrop) != null ? _slotProps$backdrop : componentsProps.backdrop;\n  const rootProps = useSlotProps({\n    elementType: RootSlot,\n    externalSlotProps: rootSlotProps,\n    externalForwardedProps: other,\n    getSlotProps: getRootProps,\n    additionalProps: {\n      ref,\n      as: component\n    },\n    ownerState,\n    className: clsx(className, rootSlotProps == null ? void 0 : rootSlotProps.className, classes == null ? void 0 : classes.root, !ownerState.open && ownerState.exited && (classes == null ? void 0 : classes.hidden))\n  });\n  const backdropProps = useSlotProps({\n    elementType: BackdropSlot,\n    externalSlotProps: backdropSlotProps,\n    additionalProps: BackdropProps,\n    getSlotProps: otherHandlers => {\n      return getBackdropProps(_extends({}, otherHandlers, {\n        onClick: e => {\n          if (onBackdropClick) {\n            onBackdropClick(e);\n          }\n          if (otherHandlers != null && otherHandlers.onClick) {\n            otherHandlers.onClick(e);\n          }\n        }\n      }));\n    },\n    className: clsx(backdropSlotProps == null ? void 0 : backdropSlotProps.className, BackdropProps == null ? void 0 : BackdropProps.className, classes == null ? void 0 : classes.backdrop),\n    ownerState\n  });\n  if (!keepMounted && !open && (!hasTransition || exited)) {\n    return null;\n  }\n  return /*#__PURE__*/_jsx(Portal, {\n    ref: portalRef,\n    container: container,\n    disablePortal: disablePortal,\n    children: /*#__PURE__*/_jsxs(RootSlot, _extends({}, rootProps, {\n      children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/_jsx(BackdropSlot, _extends({}, backdropProps)) : null, /*#__PURE__*/_jsx(FocusTrap, {\n        disableEnforceFocus: disableEnforceFocus,\n        disableAutoFocus: disableAutoFocus,\n        disableRestoreFocus: disableRestoreFocus,\n        isEnabled: isTopModal,\n        open: open,\n        children: /*#__PURE__*/React.cloneElement(children, childProps)\n      })]\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Modal.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Backdrop`](/material-ui/api/backdrop/) element.\n   * @deprecated Use `slotProps.backdrop` instead.\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * When set to true the Modal waits until a nested Transition is completed before closing.\n   * @default false\n   */\n  closeAfterTransition: PropTypes.bool,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Backdrop: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * An HTML element or function that returns one.\n   * The `container` will have the portal children appended to it.\n   *\n   * You can also provide a callback, which is called in a React layout effect.\n   * This lets you set the container from a ref, and also makes server-side rendering possible.\n   *\n   * By default, it uses the body of the top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true`, the modal will not automatically shift focus to itself when it opens, and\n   * replace it to the last focused element when it closes.\n   * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableAutoFocus: PropTypes.bool,\n  /**\n   * If `true`, the modal will not prevent focus from leaving the modal while open.\n   *\n   * Generally this should never be set to `true` as it makes the modal less\n   * accessible to assistive technologies, like screen readers.\n   * @default false\n   */\n  disableEnforceFocus: PropTypes.bool,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * The `children` will be under the DOM hierarchy of the parent component.\n   * @default false\n   */\n  disablePortal: PropTypes.bool,\n  /**\n   * If `true`, the modal will not restore focus to previously focused element once\n   * modal is hidden or unmounted.\n   * @default false\n   */\n  disableRestoreFocus: PropTypes.bool,\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: PropTypes.bool,\n  /**\n   * If `true`, the backdrop is not rendered.\n   * @default false\n   */\n  hideBackdrop: PropTypes.bool,\n  /**\n   * Always keep the children in the DOM.\n   * This prop can be useful in SEO situation or\n   * when you want to maximize the responsiveness of the Modal.\n   * @default false\n   */\n  keepMounted: PropTypes.bool,\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * A function called when a transition enters.\n   */\n  onTransitionEnter: PropTypes.func,\n  /**\n   * A function called when a transition has exited.\n   */\n  onTransitionExited: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The props used for each slot inside the Modal.\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside the Modal.\n   * Either a string to use a HTML element or a component.\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    backdrop: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Modal;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDialogUtilityClass(slot) {\n  return generateUtilityClass('MuiDialog', slot);\n}\nconst dialogClasses = generateUtilityClasses('MuiDialog', ['root', 'scrollPaper', 'scrollBody', 'container', 'paper', 'paperScrollPaper', 'paperScrollBody', 'paperWidthFalse', 'paperWidthXs', 'paperWidthSm', 'paperWidthMd', 'paperWidthLg', 'paperWidthXl', 'paperFullWidth', 'paperFullScreen']);\nexport default dialogClasses;","import * as React from 'react';\nconst DialogContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  DialogContext.displayName = 'DialogContext';\n}\nexport default DialogContext;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-describedby\", \"aria-labelledby\", \"BackdropComponent\", \"BackdropProps\", \"children\", \"className\", \"disableEscapeKeyDown\", \"fullScreen\", \"fullWidth\", \"maxWidth\", \"onBackdropClick\", \"onClose\", \"open\", \"PaperComponent\", \"PaperProps\", \"scroll\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport capitalize from '../utils/capitalize';\nimport Modal from '../Modal';\nimport Fade from '../Fade';\nimport Paper from '../Paper';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport dialogClasses, { getDialogUtilityClass } from './dialogClasses';\nimport DialogContext from './DialogContext';\nimport Backdrop from '../Backdrop';\nimport useTheme from '../styles/useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DialogBackdrop = styled(Backdrop, {\n  name: 'MuiDialog',\n  slot: 'Backdrop',\n  overrides: (props, styles) => styles.backdrop\n})({\n  // Improve scrollable dialog support.\n  zIndex: -1\n});\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    scroll,\n    maxWidth,\n    fullWidth,\n    fullScreen\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    container: ['container', `scroll${capitalize(scroll)}`],\n    paper: ['paper', `paperScroll${capitalize(scroll)}`, `paperWidth${capitalize(String(maxWidth))}`, fullWidth && 'paperFullWidth', fullScreen && 'paperFullScreen']\n  };\n  return composeClasses(slots, getDialogUtilityClass, classes);\n};\nconst DialogRoot = styled(Modal, {\n  name: 'MuiDialog',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({\n  '@media print': {\n    // Use !important to override the Modal inline-style.\n    position: 'absolute !important'\n  }\n});\nconst DialogContainer = styled('div', {\n  name: 'MuiDialog',\n  slot: 'Container',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.container, styles[`scroll${capitalize(ownerState.scroll)}`]];\n  }\n})(({\n  ownerState\n}) => _extends({\n  height: '100%',\n  '@media print': {\n    height: 'auto'\n  },\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n}, ownerState.scroll === 'paper' && {\n  display: 'flex',\n  justifyContent: 'center',\n  alignItems: 'center'\n}, ownerState.scroll === 'body' && {\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  textAlign: 'center',\n  '&::after': {\n    content: '\"\"',\n    display: 'inline-block',\n    verticalAlign: 'middle',\n    height: '100%',\n    width: '0'\n  }\n}));\nconst DialogPaper = styled(Paper, {\n  name: 'MuiDialog',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.paper, styles[`scrollPaper${capitalize(ownerState.scroll)}`], styles[`paperWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fullWidth && styles.paperFullWidth, ownerState.fullScreen && styles.paperFullScreen];\n  }\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  margin: 32,\n  position: 'relative',\n  overflowY: 'auto',\n  // Fix IE11 issue, to remove at some point.\n  '@media print': {\n    overflowY: 'visible',\n    boxShadow: 'none'\n  }\n}, ownerState.scroll === 'paper' && {\n  display: 'flex',\n  flexDirection: 'column',\n  maxHeight: 'calc(100% - 64px)'\n}, ownerState.scroll === 'body' && {\n  display: 'inline-block',\n  verticalAlign: 'middle',\n  textAlign: 'left' // 'initial' doesn't work on IE11\n}, !ownerState.maxWidth && {\n  maxWidth: 'calc(100% - 64px)'\n}, ownerState.maxWidth === 'xs' && {\n  maxWidth: theme.breakpoints.unit === 'px' ? Math.max(theme.breakpoints.values.xs, 444) : `max(${theme.breakpoints.values.xs}${theme.breakpoints.unit}, 444px)`,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    [theme.breakpoints.down(Math.max(theme.breakpoints.values.xs, 444) + 32 * 2)]: {\n      maxWidth: 'calc(100% - 64px)'\n    }\n  }\n}, ownerState.maxWidth && ownerState.maxWidth !== 'xs' && {\n  maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    [theme.breakpoints.down(theme.breakpoints.values[ownerState.maxWidth] + 32 * 2)]: {\n      maxWidth: 'calc(100% - 64px)'\n    }\n  }\n}, ownerState.fullWidth && {\n  width: 'calc(100% - 64px)'\n}, ownerState.fullScreen && {\n  margin: 0,\n  width: '100%',\n  maxWidth: '100%',\n  height: '100%',\n  maxHeight: 'none',\n  borderRadius: 0,\n  [`&.${dialogClasses.paperScrollBody}`]: {\n    margin: 0,\n    maxWidth: '100%'\n  }\n}));\n\n/**\n * Dialogs are overlaid modal paper based components with a backdrop.\n */\nconst Dialog = /*#__PURE__*/React.forwardRef(function Dialog(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiDialog'\n  });\n  const theme = useTheme();\n  const defaultTransitionDuration = {\n    enter: theme.transitions.duration.enteringScreen,\n    exit: theme.transitions.duration.leavingScreen\n  };\n  const {\n      'aria-describedby': ariaDescribedby,\n      'aria-labelledby': ariaLabelledbyProp,\n      BackdropComponent,\n      BackdropProps,\n      children,\n      className,\n      disableEscapeKeyDown = false,\n      fullScreen = false,\n      fullWidth = false,\n      maxWidth = 'sm',\n      onBackdropClick,\n      onClose,\n      open,\n      PaperComponent = Paper,\n      PaperProps = {},\n      scroll = 'paper',\n      TransitionComponent = Fade,\n      transitionDuration = defaultTransitionDuration,\n      TransitionProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disableEscapeKeyDown,\n    fullScreen,\n    fullWidth,\n    maxWidth,\n    scroll\n  });\n  const classes = useUtilityClasses(ownerState);\n  const backdropClick = React.useRef();\n  const handleMouseDown = event => {\n    // We don't want to close the dialog when clicking the dialog content.\n    // Make sure the event starts and ends on the same DOM element.\n    backdropClick.current = event.target === event.currentTarget;\n  };\n  const handleBackdropClick = event => {\n    // Ignore the events not coming from the \"backdrop\".\n    if (!backdropClick.current) {\n      return;\n    }\n    backdropClick.current = null;\n    if (onBackdropClick) {\n      onBackdropClick(event);\n    }\n    if (onClose) {\n      onClose(event, 'backdropClick');\n    }\n  };\n  const ariaLabelledby = useId(ariaLabelledbyProp);\n  const dialogContextValue = React.useMemo(() => {\n    return {\n      titleId: ariaLabelledby\n    };\n  }, [ariaLabelledby]);\n  return /*#__PURE__*/_jsx(DialogRoot, _extends({\n    className: clsx(classes.root, className),\n    closeAfterTransition: true,\n    components: {\n      Backdrop: DialogBackdrop\n    },\n    componentsProps: {\n      backdrop: _extends({\n        transitionDuration,\n        as: BackdropComponent\n      }, BackdropProps)\n    },\n    disableEscapeKeyDown: disableEscapeKeyDown,\n    onClose: onClose,\n    open: open,\n    ref: ref,\n    onClick: handleBackdropClick,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n      appear: true,\n      in: open,\n      timeout: transitionDuration,\n      role: \"presentation\"\n    }, TransitionProps, {\n      children: /*#__PURE__*/_jsx(DialogContainer, {\n        className: clsx(classes.container),\n        onMouseDown: handleMouseDown,\n        ownerState: ownerState,\n        children: /*#__PURE__*/_jsx(DialogPaper, _extends({\n          as: PaperComponent,\n          elevation: 24,\n          role: \"dialog\",\n          \"aria-describedby\": ariaDescribedby,\n          \"aria-labelledby\": ariaLabelledby\n        }, PaperProps, {\n          className: clsx(classes.paper, PaperProps.className),\n          ownerState: ownerState,\n          children: /*#__PURE__*/_jsx(DialogContext.Provider, {\n            value: dialogContextValue,\n            children: children\n          })\n        }))\n      })\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Dialog.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The id(s) of the element(s) that describe the dialog.\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * The id(s) of the element(s) that label the dialog.\n   */\n  'aria-labelledby': PropTypes.string,\n  /**\n   * A backdrop component. This prop enables custom backdrop rendering.\n   * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n   * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n   * @default styled(Backdrop, {\n   *   name: 'MuiModal',\n   *   slot: 'Backdrop',\n   *   overridesResolver: (props, styles) => {\n   *     return styles.backdrop;\n   *   },\n   * })({\n   *   zIndex: -1,\n   * })\n   */\n  BackdropComponent: PropTypes.elementType,\n  /**\n   * @ignore\n   */\n  BackdropProps: PropTypes.object,\n  /**\n   * Dialog children, usually the included sub-components.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, hitting escape will not fire the `onClose` callback.\n   * @default false\n   */\n  disableEscapeKeyDown: PropTypes.bool,\n  /**\n   * If `true`, the dialog is full-screen.\n   * @default false\n   */\n  fullScreen: PropTypes.bool,\n  /**\n   * If `true`, the dialog stretches to `maxWidth`.\n   *\n   * Notice that the dialog width grow is limited by the default margin.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * Determine the max-width of the dialog.\n   * The dialog width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'sm'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * Callback fired when the backdrop is clicked.\n   * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n   */\n  onBackdropClick: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * The component used to render the body of the dialog.\n   * @default Paper\n   */\n  PaperComponent: PropTypes.elementType,\n  /**\n   * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n   * @default {}\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * Determine the container for scrolling the dialog.\n   * @default 'paper'\n   */\n  scroll: PropTypes.oneOf(['body', 'paper']),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Fade\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   * @default {\n   *   enter: theme.transitions.duration.enteringScreen,\n   *   exit: theme.transitions.duration.leavingScreen,\n   * }\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Dialog;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n  return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"hiddenLabel\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport deepmerge from '@mui/utils/deepmerge';\nimport refType from '@mui/utils/refType';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport filledInputClasses, { getFilledInputUtilityClass } from './filledInputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst FilledInputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiFilledInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  var _palette;\n  const light = theme.palette.mode === 'light';\n  const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n  const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n  const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n  return _extends({\n    position: 'relative',\n    backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n    borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n    borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n    transition: theme.transitions.create('background-color', {\n      duration: theme.transitions.duration.shorter,\n      easing: theme.transitions.easing.easeOut\n    }),\n    '&:hover': {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n      }\n    },\n    [`&.${filledInputClasses.focused}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n    },\n    [`&.${filledInputClasses.disabled}`]: {\n      backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n    }\n  }, !ownerState.disableUnderline && {\n    '&::after': {\n      borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || 'primary']) == null ? void 0 : _palette.main}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\"',\n      position: 'absolute',\n      right: 0,\n      transform: 'scaleX(0)',\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n    [`&.${filledInputClasses.focused}:after`]: {\n      // translateX(0) is a workaround for Safari transform scale bug\n      // See https://github.com/mui/material-ui/issues/31766\n      transform: 'scaleX(1) translateX(0)'\n    },\n    [`&.${filledInputClasses.error}`]: {\n      '&::before, &::after': {\n        borderBottomColor: (theme.vars || theme).palette.error.main\n      }\n    },\n    '&::before': {\n      borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\\\\00a0\"',\n      position: 'absolute',\n      right: 0,\n      transition: theme.transitions.create('border-bottom-color', {\n        duration: theme.transitions.duration.shorter\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n    [`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]: {\n      borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n    },\n    [`&.${filledInputClasses.disabled}:before`]: {\n      borderBottomStyle: 'dotted'\n    }\n  }, ownerState.startAdornment && {\n    paddingLeft: 12\n  }, ownerState.endAdornment && {\n    paddingRight: 12\n  }, ownerState.multiline && _extends({\n    padding: '25px 12px 8px'\n  }, ownerState.size === 'small' && {\n    paddingTop: 21,\n    paddingBottom: 4\n  }, ownerState.hiddenLabel && {\n    paddingTop: 16,\n    paddingBottom: 17\n  }, ownerState.hiddenLabel && ownerState.size === 'small' && {\n    paddingTop: 8,\n    paddingBottom: 9\n  }));\n});\nconst FilledInputInput = styled(InputBaseInput, {\n  name: 'MuiFilledInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  paddingTop: 25,\n  paddingRight: 12,\n  paddingBottom: 8,\n  paddingLeft: 12\n}, !theme.vars && {\n  '&:-webkit-autofill': {\n    WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n    WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n    caretColor: theme.palette.mode === 'light' ? null : '#fff',\n    borderTopLeftRadius: 'inherit',\n    borderTopRightRadius: 'inherit'\n  }\n}, theme.vars && {\n  '&:-webkit-autofill': {\n    borderTopLeftRadius: 'inherit',\n    borderTopRightRadius: 'inherit'\n  },\n  [theme.getColorSchemeSelector('dark')]: {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: '#fff',\n      caretColor: '#fff'\n    }\n  }\n}, ownerState.size === 'small' && {\n  paddingTop: 21,\n  paddingBottom: 4\n}, ownerState.hiddenLabel && {\n  paddingTop: 16,\n  paddingBottom: 17\n}, ownerState.startAdornment && {\n  paddingLeft: 0\n}, ownerState.endAdornment && {\n  paddingRight: 0\n}, ownerState.hiddenLabel && ownerState.size === 'small' && {\n  paddingTop: 8,\n  paddingBottom: 9\n}, ownerState.multiline && {\n  paddingTop: 0,\n  paddingBottom: 0,\n  paddingLeft: 0,\n  paddingRight: 0\n}));\nconst FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiFilledInput'\n  });\n  const {\n      components = {},\n      componentsProps: componentsPropsProp,\n      fullWidth = false,\n      // declare here to prevent spreading to DOM\n      inputComponent = 'input',\n      multiline = false,\n      slotProps,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    fullWidth,\n    inputComponent,\n    multiline,\n    type\n  });\n  const classes = useUtilityClasses(props);\n  const filledInputComponentsProps = {\n    root: {\n      ownerState\n    },\n    input: {\n      ownerState\n    }\n  };\n  const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(filledInputComponentsProps, slotProps != null ? slotProps : componentsPropsProp) : filledInputComponentsProps;\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : FilledInputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : FilledInputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    componentsProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the input will not have an underline.\n   */\n  disableUnderline: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nFilledInput.muiName = 'Input';\nexport default FilledInput;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n  return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"focused\", \"fullWidth\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nimport { getFormControlUtilityClasses } from './formControlClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    margin,\n    fullWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n  };\n  return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n  name: 'MuiFormControl',\n  slot: 'Root',\n  overridesResolver: ({\n    ownerState\n  }, styles) => {\n    return _extends({}, styles.root, styles[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth);\n  }\n})(({\n  ownerState\n}) => _extends({\n  display: 'inline-flex',\n  flexDirection: 'column',\n  position: 'relative',\n  // Reset fieldset default style.\n  minWidth: 0,\n  padding: 0,\n  margin: 0,\n  border: 0,\n  verticalAlign: 'top'\n}, ownerState.margin === 'normal' && {\n  marginTop: 16,\n  marginBottom: 8\n}, ownerState.margin === 'dense' && {\n  marginTop: 8,\n  marginBottom: 4\n}, ownerState.fullWidth && {\n  width: '100%'\n}));\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n *  - FormLabel\n *  - FormHelperText\n *  - Input\n *  - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * <FormControl>\n *   <InputLabel htmlFor=\"my-input\">Email address</InputLabel>\n *   <Input id=\"my-input\" aria-describedby=\"my-helper-text\" />\n *   <FormHelperText id=\"my-helper-text\">We'll never share your email.</FormHelperText>\n * </FormControl>\n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiFormControl'\n  });\n  const {\n      children,\n      className,\n      color = 'primary',\n      component = 'div',\n      disabled = false,\n      error = false,\n      focused: visuallyFocused,\n      fullWidth = false,\n      hiddenLabel = false,\n      margin = 'none',\n      required = false,\n      size = 'medium',\n      variant = 'outlined'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    disabled,\n    error,\n    fullWidth,\n    hiddenLabel,\n    margin,\n    required,\n    size,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const [adornedStart, setAdornedStart] = React.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialAdornedStart = false;\n    if (children) {\n      React.Children.forEach(children, child => {\n        if (!isMuiElement(child, ['Input', 'Select'])) {\n          return;\n        }\n        const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n        if (input && isAdornedStart(input.props)) {\n          initialAdornedStart = true;\n        }\n      });\n    }\n    return initialAdornedStart;\n  });\n  const [filled, setFilled] = React.useState(() => {\n    // We need to iterate through the children and find the Input in order\n    // to fully support server-side rendering.\n    let initialFilled = false;\n    if (children) {\n      React.Children.forEach(children, child => {\n        if (!isMuiElement(child, ['Input', 'Select'])) {\n          return;\n        }\n        if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {\n          initialFilled = true;\n        }\n      });\n    }\n    return initialFilled;\n  });\n  const [focusedState, setFocused] = React.useState(false);\n  if (disabled && focusedState) {\n    setFocused(false);\n  }\n  const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n  let registerEffect;\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    const registeredInput = React.useRef(false);\n    registerEffect = () => {\n      if (registeredInput.current) {\n        console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n      }\n      registeredInput.current = true;\n      return () => {\n        registeredInput.current = false;\n      };\n    };\n  }\n  const childContext = React.useMemo(() => {\n    return {\n      adornedStart,\n      setAdornedStart,\n      color,\n      disabled,\n      error,\n      filled,\n      focused,\n      fullWidth,\n      hiddenLabel,\n      size,\n      onBlur: () => {\n        setFocused(false);\n      },\n      onEmpty: () => {\n        setFilled(false);\n      },\n      onFilled: () => {\n        setFilled(true);\n      },\n      onFocus: () => {\n        setFocused(true);\n      },\n      registerEffect,\n      required,\n      variant\n    };\n  }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n  return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(FormControlRoot, _extends({\n      as: component,\n      ownerState: ownerState,\n      className: clsx(classes.root, className),\n      ref: ref\n    }, other, {\n      children: children\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the label, input and helper text should be displayed in a disabled state.\n   * @default false\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the label is displayed in an error state.\n   * @default false\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the component is displayed in focused state.\n   */\n  focused: PropTypes.bool,\n  /**\n   * If `true`, the component will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * If `true`, the label is hidden.\n   * This is used to increase density for a `FilledInput`.\n   * Be sure to add `aria-label` to the `input` element.\n   * @default false\n   */\n  hiddenLabel: PropTypes.bool,\n  /**\n   * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n   * @default 'none'\n   */\n  margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n  /**\n   * If `true`, the label will indicate that the `input` is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport useTimeout from '@mui/utils/useTimeout';\nimport elementAcceptingRef from '@mui/utils/elementAcceptingRef';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n  return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n  entering: {\n    opacity: 1,\n    transform: getScale(1)\n  },\n  entered: {\n    opacity: 1,\n    transform: 'none'\n  }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n  const {\n      addEndListener,\n      appear = true,\n      children,\n      easing,\n      in: inProp,\n      onEnter,\n      onEntered,\n      onEntering,\n      onExit,\n      onExited,\n      onExiting,\n      style,\n      timeout = 'auto',\n      // eslint-disable-next-line react/prop-types\n      TransitionComponent = Transition\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const timer = useTimeout();\n  const autoTimeout = React.useRef();\n  const theme = useTheme();\n  const nodeRef = React.useRef(null);\n  const handleRef = useForkRef(nodeRef, children.ref, ref);\n  const normalizedTransitionCallback = callback => maybeIsAppearing => {\n    if (callback) {\n      const node = nodeRef.current;\n\n      // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n      if (maybeIsAppearing === undefined) {\n        callback(node);\n      } else {\n        callback(node, maybeIsAppearing);\n      }\n    }\n  };\n  const handleEntering = normalizedTransitionCallback(onEntering);\n  const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n    reflow(node); // So the animation always start from the start.\n\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'enter'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay,\n      easing: transitionTimingFunction\n    })].join(',');\n    if (onEnter) {\n      onEnter(node, isAppearing);\n    }\n  });\n  const handleEntered = normalizedTransitionCallback(onEntered);\n  const handleExiting = normalizedTransitionCallback(onExiting);\n  const handleExit = normalizedTransitionCallback(node => {\n    const {\n      duration: transitionDuration,\n      delay,\n      easing: transitionTimingFunction\n    } = getTransitionProps({\n      style,\n      timeout,\n      easing\n    }, {\n      mode: 'exit'\n    });\n    let duration;\n    if (timeout === 'auto') {\n      duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n      autoTimeout.current = duration;\n    } else {\n      duration = transitionDuration;\n    }\n    node.style.transition = [theme.transitions.create('opacity', {\n      duration,\n      delay\n    }), theme.transitions.create('transform', {\n      duration: isWebKit154 ? duration : duration * 0.666,\n      delay: isWebKit154 ? delay : delay || duration * 0.333,\n      easing: transitionTimingFunction\n    })].join(',');\n    node.style.opacity = 0;\n    node.style.transform = getScale(0.75);\n    if (onExit) {\n      onExit(node);\n    }\n  });\n  const handleExited = normalizedTransitionCallback(onExited);\n  const handleAddEndListener = next => {\n    if (timeout === 'auto') {\n      timer.start(autoTimeout.current || 0, next);\n    }\n    if (addEndListener) {\n      // Old call signature before `react-transition-group` implemented `nodeRef`\n      addEndListener(nodeRef.current, next);\n    }\n  };\n  return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n    appear: appear,\n    in: inProp,\n    nodeRef: nodeRef,\n    onEnter: handleEnter,\n    onEntered: handleEntered,\n    onEntering: handleEntering,\n    onExit: handleExit,\n    onExited: handleExited,\n    onExiting: handleExiting,\n    addEndListener: handleAddEndListener,\n    timeout: timeout === 'auto' ? null : timeout\n  }, other, {\n    children: (state, childProps) => {\n      return /*#__PURE__*/React.cloneElement(children, _extends({\n        style: _extends({\n          opacity: 0,\n          transform: getScale(0.75),\n          visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n        }, styles[state], style, children.props.style),\n        ref: handleRef\n      }, childProps));\n    }\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Add a custom transition end trigger. Called with the transitioning DOM\n   * node and a done callback. Allows for more fine grained transition end\n   * logic. Note: Timeouts are still used as a fallback if provided.\n   */\n  addEndListener: PropTypes.func,\n  /**\n   * Perform the enter transition when it first mounts if `in` is also `true`.\n   * Set this to `false` to disable this behavior.\n   * @default true\n   */\n  appear: PropTypes.bool,\n  /**\n   * A single child content element.\n   */\n  children: elementAcceptingRef.isRequired,\n  /**\n   * The transition timing function.\n   * You may specify a single easing or a object containing enter and exit values.\n   */\n  easing: PropTypes.oneOfType([PropTypes.shape({\n    enter: PropTypes.string,\n    exit: PropTypes.string\n  }), PropTypes.string]),\n  /**\n   * If `true`, the component will transition in.\n   */\n  in: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onEnter: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntered: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onEntering: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExit: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExited: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onExiting: PropTypes.func,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object,\n  /**\n   * The duration for the transition, in milliseconds.\n   * You may specify a single timeout for all transitions, or individually with an object.\n   *\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport composeClasses from '@mui/utils/composeClasses';\nimport deepmerge from '@mui/utils/deepmerge';\nimport refType from '@mui/utils/refType';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport inputClasses, { getInputUtilityClass } from './inputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disableUnderline\n  } = ownerState;\n  const slots = {\n    root: ['root', !disableUnderline && 'underline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst InputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiInput',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  const light = theme.palette.mode === 'light';\n  let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n  if (theme.vars) {\n    bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n  }\n  return _extends({\n    position: 'relative'\n  }, ownerState.formControl && {\n    'label + &': {\n      marginTop: 16\n    }\n  }, !ownerState.disableUnderline && {\n    '&::after': {\n      borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\"',\n      position: 'absolute',\n      right: 0,\n      transform: 'scaleX(0)',\n      transition: theme.transitions.create('transform', {\n        duration: theme.transitions.duration.shorter,\n        easing: theme.transitions.easing.easeOut\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n    [`&.${inputClasses.focused}:after`]: {\n      // translateX(0) is a workaround for Safari transform scale bug\n      // See https://github.com/mui/material-ui/issues/31766\n      transform: 'scaleX(1) translateX(0)'\n    },\n    [`&.${inputClasses.error}`]: {\n      '&::before, &::after': {\n        borderBottomColor: (theme.vars || theme).palette.error.main\n      }\n    },\n    '&::before': {\n      borderBottom: `1px solid ${bottomLineColor}`,\n      left: 0,\n      bottom: 0,\n      // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n      content: '\"\\\\00a0\"',\n      position: 'absolute',\n      right: 0,\n      transition: theme.transitions.create('border-bottom-color', {\n        duration: theme.transitions.duration.shorter\n      }),\n      pointerEvents: 'none' // Transparent to the hover style.\n    },\n    [`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]: {\n      borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n      // Reset on touch devices, it doesn't add specificity\n      '@media (hover: none)': {\n        borderBottom: `1px solid ${bottomLineColor}`\n      }\n    },\n    [`&.${inputClasses.disabled}:before`]: {\n      borderBottomStyle: 'dotted'\n    }\n  });\n});\nconst InputInput = styled(InputBaseInput, {\n  name: 'MuiInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})({});\nconst Input = /*#__PURE__*/React.forwardRef(function Input(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiInput'\n  });\n  const {\n      disableUnderline,\n      components = {},\n      componentsProps: componentsPropsProp,\n      fullWidth = false,\n      inputComponent = 'input',\n      multiline = false,\n      slotProps,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const ownerState = {\n    disableUnderline\n  };\n  const inputComponentsProps = {\n    root: {\n      ownerState\n    }\n  };\n  const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, inputComponentsProps) : inputComponentsProps;\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : InputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : InputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    slotProps: componentsProps,\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: classes\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `slotProps` prop.\n   * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n   *\n   * @default {}\n   */\n  componentsProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the `input` will not have an underline.\n   */\n  disableUnderline: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    input: PropTypes.object,\n    root: PropTypes.object\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nInput.muiName = 'Input';\nexport default Input;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getLinkUtilityClass(slot) {\n  return generateUtilityClass('MuiLink', slot);\n}\nconst linkClasses = generateUtilityClasses('MuiLink', ['root', 'underlineNone', 'underlineHover', 'underlineAlways', 'button', 'focusVisible']);\nexport default linkClasses;","import { getPath } from '@mui/system';\nimport { alpha } from '@mui/system/colorManipulator';\nexport const colorTransformations = {\n  primary: 'primary.main',\n  textPrimary: 'text.primary',\n  secondary: 'secondary.main',\n  textSecondary: 'text.secondary',\n  error: 'error.main'\n};\nconst transformDeprecatedColors = color => {\n  return colorTransformations[color] || color;\n};\nconst getTextDecoration = ({\n  theme,\n  ownerState\n}) => {\n  const transformedColor = transformDeprecatedColors(ownerState.color);\n  const color = getPath(theme, `palette.${transformedColor}`, false) || ownerState.color;\n  const channelColor = getPath(theme, `palette.${transformedColor}Channel`);\n  if ('vars' in theme && channelColor) {\n    return `rgba(${channelColor} / 0.4)`;\n  }\n  return alpha(color, 0.4);\n};\nexport default getTextDecoration;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"onBlur\", \"onFocus\", \"TypographyClasses\", \"underline\", \"variant\", \"sx\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useForkRef from '../utils/useForkRef';\nimport Typography from '../Typography';\nimport linkClasses, { getLinkUtilityClass } from './linkClasses';\nimport getTextDecoration, { colorTransformations } from './getTextDecoration';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    component,\n    focusVisible,\n    underline\n  } = ownerState;\n  const slots = {\n    root: ['root', `underline${capitalize(underline)}`, component === 'button' && 'button', focusVisible && 'focusVisible']\n  };\n  return composeClasses(slots, getLinkUtilityClass, classes);\n};\nconst LinkRoot = styled(Typography, {\n  name: 'MuiLink',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`underline${capitalize(ownerState.underline)}`], ownerState.component === 'button' && styles.button];\n  }\n})(({\n  theme,\n  ownerState\n}) => {\n  return _extends({}, ownerState.underline === 'none' && {\n    textDecoration: 'none'\n  }, ownerState.underline === 'hover' && {\n    textDecoration: 'none',\n    '&:hover': {\n      textDecoration: 'underline'\n    }\n  }, ownerState.underline === 'always' && _extends({\n    textDecoration: 'underline'\n  }, ownerState.color !== 'inherit' && {\n    textDecorationColor: getTextDecoration({\n      theme,\n      ownerState\n    })\n  }, {\n    '&:hover': {\n      textDecorationColor: 'inherit'\n    }\n  }), ownerState.component === 'button' && {\n    position: 'relative',\n    WebkitTapHighlightColor: 'transparent',\n    backgroundColor: 'transparent',\n    // Reset default value\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n    border: 0,\n    margin: 0,\n    // Remove the margin in Safari\n    borderRadius: 0,\n    padding: 0,\n    // Remove the padding in Firefox\n    cursor: 'pointer',\n    userSelect: 'none',\n    verticalAlign: 'middle',\n    MozAppearance: 'none',\n    // Reset\n    WebkitAppearance: 'none',\n    // Reset\n    '&::-moz-focus-inner': {\n      borderStyle: 'none' // Remove Firefox dotted outline.\n    },\n    [`&.${linkClasses.focusVisible}`]: {\n      outline: 'auto'\n    }\n  });\n});\nconst Link = /*#__PURE__*/React.forwardRef(function Link(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiLink'\n  });\n  const {\n      className,\n      color = 'primary',\n      component = 'a',\n      onBlur,\n      onFocus,\n      TypographyClasses,\n      underline = 'always',\n      variant = 'inherit',\n      sx\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    isFocusVisibleRef,\n    onBlur: handleBlurVisible,\n    onFocus: handleFocusVisible,\n    ref: focusVisibleRef\n  } = useIsFocusVisible();\n  const [focusVisible, setFocusVisible] = React.useState(false);\n  const handlerRef = useForkRef(ref, focusVisibleRef);\n  const handleBlur = event => {\n    handleBlurVisible(event);\n    if (isFocusVisibleRef.current === false) {\n      setFocusVisible(false);\n    }\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n  const handleFocus = event => {\n    handleFocusVisible(event);\n    if (isFocusVisibleRef.current === true) {\n      setFocusVisible(true);\n    }\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n  const ownerState = _extends({}, props, {\n    color,\n    component,\n    focusVisible,\n    underline,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(LinkRoot, _extends({\n    color: color,\n    className: clsx(classes.root, className),\n    classes: TypographyClasses,\n    component: component,\n    onBlur: handleBlur,\n    onFocus: handleFocus,\n    ref: handlerRef,\n    ownerState: ownerState,\n    variant: variant,\n    sx: [...(!Object.keys(colorTransformations).includes(color) ? [{\n      color\n    }] : []), ...(Array.isArray(sx) ? sx : [sx])]\n  }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the link.\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.any,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * `classes` prop applied to the [`Typography`](/material-ui/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n  /**\n   * Controls when the link should have an underline.\n   * @default 'always'\n   */\n  underline: PropTypes.oneOf(['always', 'hover', 'none']),\n  /**\n   * Applies the theme typography styles.\n   * @default 'inherit'\n   */\n  variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string])\n} : void 0;\nexport default Link;","'use client';\n\nimport * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n  ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListUtilityClass(slot) {\n  return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from './ListContext';\nimport { getListUtilityClass } from './listClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    disablePadding,\n    dense,\n    subheader\n  } = ownerState;\n  const slots = {\n    root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n  };\n  return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n  name: 'MuiList',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n  }\n})(({\n  ownerState\n}) => _extends({\n  listStyle: 'none',\n  margin: 0,\n  padding: 0,\n  position: 'relative'\n}, !ownerState.disablePadding && {\n  paddingTop: 8,\n  paddingBottom: 8\n}, ownerState.subheader && {\n  paddingTop: 0\n}));\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiList'\n  });\n  const {\n      children,\n      className,\n      component = 'ul',\n      dense = false,\n      disablePadding = false,\n      subheader\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const context = React.useMemo(() => ({\n    dense\n  }), [dense]);\n  const ownerState = _extends({}, props, {\n    component,\n    dense,\n    disablePadding\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: context,\n    children: /*#__PURE__*/_jsxs(ListRoot, _extends({\n      as: component,\n      className: clsx(classes.root, className),\n      ref: ref,\n      ownerState: ownerState\n    }, other, {\n      children: [subheader, children]\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n   * the list and list items.\n   * The prop is available to descendant components as the `dense` context.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * If `true`, vertical padding is removed from the list.\n   * @default false\n   */\n  disablePadding: PropTypes.bool,\n  /**\n   * The content of the subheader, normally `ListSubheader`.\n   */\n  subheader: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemIconUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListItemTextUtilityClass(slot) {\n  return generateUtilityClass('MuiListItemText', slot);\n}\nconst listItemTextClasses = generateUtilityClasses('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\nexport default listItemTextClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"disableTypography\", \"inset\", \"primary\", \"primaryTypographyProps\", \"secondary\", \"secondaryTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport Typography from '../Typography';\nimport ListContext from '../List/ListContext';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport listItemTextClasses, { getListItemTextUtilityClass } from './listItemTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    inset,\n    primary,\n    secondary,\n    dense\n  } = ownerState;\n  const slots = {\n    root: ['root', inset && 'inset', dense && 'dense', primary && secondary && 'multiline'],\n    primary: ['primary'],\n    secondary: ['secondary']\n  };\n  return composeClasses(slots, getListItemTextUtilityClass, classes);\n};\nconst ListItemTextRoot = styled('div', {\n  name: 'MuiListItemText',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [{\n      [`& .${listItemTextClasses.primary}`]: styles.primary\n    }, {\n      [`& .${listItemTextClasses.secondary}`]: styles.secondary\n    }, styles.root, ownerState.inset && styles.inset, ownerState.primary && ownerState.secondary && styles.multiline, ownerState.dense && styles.dense];\n  }\n})(({\n  ownerState\n}) => _extends({\n  flex: '1 1 auto',\n  minWidth: 0,\n  marginTop: 4,\n  marginBottom: 4\n}, ownerState.primary && ownerState.secondary && {\n  marginTop: 6,\n  marginBottom: 6\n}, ownerState.inset && {\n  paddingLeft: 56\n}));\nconst ListItemText = /*#__PURE__*/React.forwardRef(function ListItemText(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiListItemText'\n  });\n  const {\n      children,\n      className,\n      disableTypography = false,\n      inset = false,\n      primary: primaryProp,\n      primaryTypographyProps,\n      secondary: secondaryProp,\n      secondaryTypographyProps\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const {\n    dense\n  } = React.useContext(ListContext);\n  let primary = primaryProp != null ? primaryProp : children;\n  let secondary = secondaryProp;\n  const ownerState = _extends({}, props, {\n    disableTypography,\n    inset,\n    primary: !!primary,\n    secondary: !!secondary,\n    dense\n  });\n  const classes = useUtilityClasses(ownerState);\n  if (primary != null && primary.type !== Typography && !disableTypography) {\n    primary = /*#__PURE__*/_jsx(Typography, _extends({\n      variant: dense ? 'body2' : 'body1',\n      className: classes.primary,\n      component: primaryTypographyProps != null && primaryTypographyProps.variant ? undefined : 'span',\n      display: \"block\"\n    }, primaryTypographyProps, {\n      children: primary\n    }));\n  }\n  if (secondary != null && secondary.type !== Typography && !disableTypography) {\n    secondary = /*#__PURE__*/_jsx(Typography, _extends({\n      variant: \"body2\",\n      className: classes.secondary,\n      color: \"text.secondary\",\n      display: \"block\"\n    }, secondaryTypographyProps, {\n      children: secondary\n    }));\n  }\n  return /*#__PURE__*/_jsxs(ListItemTextRoot, _extends({\n    className: clsx(classes.root, className),\n    ownerState: ownerState,\n    ref: ref\n  }, other, {\n    children: [primary, secondary]\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ListItemText.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * Alias for the `primary` prop.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the children won't be wrapped by a Typography component.\n   * This can be useful to render an alternative Typography variant by wrapping\n   * the `children` (or `primary`) text, and optional `secondary` text\n   * with the Typography component.\n   * @default false\n   */\n  disableTypography: PropTypes.bool,\n  /**\n   * If `true`, the children are indented.\n   * This should be used if there is no left avatar or left icon.\n   * @default false\n   */\n  inset: PropTypes.bool,\n  /**\n   * The main content element.\n   */\n  primary: PropTypes.node,\n  /**\n   * These props will be forwarded to the primary typography component\n   * (as long as disableTypography is not `true`).\n   */\n  primaryTypographyProps: PropTypes.object,\n  /**\n   * The secondary content element.\n   */\n  secondary: PropTypes.node,\n  /**\n   * These props will be forwarded to the secondary typography component\n   * (as long as disableTypography is not `true`).\n   */\n  secondaryTypographyProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListItemText;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n  if (list === item) {\n    return disableListWrap ? list.firstChild : list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n  if (textCriteria === undefined) {\n    return true;\n  }\n  let text = nextFocus.innerText;\n  if (text === undefined) {\n    // jsdom doesn't support innerText\n    text = nextFocus.textContent;\n  }\n  text = text.trim().toLowerCase();\n  if (text.length === 0) {\n    return false;\n  }\n  if (textCriteria.repeating) {\n    return text[0] === textCriteria.keys[0];\n  }\n  return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return false;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n    if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n      // Move to the next element.\n      nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n    } else {\n      nextFocus.focus();\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n  const {\n      // private\n      // eslint-disable-next-line react/prop-types\n      actions,\n      autoFocus = false,\n      autoFocusItem = false,\n      children,\n      className,\n      disabledItemsFocusable = false,\n      disableListWrap = false,\n      onKeyDown,\n      variant = 'selectedMenu'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const listRef = React.useRef(null);\n  const textCriteriaRef = React.useRef({\n    keys: [],\n    repeating: true,\n    previousKeyMatched: true,\n    lastTime: null\n  });\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      listRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useImperativeHandle(actions, () => ({\n    adjustStyleForScrollbar: (containerElement, {\n      direction\n    }) => {\n      // Let's ignore that piece of logic if users are already overriding the width\n      // of the menu.\n      const noExplicitWidth = !listRef.current.style.width;\n      if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n        const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;\n        listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n        listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n      }\n      return listRef.current;\n    }\n  }), []);\n  const handleKeyDown = event => {\n    const list = listRef.current;\n    const key = event.key;\n    /**\n     * @type {Element} - will always be defined since we are in a keydown handler\n     * attached to an element. A keydown event is either dispatched to the activeElement\n     * or document.body or document.documentElement. Only the first case will\n     * trigger this specific handler.\n     */\n    const currentFocus = ownerDocument(list).activeElement;\n    if (key === 'ArrowDown') {\n      // Prevent scroll of the page\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'ArrowUp') {\n      event.preventDefault();\n      moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key === 'Home') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n    } else if (key === 'End') {\n      event.preventDefault();\n      moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n    } else if (key.length === 1) {\n      const criteria = textCriteriaRef.current;\n      const lowerKey = key.toLowerCase();\n      const currTime = performance.now();\n      if (criteria.keys.length > 0) {\n        // Reset\n        if (currTime - criteria.lastTime > 500) {\n          criteria.keys = [];\n          criteria.repeating = true;\n          criteria.previousKeyMatched = true;\n        } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n          criteria.repeating = false;\n        }\n      }\n      criteria.lastTime = currTime;\n      criteria.keys.push(lowerKey);\n      const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n      if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n        event.preventDefault();\n      } else {\n        criteria.previousKeyMatched = false;\n      }\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleRef = useForkRef(listRef, ref);\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  React.Children.forEach(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      if (activeItemIndex === index) {\n        activeItemIndex += 1;\n        if (activeItemIndex >= children.length) {\n          // there are no focusable items within the list.\n          activeItemIndex = -1;\n        }\n      }\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n    if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n      activeItemIndex += 1;\n      if (activeItemIndex >= children.length) {\n        // there are no focusable items within the list.\n        activeItemIndex = -1;\n      }\n    }\n  });\n  const items = React.Children.map(children, (child, index) => {\n    if (index === activeItemIndex) {\n      const newChildProps = {};\n      if (autoFocusItem) {\n        newChildProps.autoFocus = true;\n      }\n      if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n        newChildProps.tabIndex = 0;\n      }\n      return /*#__PURE__*/React.cloneElement(child, newChildProps);\n    }\n    return child;\n  });\n  return /*#__PURE__*/_jsx(List, _extends({\n    role: \"menu\",\n    ref: handleRef,\n    className: className,\n    onKeyDown: handleKeyDown,\n    tabIndex: autoFocus ? 0 : -1\n  }, other, {\n    children: items\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n   * if `variant=\"selectedMenu\"`.\n   * @default false\n   */\n  autoFocusItem: PropTypes.bool,\n  /**\n   * MenuList contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the menu items will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n   * and the vertical alignment relative to the anchor element.\n   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getPopoverUtilityClass(slot) {\n  return generateUtilityClass('MuiPopover', slot);\n}\nconst popoverClasses = generateUtilityClasses('MuiPopover', ['root', 'paper']);\nexport default popoverClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n  _excluded2 = [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"className\", \"container\", \"elevation\", \"marginThreshold\", \"open\", \"PaperProps\", \"slots\", \"slotProps\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\", \"disableScrollLock\"],\n  _excluded3 = [\"slotProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { useSlotProps, isHostComponent } from '@mui/base/utils';\nimport composeClasses from '@mui/utils/composeClasses';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport refType from '@mui/utils/refType';\nimport elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport debounce from '../utils/debounce';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport useForkRef from '../utils/useForkRef';\nimport Grow from '../Grow';\nimport Modal from '../Modal';\nimport PaperBase from '../Paper';\nimport { getPopoverUtilityClass } from './popoverClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getOffsetTop(rect, vertical) {\n  let offset = 0;\n  if (typeof vertical === 'number') {\n    offset = vertical;\n  } else if (vertical === 'center') {\n    offset = rect.height / 2;\n  } else if (vertical === 'bottom') {\n    offset = rect.height;\n  }\n  return offset;\n}\nexport function getOffsetLeft(rect, horizontal) {\n  let offset = 0;\n  if (typeof horizontal === 'number') {\n    offset = horizontal;\n  } else if (horizontal === 'center') {\n    offset = rect.width / 2;\n  } else if (horizontal === 'right') {\n    offset = rect.width;\n  }\n  return offset;\n}\nfunction getTransformOriginValue(transformOrigin) {\n  return [transformOrigin.horizontal, transformOrigin.vertical].map(n => typeof n === 'number' ? `${n}px` : n).join(' ');\n}\nfunction resolveAnchorEl(anchorEl) {\n  return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper']\n  };\n  return composeClasses(slots, getPopoverUtilityClass, classes);\n};\nexport const PopoverRoot = styled(Modal, {\n  name: 'MuiPopover',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nexport const PopoverPaper = styled(PaperBase, {\n  name: 'MuiPopover',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  position: 'absolute',\n  overflowY: 'auto',\n  overflowX: 'hidden',\n  // So we see the popover when it's empty.\n  // It's most likely on issue on userland.\n  minWidth: 16,\n  minHeight: 16,\n  maxWidth: 'calc(100% - 32px)',\n  maxHeight: 'calc(100% - 32px)',\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Popover = /*#__PURE__*/React.forwardRef(function Popover(inProps, ref) {\n  var _slotProps$paper, _slots$root, _slots$paper;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiPopover'\n  });\n  const {\n      action,\n      anchorEl,\n      anchorOrigin = {\n        vertical: 'top',\n        horizontal: 'left'\n      },\n      anchorPosition,\n      anchorReference = 'anchorEl',\n      children,\n      className,\n      container: containerProp,\n      elevation = 8,\n      marginThreshold = 16,\n      open,\n      PaperProps: PaperPropsProp = {},\n      slots,\n      slotProps,\n      transformOrigin = {\n        vertical: 'top',\n        horizontal: 'left'\n      },\n      TransitionComponent = Grow,\n      transitionDuration: transitionDurationProp = 'auto',\n      TransitionProps: {\n        onEntering\n      } = {},\n      disableScrollLock = false\n    } = props,\n    TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const externalPaperSlotProps = (_slotProps$paper = slotProps == null ? void 0 : slotProps.paper) != null ? _slotProps$paper : PaperPropsProp;\n  const paperRef = React.useRef();\n  const handlePaperRef = useForkRef(paperRef, externalPaperSlotProps.ref);\n  const ownerState = _extends({}, props, {\n    anchorOrigin,\n    anchorReference,\n    elevation,\n    marginThreshold,\n    externalPaperSlotProps,\n    transformOrigin,\n    TransitionComponent,\n    transitionDuration: transitionDurationProp,\n    TransitionProps\n  });\n  const classes = useUtilityClasses(ownerState);\n\n  // Returns the top/left offset of the position\n  // to attach to on the anchor element (or body if none is provided)\n  const getAnchorOffset = React.useCallback(() => {\n    if (anchorReference === 'anchorPosition') {\n      if (process.env.NODE_ENV !== 'production') {\n        if (!anchorPosition) {\n          console.error('MUI: You need to provide a `anchorPosition` prop when using ' + '<Popover anchorReference=\"anchorPosition\" />.');\n        }\n      }\n      return anchorPosition;\n    }\n    const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n\n    // If an anchor element wasn't provided, just use the parent body element of this Popover\n    const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;\n    const anchorRect = anchorElement.getBoundingClientRect();\n    if (process.env.NODE_ENV !== 'production') {\n      const box = anchorElement.getBoundingClientRect();\n      if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n        console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n      }\n    }\n    return {\n      top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),\n      left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n    };\n  }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);\n\n  // Returns the base transform origin using the element\n  const getTransformOrigin = React.useCallback(elemRect => {\n    return {\n      vertical: getOffsetTop(elemRect, transformOrigin.vertical),\n      horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n    };\n  }, [transformOrigin.horizontal, transformOrigin.vertical]);\n  const getPositioningStyle = React.useCallback(element => {\n    const elemRect = {\n      width: element.offsetWidth,\n      height: element.offsetHeight\n    };\n\n    // Get the transform origin point on the element itself\n    const elemTransformOrigin = getTransformOrigin(elemRect);\n    if (anchorReference === 'none') {\n      return {\n        top: null,\n        left: null,\n        transformOrigin: getTransformOriginValue(elemTransformOrigin)\n      };\n    }\n\n    // Get the offset of the anchoring element\n    const anchorOffset = getAnchorOffset();\n\n    // Calculate element positioning\n    let top = anchorOffset.top - elemTransformOrigin.vertical;\n    let left = anchorOffset.left - elemTransformOrigin.horizontal;\n    const bottom = top + elemRect.height;\n    const right = left + elemRect.width;\n\n    // Use the parent window of the anchorEl if provided\n    const containerWindow = ownerWindow(resolveAnchorEl(anchorEl));\n\n    // Window thresholds taking required margin into account\n    const heightThreshold = containerWindow.innerHeight - marginThreshold;\n    const widthThreshold = containerWindow.innerWidth - marginThreshold;\n\n    // Check if the vertical axis needs shifting\n    if (marginThreshold !== null && top < marginThreshold) {\n      const diff = top - marginThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    } else if (marginThreshold !== null && bottom > heightThreshold) {\n      const diff = bottom - heightThreshold;\n      top -= diff;\n      elemTransformOrigin.vertical += diff;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n        console.error(['MUI: The popover component is too tall.', `Some part of it can not be seen on the screen (${elemRect.height - heightThreshold}px).`, 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n      }\n    }\n\n    // Check if the horizontal axis needs shifting\n    if (marginThreshold !== null && left < marginThreshold) {\n      const diff = left - marginThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    } else if (right > widthThreshold) {\n      const diff = right - widthThreshold;\n      left -= diff;\n      elemTransformOrigin.horizontal += diff;\n    }\n    return {\n      top: `${Math.round(top)}px`,\n      left: `${Math.round(left)}px`,\n      transformOrigin: getTransformOriginValue(elemTransformOrigin)\n    };\n  }, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);\n  const [isPositioned, setIsPositioned] = React.useState(open);\n  const setPositioningStyles = React.useCallback(() => {\n    const element = paperRef.current;\n    if (!element) {\n      return;\n    }\n    const positioning = getPositioningStyle(element);\n    if (positioning.top !== null) {\n      element.style.top = positioning.top;\n    }\n    if (positioning.left !== null) {\n      element.style.left = positioning.left;\n    }\n    element.style.transformOrigin = positioning.transformOrigin;\n    setIsPositioned(true);\n  }, [getPositioningStyle]);\n  React.useEffect(() => {\n    if (disableScrollLock) {\n      window.addEventListener('scroll', setPositioningStyles);\n    }\n    return () => window.removeEventListener('scroll', setPositioningStyles);\n  }, [anchorEl, disableScrollLock, setPositioningStyles]);\n  const handleEntering = (element, isAppearing) => {\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n    setPositioningStyles();\n  };\n  const handleExited = () => {\n    setIsPositioned(false);\n  };\n  React.useEffect(() => {\n    if (open) {\n      setPositioningStyles();\n    }\n  });\n  React.useImperativeHandle(action, () => open ? {\n    updatePosition: () => {\n      setPositioningStyles();\n    }\n  } : null, [open, setPositioningStyles]);\n  React.useEffect(() => {\n    if (!open) {\n      return undefined;\n    }\n    const handleResize = debounce(() => {\n      setPositioningStyles();\n    });\n    const containerWindow = ownerWindow(anchorEl);\n    containerWindow.addEventListener('resize', handleResize);\n    return () => {\n      handleResize.clear();\n      containerWindow.removeEventListener('resize', handleResize);\n    };\n  }, [anchorEl, open, setPositioningStyles]);\n  let transitionDuration = transitionDurationProp;\n  if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n    transitionDuration = undefined;\n  }\n\n  // If the container prop is provided, use that\n  // If the anchorEl prop is provided, use its parent body element as the container\n  // If neither are provided let the Modal take care of choosing the container\n  const container = containerProp || (anchorEl ? ownerDocument(resolveAnchorEl(anchorEl)).body : undefined);\n  const RootSlot = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : PopoverRoot;\n  const PaperSlot = (_slots$paper = slots == null ? void 0 : slots.paper) != null ? _slots$paper : PopoverPaper;\n  const paperProps = useSlotProps({\n    elementType: PaperSlot,\n    externalSlotProps: _extends({}, externalPaperSlotProps, {\n      style: isPositioned ? externalPaperSlotProps.style : _extends({}, externalPaperSlotProps.style, {\n        opacity: 0\n      })\n    }),\n    additionalProps: {\n      elevation,\n      ref: handlePaperRef\n    },\n    ownerState,\n    className: clsx(classes.paper, externalPaperSlotProps == null ? void 0 : externalPaperSlotProps.className)\n  });\n  const _useSlotProps = useSlotProps({\n      elementType: RootSlot,\n      externalSlotProps: (slotProps == null ? void 0 : slotProps.root) || {},\n      externalForwardedProps: other,\n      additionalProps: {\n        ref,\n        slotProps: {\n          backdrop: {\n            invisible: true\n          }\n        },\n        container,\n        open\n      },\n      ownerState,\n      className: clsx(classes.root, className)\n    }),\n    {\n      slotProps: rootSlotPropsProp\n    } = _useSlotProps,\n    rootProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded3);\n  return /*#__PURE__*/_jsx(RootSlot, _extends({}, rootProps, !isHostComponent(RootSlot) && {\n    slotProps: rootSlotPropsProp,\n    disableScrollLock\n  }, {\n    children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n      appear: true,\n      in: open,\n      onEntering: handleEntering,\n      onExited: handleExited,\n      timeout: transitionDuration\n    }, TransitionProps, {\n      children: /*#__PURE__*/_jsx(PaperSlot, _extends({}, paperProps, {\n        children: children\n      }))\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popover.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * A ref for imperative actions.\n   * It currently only supports updatePosition() action.\n   */\n  action: refType,\n  /**\n   * An HTML element, [PopoverVirtualElement](/material-ui/react-popover/#virtual-element),\n   * or a function that returns either.\n   * It's used to set the position of the popover.\n   */\n  anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n    if (props.open && (!props.anchorReference || props.anchorReference === 'anchorEl')) {\n      const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n      if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n        const box = resolvedAnchorEl.getBoundingClientRect();\n        if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n          return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n        }\n      } else {\n        return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', `It should be an Element or PopoverVirtualElement instance but it's \\`${resolvedAnchorEl}\\` instead.`].join('\\n'));\n      }\n    }\n    return null;\n  }),\n  /**\n   * This is the point on the anchor where the popover's\n   * `anchorEl` will attach to. This is not used when the\n   * anchorReference is 'anchorPosition'.\n   *\n   * Options:\n   * vertical: [top, center, bottom];\n   * horizontal: [left, center, right].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  anchorOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n    vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n  }),\n  /**\n   * This is the position that may be used to set the position of the popover.\n   * The coordinates are relative to the application's client area.\n   */\n  anchorPosition: PropTypes.shape({\n    left: PropTypes.number.isRequired,\n    top: PropTypes.number.isRequired\n  }),\n  /**\n   * This determines which anchor prop to refer to when setting\n   * the position of the popover.\n   * @default 'anchorEl'\n   */\n  anchorReference: PropTypes.oneOf(['anchorEl', 'anchorPosition', 'none']),\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * An HTML element, component instance, or function that returns either.\n   * The `container` will passed to the Modal component.\n   *\n   * By default, it uses the body of the anchorEl's top-level document object,\n   * so it's simply `document.body` most of the time.\n   */\n  container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * Disable the scroll lock behavior.\n   * @default false\n   */\n  disableScrollLock: PropTypes.bool,\n  /**\n   * The elevation of the popover.\n   * @default 8\n   */\n  elevation: integerPropType,\n  /**\n   * Specifies how close to the edge of the window the popover can appear.\n   * If null, the popover will not be constrained by the window.\n   * @default 16\n   */\n  marginThreshold: PropTypes.number,\n  /**\n   * Callback fired when the component requests to be closed.\n   * The `reason` parameter can optionally be used to control the response to `onClose`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n   *\n   * This prop is an alias for `slotProps.paper` and will be overriden by it if both are used.\n   * @deprecated Use `slotProps.paper` instead.\n   *\n   * @default {}\n   */\n  PaperProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n    component: elementTypeAcceptingRef\n  }),\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    paper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    paper: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * This is the point on the popover which\n   * will attach to the anchor's origin.\n   *\n   * Options:\n   * vertical: [top, center, bottom, x(px)];\n   * horizontal: [left, center, right, x(px)].\n   * @default {\n   *   vertical: 'top',\n   *   horizontal: 'left',\n   * }\n   */\n  transformOrigin: PropTypes.shape({\n    horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n    vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n  }),\n  /**\n   * The component used for the transition.\n   * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n   * @default Grow\n   */\n  TransitionComponent: PropTypes.elementType,\n  /**\n   * Set to 'auto' to automatically calculate transition time based on height.\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object\n} : void 0;\nexport default Popover;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getMenuUtilityClass(slot) {\n  return generateUtilityClass('MuiMenu', slot);\n}\nconst menuClasses = generateUtilityClasses('MuiMenu', ['root', 'paper', 'list']);\nexport default menuClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n  _excluded2 = [\"autoFocus\", \"children\", \"className\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"TransitionProps\", \"variant\", \"slots\", \"slotProps\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useSlotProps } from '@mui/base/utils';\nimport HTMLElementType from '@mui/utils/HTMLElementType';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport MenuList from '../MenuList';\nimport Popover, { PopoverPaper } from '../Popover';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getMenuUtilityClass } from './menuClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RTL_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'right'\n};\nconst LTR_ORIGIN = {\n  vertical: 'top',\n  horizontal: 'left'\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    paper: ['paper'],\n    list: ['list']\n  };\n  return composeClasses(slots, getMenuUtilityClass, classes);\n};\nconst MenuRoot = styled(Popover, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiMenu',\n  slot: 'Root',\n  overridesResolver: (props, styles) => styles.root\n})({});\nexport const MenuPaper = styled(PopoverPaper, {\n  name: 'MuiMenu',\n  slot: 'Paper',\n  overridesResolver: (props, styles) => styles.paper\n})({\n  // specZ: The maximum height of a simple menu should be one or more rows less than the view\n  // height. This ensures a tappable area outside of the simple menu with which to dismiss\n  // the menu.\n  maxHeight: 'calc(100% - 96px)',\n  // Add iOS momentum scrolling for iOS < 13.0\n  WebkitOverflowScrolling: 'touch'\n});\nconst MenuMenuList = styled(MenuList, {\n  name: 'MuiMenu',\n  slot: 'List',\n  overridesResolver: (props, styles) => styles.list\n})({\n  // We disable the focus ring for mouse, touch and keyboard users.\n  outline: 0\n});\nconst Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {\n  var _slots$paper, _slotProps$paper;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiMenu'\n  });\n  const {\n      autoFocus = true,\n      children,\n      className,\n      disableAutoFocusItem = false,\n      MenuListProps = {},\n      onClose,\n      open,\n      PaperProps = {},\n      PopoverClasses,\n      transitionDuration = 'auto',\n      TransitionProps: {\n        onEntering\n      } = {},\n      variant = 'selectedMenu',\n      slots = {},\n      slotProps = {}\n    } = props,\n    TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n    other = _objectWithoutPropertiesLoose(props, _excluded2);\n  const isRtl = useRtl();\n  const ownerState = _extends({}, props, {\n    autoFocus,\n    disableAutoFocusItem,\n    MenuListProps,\n    onEntering,\n    PaperProps,\n    transitionDuration,\n    TransitionProps,\n    variant\n  });\n  const classes = useUtilityClasses(ownerState);\n  const autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n  const menuListActionsRef = React.useRef(null);\n  const handleEntering = (element, isAppearing) => {\n    if (menuListActionsRef.current) {\n      menuListActionsRef.current.adjustStyleForScrollbar(element, {\n        direction: isRtl ? 'rtl' : 'ltr'\n      });\n    }\n    if (onEntering) {\n      onEntering(element, isAppearing);\n    }\n  };\n  const handleListKeyDown = event => {\n    if (event.key === 'Tab') {\n      event.preventDefault();\n      if (onClose) {\n        onClose(event, 'tabKeyDown');\n      }\n    }\n  };\n\n  /**\n   * the index of the item should receive focus\n   * in a `variant=\"selectedMenu\"` it's the first `selected` item\n   * otherwise it's the very first item.\n   */\n  let activeItemIndex = -1;\n  // since we inject focus related props into children we have to do a lookahead\n  // to check if there is a `selected` item. We're looking for the last `selected`\n  // item and use the first valid item as a fallback\n  React.Children.map(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    if (!child.props.disabled) {\n      if (variant === 'selectedMenu' && child.props.selected) {\n        activeItemIndex = index;\n      } else if (activeItemIndex === -1) {\n        activeItemIndex = index;\n      }\n    }\n  });\n  const PaperSlot = (_slots$paper = slots.paper) != null ? _slots$paper : MenuPaper;\n  const paperExternalSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : PaperProps;\n  const rootSlotProps = useSlotProps({\n    elementType: slots.root,\n    externalSlotProps: slotProps.root,\n    ownerState,\n    className: [classes.root, className]\n  });\n  const paperSlotProps = useSlotProps({\n    elementType: PaperSlot,\n    externalSlotProps: paperExternalSlotProps,\n    ownerState,\n    className: classes.paper\n  });\n  return /*#__PURE__*/_jsx(MenuRoot, _extends({\n    onClose: onClose,\n    anchorOrigin: {\n      vertical: 'bottom',\n      horizontal: isRtl ? 'right' : 'left'\n    },\n    transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,\n    slots: {\n      paper: PaperSlot,\n      root: slots.root\n    },\n    slotProps: {\n      root: rootSlotProps,\n      paper: paperSlotProps\n    },\n    open: open,\n    ref: ref,\n    transitionDuration: transitionDuration,\n    TransitionProps: _extends({\n      onEntering: handleEntering\n    }, TransitionProps),\n    ownerState: ownerState\n  }, other, {\n    classes: PopoverClasses,\n    children: /*#__PURE__*/_jsx(MenuMenuList, _extends({\n      onKeyDown: handleListKeyDown,\n      actions: menuListActionsRef,\n      autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n      autoFocusItem: autoFocusItem,\n      variant: variant\n    }, MenuListProps, {\n      className: clsx(classes.list, MenuListProps.className),\n      children: children\n    }))\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * An HTML element, or a function that returns one.\n   * It's used to set the position of the menu.\n   */\n  anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n  /**\n   * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n   * children are not focusable. If you set this prop to `false` focus will be placed\n   * on the parent modal container. This has severe accessibility implications\n   * and should only be considered if you manage focus otherwise.\n   * @default true\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Menu contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n   * unless `autoFocus` is also set to `false`. Not using the default means not\n   * following WAI-ARIA authoring practices. Please be considerate about possible\n   * accessibility implications.\n   * @default false\n   */\n  disableAutoFocusItem: PropTypes.bool,\n  /**\n   * Props applied to the [`MenuList`](/material-ui/api/menu-list/) element.\n   * @default {}\n   */\n  MenuListProps: PropTypes.object,\n  /**\n   * Callback fired when the component requests to be closed.\n   *\n   * @param {object} event The event source of the callback.\n   * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n   */\n  onClose: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  PaperProps: PropTypes.object,\n  /**\n   * `classes` prop applied to the [`Popover`](/material-ui/api/popover/) element.\n   */\n  PopoverClasses: PropTypes.object,\n  /**\n   * The extra props for the slot components.\n   * You can override the existing props or add new ones.\n   *\n   * @default {}\n   */\n  slotProps: PropTypes.shape({\n    paper: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n    root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n  }),\n  /**\n   * The components used for each slot inside.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    paper: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The length of the transition in `ms`, or 'auto'\n   * @default 'auto'\n   */\n  transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n    appear: PropTypes.number,\n    enter: PropTypes.number,\n    exit: PropTypes.number\n  })]),\n  /**\n   * Props applied to the transition element.\n   * By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.\n   * @default {}\n   */\n  TransitionProps: PropTypes.object,\n  /**\n   * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.\n   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default Menu;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getMenuItemUtilityClass(slot) {\n  return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"component\", \"dense\", \"divider\", \"disableGutters\", \"focusVisibleClassName\", \"role\", \"tabIndex\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from '../List/ListContext';\nimport ButtonBase from '../ButtonBase';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport { dividerClasses } from '../Divider';\nimport { listItemIconClasses } from '../ListItemIcon';\nimport { listItemTextClasses } from '../ListItemText';\nimport menuItemClasses, { getMenuItemUtilityClass } from './menuItemClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n  const {\n    ownerState\n  } = props;\n  return [styles.root, ownerState.dense && styles.dense, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n  const {\n    disabled,\n    dense,\n    divider,\n    disableGutters,\n    selected,\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root', dense && 'dense', disabled && 'disabled', !disableGutters && 'gutters', divider && 'divider', selected && 'selected']\n  };\n  const composedClasses = composeClasses(slots, getMenuItemUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst MenuItemRoot = styled(ButtonBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiMenuItem',\n  slot: 'Root',\n  overridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({}, theme.typography.body1, {\n  display: 'flex',\n  justifyContent: 'flex-start',\n  alignItems: 'center',\n  position: 'relative',\n  textDecoration: 'none',\n  minHeight: 48,\n  paddingTop: 6,\n  paddingBottom: 6,\n  boxSizing: 'border-box',\n  whiteSpace: 'nowrap'\n}, !ownerState.disableGutters && {\n  paddingLeft: 16,\n  paddingRight: 16\n}, ownerState.divider && {\n  borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n  backgroundClip: 'padding-box'\n}, {\n  '&:hover': {\n    textDecoration: 'none',\n    backgroundColor: (theme.vars || theme).palette.action.hover,\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: 'transparent'\n    }\n  },\n  [`&.${menuItemClasses.selected}`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n    [`&.${menuItemClasses.focusVisible}`]: {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n    }\n  },\n  [`&.${menuItemClasses.selected}:hover`]: {\n    backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n    }\n  },\n  [`&.${menuItemClasses.focusVisible}`]: {\n    backgroundColor: (theme.vars || theme).palette.action.focus\n  },\n  [`&.${menuItemClasses.disabled}`]: {\n    opacity: (theme.vars || theme).palette.action.disabledOpacity\n  },\n  [`& + .${dividerClasses.root}`]: {\n    marginTop: theme.spacing(1),\n    marginBottom: theme.spacing(1)\n  },\n  [`& + .${dividerClasses.inset}`]: {\n    marginLeft: 52\n  },\n  [`& .${listItemTextClasses.root}`]: {\n    marginTop: 0,\n    marginBottom: 0\n  },\n  [`& .${listItemTextClasses.inset}`]: {\n    paddingLeft: 36\n  },\n  [`& .${listItemIconClasses.root}`]: {\n    minWidth: 36\n  }\n}, !ownerState.dense && {\n  [theme.breakpoints.up('sm')]: {\n    minHeight: 'auto'\n  }\n}, ownerState.dense && _extends({\n  minHeight: 32,\n  // https://m2.material.io/components/menus#specs > Dense\n  paddingTop: 4,\n  paddingBottom: 4\n}, theme.typography.body2, {\n  [`& .${listItemIconClasses.root} svg`]: {\n    fontSize: '1.25rem'\n  }\n})));\nconst MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiMenuItem'\n  });\n  const {\n      autoFocus = false,\n      component = 'li',\n      dense = false,\n      divider = false,\n      disableGutters = false,\n      focusVisibleClassName,\n      role = 'menuitem',\n      tabIndex: tabIndexProp,\n      className\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const context = React.useContext(ListContext);\n  const childContext = React.useMemo(() => ({\n    dense: dense || context.dense || false,\n    disableGutters\n  }), [context.dense, dense, disableGutters]);\n  const menuItemRef = React.useRef(null);\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      if (menuItemRef.current) {\n        menuItemRef.current.focus();\n      } else if (process.env.NODE_ENV !== 'production') {\n        console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');\n      }\n    }\n  }, [autoFocus]);\n  const ownerState = _extends({}, props, {\n    dense: childContext.dense,\n    divider,\n    disableGutters\n  });\n  const classes = useUtilityClasses(props);\n  const handleRef = useForkRef(menuItemRef, ref);\n  let tabIndex;\n  if (!props.disabled) {\n    tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n  }\n  return /*#__PURE__*/_jsx(ListContext.Provider, {\n    value: childContext,\n    children: /*#__PURE__*/_jsx(MenuItemRoot, _extends({\n      ref: handleRef,\n      role: role,\n      tabIndex: tabIndex,\n      component: component,\n      focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n      className: clsx(classes.root, className)\n    }, other, {\n      ownerState: ownerState,\n      classes: classes\n    }))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the list item is focused during the first mount.\n   * Focus will also be triggered if the value changes from false to true.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n   * The prop defaults to the value inherited from the parent Menu component.\n   * @default false\n   */\n  dense: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * If `true`, a 1px light border is added to the bottom of the menu item.\n   * @default false\n   */\n  divider: PropTypes.bool,\n  /**\n   * This prop can help identify which element has keyboard focus.\n   * The class name will be applied when the element gains the focus through keyboard interaction.\n   * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n   * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n   * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n   * if needed.\n   */\n  focusVisibleClassName: PropTypes.string,\n  /**\n   * @ignore\n   */\n  role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n  /**\n   * If `true`, the component is selected.\n   * @default false\n   */\n  selected: PropTypes.bool,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * @default 0\n   */\n  tabIndex: PropTypes.number\n} : void 0;\nexport default MenuItem;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getNativeSelectUtilityClasses(slot) {\n  return generateUtilityClass('MuiNativeSelect', slot);\n}\nconst nativeSelectClasses = generateUtilityClasses('MuiNativeSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput', 'error']);\nexport default nativeSelectClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"error\", \"IconComponent\", \"inputRef\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport nativeSelectClasses, { getNativeSelectUtilityClasses } from './nativeSelectClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open,\n    error\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple', error && 'error'],\n    icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled']\n  };\n  return composeClasses(slots, getNativeSelectUtilityClasses, classes);\n};\nexport const nativeSelectSelectStyles = ({\n  ownerState,\n  theme\n}) => _extends({\n  MozAppearance: 'none',\n  // Reset\n  WebkitAppearance: 'none',\n  // Reset\n  // When interacting quickly, the text can end up selected.\n  // Native select can't be selected either.\n  userSelect: 'none',\n  borderRadius: 0,\n  // Reset\n  cursor: 'pointer',\n  '&:focus': _extends({}, theme.vars ? {\n    backgroundColor: `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.05)`\n  } : {\n    backgroundColor: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)'\n  }, {\n    borderRadius: 0 // Reset Chrome style\n  }),\n  // Remove IE11 arrow\n  '&::-ms-expand': {\n    display: 'none'\n  },\n  [`&.${nativeSelectClasses.disabled}`]: {\n    cursor: 'default'\n  },\n  '&[multiple]': {\n    height: 'auto'\n  },\n  '&:not([multiple]) option, &:not([multiple]) optgroup': {\n    backgroundColor: (theme.vars || theme).palette.background.paper\n  },\n  // Bump specificity to allow extending custom inputs\n  '&&&': {\n    paddingRight: 24,\n    minWidth: 16 // So it doesn't collapse.\n  }\n}, ownerState.variant === 'filled' && {\n  '&&&': {\n    paddingRight: 32\n  }\n}, ownerState.variant === 'outlined' && {\n  borderRadius: (theme.vars || theme).shape.borderRadius,\n  '&:focus': {\n    borderRadius: (theme.vars || theme).shape.borderRadius // Reset the reset for Chrome style\n  },\n  '&&&': {\n    paddingRight: 32\n  }\n});\nconst NativeSelectSelect = styled('select', {\n  name: 'MuiNativeSelect',\n  slot: 'Select',\n  shouldForwardProp: rootShouldForwardProp,\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.select, styles[ownerState.variant], ownerState.error && styles.error, {\n      [`&.${nativeSelectClasses.multiple}`]: styles.multiple\n    }];\n  }\n})(nativeSelectSelectStyles);\nexport const nativeSelectIconStyles = ({\n  ownerState,\n  theme\n}) => _extends({\n  // We use a position absolute over a flexbox in order to forward the pointer events\n  // to the input and to support wrapping tags..\n  position: 'absolute',\n  right: 0,\n  top: 'calc(50% - .5em)',\n  // Center vertically, height is 1em\n  pointerEvents: 'none',\n  // Don't block pointer events on the select under the icon.\n  color: (theme.vars || theme).palette.action.active,\n  [`&.${nativeSelectClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  }\n}, ownerState.open && {\n  transform: 'rotate(180deg)'\n}, ownerState.variant === 'filled' && {\n  right: 7\n}, ownerState.variant === 'outlined' && {\n  right: 7\n});\nconst NativeSelectIcon = styled('svg', {\n  name: 'MuiNativeSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})(nativeSelectIconStyles);\n\n/**\n * @ignore - internal component.\n */\nconst NativeSelectInput = /*#__PURE__*/React.forwardRef(function NativeSelectInput(props, ref) {\n  const {\n      className,\n      disabled,\n      error,\n      IconComponent,\n      inputRef,\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const ownerState = _extends({}, props, {\n    disabled,\n    variant,\n    error\n  });\n  const classes = useUtilityClasses(ownerState);\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(NativeSelectSelect, _extends({\n      ownerState: ownerState,\n      className: clsx(classes.select, className),\n      disabled: disabled,\n      ref: inputRef || ref\n    }, other)), props.multiple ? null : /*#__PURE__*/_jsx(NativeSelectIcon, {\n      as: IconComponent,\n      ownerState: ownerState,\n      className: classes.icon\n    })]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelectInput.propTypes = {\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<option>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The CSS class name of the select element.\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the `select input` will indicate an error.\n   */\n  error: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: PropTypes.elementType.isRequired,\n  /**\n   * Use that prop to pass a ref to the native select element.\n   * @deprecated\n   */\n  inputRef: refType,\n  /**\n   * @ignore\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The input value.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default NativeSelectInput;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"classes\", \"className\", \"label\", \"notched\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NotchedOutlineRoot = styled('fieldset', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  textAlign: 'left',\n  position: 'absolute',\n  bottom: 0,\n  right: 0,\n  top: -5,\n  left: 0,\n  margin: 0,\n  padding: '0 8px',\n  pointerEvents: 'none',\n  borderRadius: 'inherit',\n  borderStyle: 'solid',\n  borderWidth: 1,\n  overflow: 'hidden',\n  minWidth: '0%'\n});\nconst NotchedOutlineLegend = styled('legend', {\n  shouldForwardProp: rootShouldForwardProp\n})(({\n  ownerState,\n  theme\n}) => _extends({\n  float: 'unset',\n  // Fix conflict with bootstrap\n  width: 'auto',\n  // Fix conflict with bootstrap\n  overflow: 'hidden'\n}, !ownerState.withLabel && {\n  padding: 0,\n  lineHeight: '11px',\n  // sync with `height` in `legend` styles\n  transition: theme.transitions.create('width', {\n    duration: 150,\n    easing: theme.transitions.easing.easeOut\n  })\n}, ownerState.withLabel && _extends({\n  display: 'block',\n  // Fix conflict with normalize.css and sanitize.css\n  padding: 0,\n  height: 11,\n  // sync with `lineHeight` in `legend` styles\n  fontSize: '0.75em',\n  visibility: 'hidden',\n  maxWidth: 0.01,\n  transition: theme.transitions.create('max-width', {\n    duration: 50,\n    easing: theme.transitions.easing.easeOut\n  }),\n  whiteSpace: 'nowrap',\n  '& > span': {\n    paddingLeft: 5,\n    paddingRight: 5,\n    display: 'inline-block',\n    opacity: 0,\n    visibility: 'visible'\n  }\n}, ownerState.notched && {\n  maxWidth: '100%',\n  transition: theme.transitions.create('max-width', {\n    duration: 100,\n    easing: theme.transitions.easing.easeOut,\n    delay: 50\n  })\n})));\n\n/**\n * @ignore - internal component.\n */\nexport default function NotchedOutline(props) {\n  const {\n      className,\n      label,\n      notched\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const withLabel = label != null && label !== '';\n  const ownerState = _extends({}, props, {\n    notched,\n    withLabel\n  });\n  return /*#__PURE__*/_jsx(NotchedOutlineRoot, _extends({\n    \"aria-hidden\": true,\n    className: className,\n    ownerState: ownerState\n  }, other, {\n    children: /*#__PURE__*/_jsx(NotchedOutlineLegend, {\n      ownerState: ownerState,\n      children: withLabel ? /*#__PURE__*/_jsx(\"span\", {\n        children: label\n      }) : // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      }))\n    })\n  }));\n}\nprocess.env.NODE_ENV !== \"production\" ? NotchedOutline.propTypes = {\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The label.\n   */\n  label: PropTypes.node,\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: PropTypes.bool.isRequired,\n  /**\n   * @ignore\n   */\n  style: PropTypes.object\n} : void 0;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"components\", \"fullWidth\", \"inputComponent\", \"label\", \"multiline\", \"notched\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport NotchedOutline from './NotchedOutline';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport outlinedInputClasses, { getOutlinedInputUtilityClass } from './outlinedInputClasses';\nimport InputBase, { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  const slots = {\n    root: ['root'],\n    notchedOutline: ['notchedOutline'],\n    input: ['input']\n  };\n  const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);\n  return _extends({}, classes, composedClasses);\n};\nconst OutlinedInputRoot = styled(InputBaseRoot, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiOutlinedInput',\n  slot: 'Root',\n  overridesResolver: inputBaseRootOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return _extends({\n    position: 'relative',\n    borderRadius: (theme.vars || theme).shape.borderRadius,\n    [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.text.primary\n    },\n    // Reset on touch devices, it doesn't add specificity\n    '@media (hover: none)': {\n      [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n        borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n      }\n    },\n    [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette[ownerState.color].main,\n      borderWidth: 2\n    },\n    [`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.error.main\n    },\n    [`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]: {\n      borderColor: (theme.vars || theme).palette.action.disabled\n    }\n  }, ownerState.startAdornment && {\n    paddingLeft: 14\n  }, ownerState.endAdornment && {\n    paddingRight: 14\n  }, ownerState.multiline && _extends({\n    padding: '16.5px 14px'\n  }, ownerState.size === 'small' && {\n    padding: '8.5px 14px'\n  }));\n});\nconst NotchedOutlineRoot = styled(NotchedOutline, {\n  name: 'MuiOutlinedInput',\n  slot: 'NotchedOutline',\n  overridesResolver: (props, styles) => styles.notchedOutline\n})(({\n  theme\n}) => {\n  const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n  return {\n    borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n  };\n});\nconst OutlinedInputInput = styled(InputBaseInput, {\n  name: 'MuiOutlinedInput',\n  slot: 'Input',\n  overridesResolver: inputBaseInputOverridesResolver\n})(({\n  theme,\n  ownerState\n}) => _extends({\n  padding: '16.5px 14px'\n}, !theme.vars && {\n  '&:-webkit-autofill': {\n    WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n    WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n    caretColor: theme.palette.mode === 'light' ? null : '#fff',\n    borderRadius: 'inherit'\n  }\n}, theme.vars && {\n  '&:-webkit-autofill': {\n    borderRadius: 'inherit'\n  },\n  [theme.getColorSchemeSelector('dark')]: {\n    '&:-webkit-autofill': {\n      WebkitBoxShadow: '0 0 0 100px #266798 inset',\n      WebkitTextFillColor: '#fff',\n      caretColor: '#fff'\n    }\n  }\n}, ownerState.size === 'small' && {\n  padding: '8.5px 14px'\n}, ownerState.multiline && {\n  padding: 0\n}, ownerState.startAdornment && {\n  paddingLeft: 0\n}, ownerState.endAdornment && {\n  paddingRight: 0\n}));\nconst OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inProps, ref) {\n  var _ref, _slots$root, _ref2, _slots$input, _React$Fragment;\n  const props = useThemeProps({\n    props: inProps,\n    name: 'MuiOutlinedInput'\n  });\n  const {\n      components = {},\n      fullWidth = false,\n      inputComponent = 'input',\n      label,\n      multiline = false,\n      notched,\n      slots = {},\n      type = 'text'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const classes = useUtilityClasses(props);\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['color', 'disabled', 'error', 'focused', 'hiddenLabel', 'size', 'required']\n  });\n  const ownerState = _extends({}, props, {\n    color: fcs.color || 'primary',\n    disabled: fcs.disabled,\n    error: fcs.error,\n    focused: fcs.focused,\n    formControl: muiFormControl,\n    fullWidth,\n    hiddenLabel: fcs.hiddenLabel,\n    multiline,\n    size: fcs.size,\n    type\n  });\n  const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : OutlinedInputRoot;\n  const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : OutlinedInputInput;\n  return /*#__PURE__*/_jsx(InputBase, _extends({\n    slots: {\n      root: RootSlot,\n      input: InputSlot\n    },\n    renderSuffix: state => /*#__PURE__*/_jsx(NotchedOutlineRoot, {\n      ownerState: ownerState,\n      className: classes.notchedOutline,\n      label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {\n        children: [label, \"\\u2009\", '*']\n      })) : label,\n      notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n    }),\n    fullWidth: fullWidth,\n    inputComponent: inputComponent,\n    multiline: multiline,\n    ref: ref,\n    type: type\n  }, other, {\n    classes: _extends({}, classes, {\n      notchedOutline: null\n    })\n  }));\n});\nprocess.env.NODE_ENV !== \"production\" ? OutlinedInput.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * This prop helps users to fill forms faster, especially on mobile devices.\n   * The name can be confusing, as it's more like an autofill.\n   * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n   */\n  autoComplete: PropTypes.string,\n  /**\n   * If `true`, the `input` element is focused during the first mount.\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `slots` prop.\n   * It's recommended to use the `slots` prop instead.\n   *\n   * @default {}\n   */\n  components: PropTypes.shape({\n    Input: PropTypes.elementType,\n    Root: PropTypes.elementType\n  }),\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the component is disabled.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * End `InputAdornment` for this component.\n   */\n  endAdornment: PropTypes.node,\n  /**\n   * If `true`, the `input` will indicate an error.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  error: PropTypes.bool,\n  /**\n   * If `true`, the `input` will take up the full width of its container.\n   * @default false\n   */\n  fullWidth: PropTypes.bool,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * The component used for the `input` element.\n   * Either a string to use a HTML element or a component.\n   * @default 'input'\n   */\n  inputComponent: PropTypes.elementType,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * @default {}\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * The label of the `input`. It is only used for layout. The actual labelling\n   * is handled by `InputLabel`.\n   */\n  label: PropTypes.node,\n  /**\n   * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n   * FormControl.\n   * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n   */\n  margin: PropTypes.oneOf(['dense', 'none']),\n  /**\n   * Maximum number of rows to display when multiline option is set to true.\n   */\n  maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * Minimum number of rows to display when multiline option is set to true.\n   */\n  minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n   * @default false\n   */\n  multiline: PropTypes.bool,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * If `true`, the outline is notched to accommodate the label.\n   */\n  notched: PropTypes.bool,\n  /**\n   * Callback fired when the value is changed.\n   *\n   * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * The short hint displayed in the `input` before the user enters a value.\n   */\n  placeholder: PropTypes.string,\n  /**\n   * It prevents the user from changing the value of the field\n   * (not from interacting with the field).\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * If `true`, the `input` element is required.\n   * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n   */\n  required: PropTypes.bool,\n  /**\n   * Number of rows to display when multiline option is set to true.\n   */\n  rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * The components used for each slot inside.\n   *\n   * This prop is an alias for the `components` prop, which will be deprecated in the future.\n   *\n   * @default {}\n   */\n  slots: PropTypes.shape({\n    input: PropTypes.elementType,\n    root: PropTypes.elementType\n  }),\n  /**\n   * Start `InputAdornment` for this component.\n   */\n  startAdornment: PropTypes.node,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n   * @default 'text'\n   */\n  type: PropTypes.string,\n  /**\n   * The value of the `input` element, required for a controlled component.\n   */\n  value: PropTypes.any\n} : void 0;\nOutlinedInput.muiName = 'Input';\nexport default OutlinedInput;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSelectUtilityClasses(slot) {\n  return generateUtilityClass('MuiSelect', slot);\n}\nconst selectClasses = generateUtilityClasses('MuiSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'focused', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput', 'error']);\nexport default selectClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nvar _span;\nconst _excluded = [\"aria-describedby\", \"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"className\", \"defaultOpen\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"error\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport useId from '@mui/utils/useId';\nimport refType from '@mui/utils/refType';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport Menu from '../Menu/Menu';\nimport { nativeSelectSelectStyles, nativeSelectIconStyles } from '../NativeSelect/NativeSelectInput';\nimport { isFilled } from '../InputBase/utils';\nimport styled, { slotShouldForwardProp } from '../styles/styled';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport selectClasses, { getSelectUtilityClasses } from './selectClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SelectSelect = styled('div', {\n  name: 'MuiSelect',\n  slot: 'Select',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [\n    // Win specificity over the input base\n    {\n      [`&.${selectClasses.select}`]: styles.select\n    }, {\n      [`&.${selectClasses.select}`]: styles[ownerState.variant]\n    }, {\n      [`&.${selectClasses.error}`]: styles.error\n    }, {\n      [`&.${selectClasses.multiple}`]: styles.multiple\n    }];\n  }\n})(nativeSelectSelectStyles, {\n  // Win specificity over the input base\n  [`&.${selectClasses.select}`]: {\n    height: 'auto',\n    // Resets for multiple select with chips\n    minHeight: '1.4375em',\n    // Required for select\\text-field height consistency\n    textOverflow: 'ellipsis',\n    whiteSpace: 'nowrap',\n    overflow: 'hidden'\n  }\n});\nconst SelectIcon = styled('svg', {\n  name: 'MuiSelect',\n  slot: 'Icon',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n  }\n})(nativeSelectIconStyles);\nconst SelectNativeInput = styled('input', {\n  shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'classes',\n  name: 'MuiSelect',\n  slot: 'NativeInput',\n  overridesResolver: (props, styles) => styles.nativeInput\n})({\n  bottom: 0,\n  left: 0,\n  position: 'absolute',\n  opacity: 0,\n  pointerEvents: 'none',\n  width: '100%',\n  boxSizing: 'border-box'\n});\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nfunction isEmpty(display) {\n  return display == null || typeof display === 'string' && !display.trim();\n}\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    variant,\n    disabled,\n    multiple,\n    open,\n    error\n  } = ownerState;\n  const slots = {\n    select: ['select', variant, disabled && 'disabled', multiple && 'multiple', error && 'error'],\n    icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled'],\n    nativeInput: ['nativeInput']\n  };\n  return composeClasses(slots, getSelectUtilityClasses, classes);\n};\n\n/**\n * @ignore - internal component.\n */\nconst SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n  var _MenuProps$slotProps;\n  const {\n      'aria-describedby': ariaDescribedby,\n      'aria-label': ariaLabel,\n      autoFocus,\n      autoWidth,\n      children,\n      className,\n      defaultOpen,\n      defaultValue,\n      disabled,\n      displayEmpty,\n      error = false,\n      IconComponent,\n      inputRef: inputRefProp,\n      labelId,\n      MenuProps = {},\n      multiple,\n      name,\n      onBlur,\n      onChange,\n      onClose,\n      onFocus,\n      onOpen,\n      open: openProp,\n      readOnly,\n      renderValue,\n      SelectDisplayProps = {},\n      tabIndex: tabIndexProp\n      // catching `type` from Input which makes no sense for SelectInput\n      ,\n\n      value: valueProp,\n      variant = 'standard'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'Select'\n  });\n  const [openState, setOpenState] = useControlled({\n    controlled: openProp,\n    default: defaultOpen,\n    name: 'Select'\n  });\n  const inputRef = React.useRef(null);\n  const displayRef = React.useRef(null);\n  const [displayNode, setDisplayNode] = React.useState(null);\n  const {\n    current: isOpenControlled\n  } = React.useRef(openProp != null);\n  const [menuMinWidthState, setMenuMinWidthState] = React.useState();\n  const handleRef = useForkRef(ref, inputRefProp);\n  const handleDisplayRef = React.useCallback(node => {\n    displayRef.current = node;\n    if (node) {\n      setDisplayNode(node);\n    }\n  }, []);\n  const anchorElement = displayNode == null ? void 0 : displayNode.parentNode;\n  React.useImperativeHandle(handleRef, () => ({\n    focus: () => {\n      displayRef.current.focus();\n    },\n    node: inputRef.current,\n    value\n  }), [value]);\n\n  // Resize menu on `defaultOpen` automatic toggle.\n  React.useEffect(() => {\n    if (defaultOpen && openState && displayNode && !isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      displayRef.current.focus();\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [displayNode, autoWidth]);\n  // `isOpenControlled` is ignored because the component should never switch between controlled and uncontrolled modes.\n  // `defaultOpen` and `openState` are ignored to avoid unnecessary callbacks.\n  React.useEffect(() => {\n    if (autoFocus) {\n      displayRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useEffect(() => {\n    if (!labelId) {\n      return undefined;\n    }\n    const label = ownerDocument(displayRef.current).getElementById(labelId);\n    if (label) {\n      const handler = () => {\n        if (getSelection().isCollapsed) {\n          displayRef.current.focus();\n        }\n      };\n      label.addEventListener('click', handler);\n      return () => {\n        label.removeEventListener('click', handler);\n      };\n    }\n    return undefined;\n  }, [labelId]);\n  const update = (open, event) => {\n    if (open) {\n      if (onOpen) {\n        onOpen(event);\n      }\n    } else if (onClose) {\n      onClose(event);\n    }\n    if (!isOpenControlled) {\n      setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n      setOpenState(open);\n    }\n  };\n  const handleMouseDown = event => {\n    // Ignore everything but left-click\n    if (event.button !== 0) {\n      return;\n    }\n    // Hijack the default focus behavior.\n    event.preventDefault();\n    displayRef.current.focus();\n    update(true, event);\n  };\n  const handleClose = event => {\n    update(false, event);\n  };\n  const childrenArray = React.Children.toArray(children);\n\n  // Support autofill.\n  const handleChange = event => {\n    const child = childrenArray.find(childItem => childItem.props.value === event.target.value);\n    if (child === undefined) {\n      return;\n    }\n    setValueState(child.props.value);\n    if (onChange) {\n      onChange(event, child);\n    }\n  };\n  const handleItemClick = child => event => {\n    let newValue;\n\n    // We use the tabindex attribute to signal the available options.\n    if (!event.currentTarget.hasAttribute('tabindex')) {\n      return;\n    }\n    if (multiple) {\n      newValue = Array.isArray(value) ? value.slice() : [];\n      const itemIndex = value.indexOf(child.props.value);\n      if (itemIndex === -1) {\n        newValue.push(child.props.value);\n      } else {\n        newValue.splice(itemIndex, 1);\n      }\n    } else {\n      newValue = child.props.value;\n    }\n    if (child.props.onClick) {\n      child.props.onClick(event);\n    }\n    if (value !== newValue) {\n      setValueState(newValue);\n      if (onChange) {\n        // Redefine target to allow name and value to be read.\n        // This allows seamless integration with the most popular form libraries.\n        // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n        // Clone the event to not override `target` of the original event.\n        const nativeEvent = event.nativeEvent || event;\n        const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n        Object.defineProperty(clonedEvent, 'target', {\n          writable: true,\n          value: {\n            value: newValue,\n            name\n          }\n        });\n        onChange(clonedEvent, child);\n      }\n    }\n    if (!multiple) {\n      update(false, event);\n    }\n  };\n  const handleKeyDown = event => {\n    if (!readOnly) {\n      const validKeys = [' ', 'ArrowUp', 'ArrowDown',\n      // The native select doesn't respond to enter on macOS, but it's recommended by\n      // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/\n      'Enter'];\n      if (validKeys.indexOf(event.key) !== -1) {\n        event.preventDefault();\n        update(true, event);\n      }\n    }\n  };\n  const open = displayNode !== null && openState;\n  const handleBlur = event => {\n    // if open event.stopImmediatePropagation\n    if (!open && onBlur) {\n      // Preact support, target is read only property on a native event.\n      Object.defineProperty(event, 'target', {\n        writable: true,\n        value: {\n          value,\n          name\n        }\n      });\n      onBlur(event);\n    }\n  };\n  delete other['aria-invalid'];\n  let display;\n  let displaySingle;\n  const displayMultiple = [];\n  let computeDisplay = false;\n  let foundMatch = false;\n\n  // No need to display any value if the field is empty.\n  if (isFilled({\n    value\n  }) || displayEmpty) {\n    if (renderValue) {\n      display = renderValue(value);\n    } else {\n      computeDisplay = true;\n    }\n  }\n  const items = childrenArray.map(child => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n    let selected;\n    if (multiple) {\n      if (!Array.isArray(value)) {\n        throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`value\\` prop must be an array when using the \\`Select\\` component with \\`multiple\\`.` : _formatMuiErrorMessage(2));\n      }\n      selected = value.some(v => areEqualValues(v, child.props.value));\n      if (selected && computeDisplay) {\n        displayMultiple.push(child.props.children);\n      }\n    } else {\n      selected = areEqualValues(value, child.props.value);\n      if (selected && computeDisplay) {\n        displaySingle = child.props.children;\n      }\n    }\n    if (selected) {\n      foundMatch = true;\n    }\n    return /*#__PURE__*/React.cloneElement(child, {\n      'aria-selected': selected ? 'true' : 'false',\n      onClick: handleItemClick(child),\n      onKeyUp: event => {\n        if (event.key === ' ') {\n          // otherwise our MenuItems dispatches a click event\n          // it's not behavior of the native <option> and causes\n          // the select to close immediately since we open on space keydown\n          event.preventDefault();\n        }\n        if (child.props.onKeyUp) {\n          child.props.onKeyUp(event);\n        }\n      },\n      role: 'option',\n      selected,\n      value: undefined,\n      // The value is most likely not a valid HTML attribute.\n      'data-value': child.props.value // Instead, we provide it as a data attribute.\n    });\n  });\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      if (!foundMatch && !multiple && value !== '') {\n        const values = childrenArray.map(child => child.props.value);\n        console.warn([`MUI: You have provided an out-of-range value \\`${value}\\` for the select ${name ? `(name=\"${name}\") ` : ''}component.`, \"Consider providing a value that matches one of the available options or ''.\", `The available values are ${values.filter(x => x != null).map(x => `\\`${x}\\``).join(', ') || '\"\"'}.`].join('\\n'));\n      }\n    }, [foundMatch, childrenArray, multiple, name, value]);\n  }\n  if (computeDisplay) {\n    if (multiple) {\n      if (displayMultiple.length === 0) {\n        display = null;\n      } else {\n        display = displayMultiple.reduce((output, child, index) => {\n          output.push(child);\n          if (index < displayMultiple.length - 1) {\n            output.push(', ');\n          }\n          return output;\n        }, []);\n      }\n    } else {\n      display = displaySingle;\n    }\n  }\n\n  // Avoid performing a layout computation in the render method.\n  let menuMinWidth = menuMinWidthState;\n  if (!autoWidth && isOpenControlled && displayNode) {\n    menuMinWidth = anchorElement.clientWidth;\n  }\n  let tabIndex;\n  if (typeof tabIndexProp !== 'undefined') {\n    tabIndex = tabIndexProp;\n  } else {\n    tabIndex = disabled ? null : 0;\n  }\n  const buttonId = SelectDisplayProps.id || (name ? `mui-component-select-${name}` : undefined);\n  const ownerState = _extends({}, props, {\n    variant,\n    value,\n    open,\n    error\n  });\n  const classes = useUtilityClasses(ownerState);\n  const paperProps = _extends({}, MenuProps.PaperProps, (_MenuProps$slotProps = MenuProps.slotProps) == null ? void 0 : _MenuProps$slotProps.paper);\n  const listboxId = useId();\n  return /*#__PURE__*/_jsxs(React.Fragment, {\n    children: [/*#__PURE__*/_jsx(SelectSelect, _extends({\n      ref: handleDisplayRef,\n      tabIndex: tabIndex,\n      role: \"combobox\",\n      \"aria-controls\": listboxId,\n      \"aria-disabled\": disabled ? 'true' : undefined,\n      \"aria-expanded\": open ? 'true' : 'false',\n      \"aria-haspopup\": \"listbox\",\n      \"aria-label\": ariaLabel,\n      \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n      \"aria-describedby\": ariaDescribedby,\n      onKeyDown: handleKeyDown,\n      onMouseDown: disabled || readOnly ? null : handleMouseDown,\n      onBlur: handleBlur,\n      onFocus: onFocus\n    }, SelectDisplayProps, {\n      ownerState: ownerState,\n      className: clsx(SelectDisplayProps.className, classes.select, className)\n      // The id is required for proper a11y\n      ,\n      id: buttonId,\n      children: isEmpty(display) ? // notranslate needed while Google Translate will not fix zero-width space issue\n      _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n        className: \"notranslate\",\n        children: \"\\u200B\"\n      })) : display\n    })), /*#__PURE__*/_jsx(SelectNativeInput, _extends({\n      \"aria-invalid\": error,\n      value: Array.isArray(value) ? value.join(',') : value,\n      name: name,\n      ref: inputRef,\n      \"aria-hidden\": true,\n      onChange: handleChange,\n      tabIndex: -1,\n      disabled: disabled,\n      className: classes.nativeInput,\n      autoFocus: autoFocus,\n      ownerState: ownerState\n    }, other)), /*#__PURE__*/_jsx(SelectIcon, {\n      as: IconComponent,\n      className: classes.icon,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(Menu, _extends({\n      id: `menu-${name || ''}`,\n      anchorEl: anchorElement,\n      open: open,\n      onClose: handleClose,\n      anchorOrigin: {\n        vertical: 'bottom',\n        horizontal: 'center'\n      },\n      transformOrigin: {\n        vertical: 'top',\n        horizontal: 'center'\n      }\n    }, MenuProps, {\n      MenuListProps: _extends({\n        'aria-labelledby': labelId,\n        role: 'listbox',\n        'aria-multiselectable': multiple ? 'true' : undefined,\n        disableListWrap: true,\n        id: listboxId\n      }, MenuProps.MenuListProps),\n      slotProps: _extends({}, MenuProps.slotProps, {\n        paper: _extends({}, paperProps, {\n          style: _extends({\n            minWidth: menuMinWidth\n          }, paperProps != null ? paperProps.style : null)\n        })\n      }),\n      children: items\n    }))]\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? SelectInput.propTypes = {\n  /**\n   * @ignore\n   */\n  'aria-describedby': PropTypes.string,\n  /**\n   * @ignore\n   */\n  'aria-label': PropTypes.string,\n  /**\n   * @ignore\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   */\n  autoWidth: PropTypes.bool,\n  /**\n   * The option elements to populate the select with.\n   * Can be some `<MenuItem>` elements.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The CSS class name of the select element.\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is toggled on mount. Use when the component open state is not controlled.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, the select is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the selected item is displayed even if its value is empty.\n   */\n  displayEmpty: PropTypes.bool,\n  /**\n   * If `true`, the `select input` will indicate an error.\n   */\n  error: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   */\n  IconComponent: PropTypes.elementType.isRequired,\n  /**\n   * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n   * Equivalent to `ref`\n   */\n  inputRef: refType,\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: PropTypes.string,\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: PropTypes.object,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   */\n  multiple: PropTypes.bool,\n  /**\n   * Name attribute of the `select` or hidden `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {object} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * @param {object} [child] The react element that was selected.\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use in controlled mode (see open).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   */\n  open: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  readOnly: PropTypes.bool,\n  /**\n   * Render the selected value.\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: PropTypes.func,\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: PropTypes.object,\n  /**\n   * @ignore\n   */\n  tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  /**\n   * @ignore\n   */\n  type: PropTypes.any,\n  /**\n   * The input value.\n   */\n  value: PropTypes.any,\n  /**\n   * The variant to use.\n   */\n  variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default SelectInput;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"autoWidth\", \"children\", \"classes\", \"className\", \"defaultOpen\", \"displayEmpty\", \"IconComponent\", \"id\", \"input\", \"inputProps\", \"label\", \"labelId\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\", \"variant\"],\n  _excluded2 = [\"root\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport deepmerge from '@mui/utils/deepmerge';\nimport SelectInput from './SelectInput';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nimport NativeSelectInput from '../NativeSelect/NativeSelectInput';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes\n  } = ownerState;\n  return classes;\n};\nconst styledRootConfig = {\n  name: 'MuiSelect',\n  overridesResolver: (props, styles) => styles.root,\n  shouldForwardProp: prop => rootShouldForwardProp(prop) && prop !== 'variant',\n  slot: 'Root'\n};\nconst StyledInput = styled(Input, styledRootConfig)('');\nconst StyledOutlinedInput = styled(OutlinedInput, styledRootConfig)('');\nconst StyledFilledInput = styled(FilledInput, styledRootConfig)('');\nconst Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {\n  const props = useThemeProps({\n    name: 'MuiSelect',\n    props: inProps\n  });\n  const {\n      autoWidth = false,\n      children,\n      classes: classesProp = {},\n      className,\n      defaultOpen = false,\n      displayEmpty = false,\n      IconComponent = ArrowDropDownIcon,\n      id,\n      input,\n      inputProps,\n      label,\n      labelId,\n      MenuProps,\n      multiple = false,\n      native = false,\n      onClose,\n      onOpen,\n      open,\n      renderValue,\n      SelectDisplayProps,\n      variant: variantProp = 'outlined'\n    } = props,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  const inputComponent = native ? NativeSelectInput : SelectInput;\n  const muiFormControl = useFormControl();\n  const fcs = formControlState({\n    props,\n    muiFormControl,\n    states: ['variant', 'error']\n  });\n  const variant = fcs.variant || variantProp;\n  const ownerState = _extends({}, props, {\n    variant,\n    classes: classesProp\n  });\n  const classes = useUtilityClasses(ownerState);\n  const restOfClasses = _objectWithoutPropertiesLoose(classes, _excluded2);\n  const InputComponent = input || {\n    standard: /*#__PURE__*/_jsx(StyledInput, {\n      ownerState: ownerState\n    }),\n    outlined: /*#__PURE__*/_jsx(StyledOutlinedInput, {\n      label: label,\n      ownerState: ownerState\n    }),\n    filled: /*#__PURE__*/_jsx(StyledFilledInput, {\n      ownerState: ownerState\n    })\n  }[variant];\n  const inputComponentRef = useForkRef(ref, InputComponent.ref);\n  return /*#__PURE__*/_jsx(React.Fragment, {\n    children: /*#__PURE__*/React.cloneElement(InputComponent, _extends({\n      // Most of the logic is implemented in `SelectInput`.\n      // The `Select` component is a simple API wrapper to expose something better to play with.\n      inputComponent,\n      inputProps: _extends({\n        children,\n        error: fcs.error,\n        IconComponent,\n        variant,\n        type: undefined,\n        // We render a select. We can ignore the type provided by the `Input`.\n        multiple\n      }, native ? {\n        id\n      } : {\n        autoWidth,\n        defaultOpen,\n        displayEmpty,\n        labelId,\n        MenuProps,\n        onClose,\n        onOpen,\n        open,\n        renderValue,\n        SelectDisplayProps: _extends({\n          id\n        }, SelectDisplayProps)\n      }, inputProps, {\n        classes: inputProps ? deepmerge(restOfClasses, inputProps.classes) : restOfClasses\n      }, input ? input.props.inputProps : {})\n    }, (multiple && native || displayEmpty) && variant === 'outlined' ? {\n      notched: true\n    } : {}, {\n      ref: inputComponentRef,\n      className: clsx(InputComponent.props.className, className, classes.root)\n    }, !input && {\n      variant\n    }, other))\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Select.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the width of the popover will automatically be set according to the items inside the\n   * menu, otherwise it will be at least the width of the select input.\n   * @default false\n   */\n  autoWidth: PropTypes.bool,\n  /**\n   * The option elements to populate the select with.\n   * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n   *\n   * ⚠️The `MenuItem` elements **must** be direct descendants when `native` is false.\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   * @default {}\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).\n   * You can only use it when the `native` prop is `false` (default).\n   * @default false\n   */\n  defaultOpen: PropTypes.bool,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * If `true`, a value is displayed even if no items are selected.\n   *\n   * In order to display a meaningful value, a function can be passed to the `renderValue` prop which\n   * returns the value to be displayed when no items are selected.\n   *\n   * ⚠️ When using this prop, make sure the label doesn't overlap with the empty displayed value.\n   * The label should either be hidden or forced to a shrunk state.\n   * @default false\n   */\n  displayEmpty: PropTypes.bool,\n  /**\n   * The icon that displays the arrow.\n   * @default ArrowDropDownIcon\n   */\n  IconComponent: PropTypes.elementType,\n  /**\n   * The `id` of the wrapper element or the `select` element when `native`.\n   */\n  id: PropTypes.string,\n  /**\n   * An `Input` element; does not have to be a material-ui specific `Input`.\n   */\n  input: PropTypes.element,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   * When `native` is `true`, the attributes are applied on the `select` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * See [OutlinedInput#label](/material-ui/api/outlined-input/#props)\n   */\n  label: PropTypes.node,\n  /**\n   * The ID of an element that acts as an additional label. The Select will\n   * be labelled by the additional label and the selected value.\n   */\n  labelId: PropTypes.string,\n  /**\n   * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n   */\n  MenuProps: PropTypes.object,\n  /**\n   * If `true`, `value` must be an array and the menu will support multiple selections.\n   * @default false\n   */\n  multiple: PropTypes.bool,\n  /**\n   * If `true`, the component uses a native `select` element.\n   * @default false\n   */\n  native: PropTypes.bool,\n  /**\n   * Callback fired when a menu item is selected.\n   *\n   * @param {SelectChangeEvent<Value>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (any).\n   * **Warning**: This is a generic event, not a change event, unless the change event is caused by browser autofill.\n   * @param {object} [child] The react element that was selected when `native` is `false` (default).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be closed.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select collapses).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onClose: PropTypes.func,\n  /**\n   * Callback fired when the component requests to be opened.\n   * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select expands).\n   *\n   * @param {object} event The event source of the callback.\n   */\n  onOpen: PropTypes.func,\n  /**\n   * If `true`, the component is shown.\n   * You can only use it when the `native` prop is `false` (default).\n   */\n  open: PropTypes.bool,\n  /**\n   * Render the selected value.\n   * You can only use it when the `native` prop is `false` (default).\n   *\n   * @param {any} value The `value` provided to the component.\n   * @returns {ReactNode}\n   */\n  renderValue: PropTypes.func,\n  /**\n   * Props applied to the clickable div element.\n   */\n  SelectDisplayProps: PropTypes.object,\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The `input` value. Providing an empty string will select no options.\n   * Set to an empty string `''` if you don't want any of the available options to be selected.\n   *\n   * If the value is an object it must have reference equality with the option in order to be selected.\n   * If the value is not an object, the string representation must match with the string representation of the option in order to be selected.\n   */\n  value: PropTypes.oneOfType([PropTypes.oneOf(['']), PropTypes.any]),\n  /**\n   * The variant to use.\n   * @default 'outlined'\n   */\n  variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nSelect.muiName = 'Select';\nexport default Select;","import React, { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\n\nimport { useDialogContext, useDialogActions } from './dialogContext';\n\nexport const NewWindow = (props: React.PropsWithChildren) => {\n  const newWindow = useRef<Window>(null);\n  const [popup, setPopup] = useState<Window | null>(null);\n  const { setContainer, onClose } = useDialogActions();\n  const container = useDialogContext((c) => c.container);\n\n  useEffect(() => {\n    // Create container element on client-side\n    const div = document.createElement('div');\n    div.style.width = '100vw';\n    div.style.height = '100vh';\n    div.style.position = 'relative';\n    setContainer(div);\n  }, []);\n\n  useEffect(() => {\n    // When container is ready\n    if (container) {\n      // Create window\n      const win = window.open('', '', 'width=600,height=600,left=200,top=200');\n\n      if (!win) {\n        return;\n      }\n\n      win.document.title = 'Tolgee - Translate Text';\n      if (!win.document) {\n        alert('Please allow popups to open new window.');\n      }\n      // @ts-ignore\n      newWindow.current = win;\n      // Append container\n      win.document.body.style.margin = '0px';\n      win.document.body.appendChild(container);\n\n      const onExit = () => {\n        setContainer(undefined);\n        win.close();\n        onClose();\n      };\n\n      win.onbeforeunload = () => {\n        setContainer(undefined);\n        onClose();\n      };\n\n      const onKeyDown = (e: KeyboardEvent) => {\n        if (e.key === 'Escape') {\n          onClose();\n        }\n      };\n\n      const onBeforeUnload = () => {\n        onExit();\n      };\n\n      win.document.addEventListener('keydown', onKeyDown, true);\n      window.addEventListener('beforeunload', onBeforeUnload, true);\n      setPopup(win);\n\n      return () => {\n        win.document.removeEventListener('keydown', onKeyDown, true);\n        window.removeEventListener('beforeunload', onBeforeUnload, true);\n        setContainer(undefined);\n        newWindow.current?.close();\n        setPopup(null);\n      };\n    }\n  }, [container]);\n\n  useEffect(() => {\n    popup?.focus();\n  });\n\n  const styleCache: any = React.useMemo(() => {\n    // styles insertion point in popup head\n    const head = popup?.document.head;\n    return createCache({\n      key: 'external',\n      container: head,\n      prepend: true,\n    });\n  }, [popup]);\n\n  return popup && container\n    ? createPortal(\n        <CacheProvider value={styleCache}>{props.children}</CacheProvider>,\n        container\n      )\n    : null;\n};\n","import React from 'react';\nimport { Dialog } from '@mui/material';\n\nimport { useDialogContext, useDialogActions } from './dialogContext';\nimport { NewWindow } from './NewWindow';\nimport { DEVTOOLS_Z_INDEX } from '../../constants';\n\nexport const TranslationDialogWrapper = ({\n  children,\n}: React.PropsWithChildren) => {\n  const { onClose } = useDialogActions();\n  const useBrowserWindow = useDialogContext((c) => c.useBrowserWindow);\n  const takingScreenshot = useDialogContext((c) => c.takingScreenshot);\n\n  return (\n    <>\n      {useBrowserWindow ? (\n        <NewWindow>{children}</NewWindow>\n      ) : (\n        <Dialog\n          disableRestoreFocus\n          disableEnforceFocus\n          disablePortal\n          open={true}\n          onClose={onClose}\n          aria-labelledby=\"form-dialog-title\"\n          maxWidth=\"lg\"\n          PaperProps={{ sx: { borderRadius: '24px' } }}\n          style={{\n            zIndex: DEVTOOLS_Z_INDEX,\n\n            visibility: takingScreenshot ? 'hidden' : 'visible',\n          }}\n        >\n          <>{children}</>\n        </Dialog>\n      )}\n    </>\n  );\n};\n","export const editorTheme = {\n  variable: {\n    border: '#7AD3C1',\n    background: '#BEF3E9',\n    text: '#008371',\n  },\n  tag: {\n    border: '#F27FA6',\n    background: '#F9C4D6',\n    text: '#822343',\n  },\n  variant: {\n    border: '#BBC2CB',\n    background: '#F0F2F4',\n    text: '#4D5B6E',\n  },\n};\n","import React, { useMemo } from 'react';\nimport { styled } from '@mui/material';\nimport {\n  TolgeeFormat,\n  getVariantExample,\n  getPluralVariants,\n} from '@tginternal/editor';\n\nimport { editorTheme } from './editorTheme';\n\nconst StyledContainer = styled('div')`\n  display: grid;\n  gap: 2px;\n`;\n\nconst StyledContainerSimple = styled('div')`\n  padding-top: 4px;\n`;\n\nconst StyledVariants = styled('div')`\n  display: grid;\n  grid-template-columns: 56px 1fr;\n  gap: 8px;\n`;\n\nconst StyledParameter = styled('div')`\n  color: ${({ theme }) => theme.palette.text.secondary};\n  font-size: 14px;\n`;\n\nconst StyledVariantLabel = styled('div')`\n  box-sizing: border-box;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  height: 24px;\n  border: 1px solid ${editorTheme.variant.border};\n  background-color: ${editorTheme.variant.background};\n  color: ${editorTheme.variant.text};\n  border-radius: 12px;\n  padding: 0px 9px;\n  font-size: 14px;\n  user-select: none;\n  margin: 0px 1px;\n  text-transform: capitalize;\n  white-space: nowrap;\n  & > * {\n    margin-top: -1px;\n  }\n`;\n\nconst StyledVariantContent = styled('div')`\n  display: block;\n`;\n\ntype RenderProps = {\n  content: string;\n  variant: string | undefined;\n  locale: string;\n  exampleValue?: number;\n};\n\ntype Props = {\n  locale: string;\n  value: TolgeeFormat;\n  render: (props: RenderProps) => React.ReactNode;\n  showEmpty?: boolean;\n  activeVariant?: string;\n  variantPaddingTop?: number | string;\n};\n\nexport const TranslationPlurals = ({\n  locale,\n  render,\n  value,\n  showEmpty,\n  activeVariant,\n  variantPaddingTop,\n}: Props) => {\n  const variants = useMemo(() => {\n    const existing = new Set(Object.keys(value.variants));\n    const required = getPluralVariants(locale);\n    required.forEach((val) => existing.delete(val));\n    const result = Array.from(existing).map((value) => {\n      return [value, getVariantExample(locale, value)] as const;\n    });\n    required.forEach((value) => {\n      result.push([value, getVariantExample(locale, value)]);\n    });\n    return result;\n  }, [locale]);\n\n  if (value.parameter) {\n    return (\n      <StyledContainer>\n        <StyledParameter data-cy=\"translation-plural-parameter\">\n          {value.parameter}\n        </StyledParameter>\n        <StyledVariants>\n          {variants\n            .filter(\n              ([variant]) =>\n                showEmpty || value.variants[variant as Intl.LDMLPluralRule]\n            )\n            .map(([variant, exampleValue]) => {\n              const inactive = activeVariant && activeVariant !== variant;\n              const opacity = inactive ? 0.5 : 1;\n              return (\n                <React.Fragment key={variant}>\n                  <StyledVariantLabel\n                    sx={{ opacity, marginTop: variantPaddingTop }}\n                  >\n                    <div>{variant}</div>\n                  </StyledVariantLabel>\n                  <StyledVariantContent\n                    sx={{ opacity }}\n                    data-cy=\"translation-plural-variant\"\n                  >\n                    {render({\n                      variant: variant,\n                      content:\n                        value.variants[variant as Intl.LDMLPluralRule] || '',\n                      exampleValue: exampleValue,\n                      locale,\n                    })}\n                  </StyledVariantContent>\n                </React.Fragment>\n              );\n            })}\n        </StyledVariants>\n      </StyledContainer>\n    );\n  }\n  return (\n    <StyledContainerSimple>\n      {render({\n        content: value.variants['other'] ?? '',\n        locale,\n        variant: undefined,\n      })}\n    </StyledContainerSimple>\n  );\n};\n","import React from 'react';\nimport { styled } from '@mui/material';\n\nconst StyledEditorWrapper = styled('div')`\n  border: 1px solid\n    ${({ theme }) => (theme.palette.mode === 'dark' ? '#535e6c' : '#B5B5B5')};\n  overflow: hidden;\n  border-radius: 4px;\n  cursor: text;\n  background: ${({ theme }) => theme.palette.background.default};\n  padding: 1px;\n\n  &:hover {\n    border: 1px solid ${({ theme }) => theme.palette.grey[700]};\n  }\n\n  &:focus-within {\n    border-color: ${({ theme }) => theme.palette.grey[900]};\n  }\n\n  & > * {\n    padding: 8px 10px;\n  }\n`;\n\ntype Props = React.DetailedHTMLProps<\n  React.HTMLAttributes<HTMLDivElement>,\n  HTMLDivElement\n>;\n\nexport const EditorWrapper = ({ children, ...props }: Props) => {\n  const handleClick: React.MouseEventHandler<HTMLDivElement> = (e) => {\n    const editor = (e.target as HTMLDivElement).querySelector('.cm-content') as\n      | HTMLDivElement\n      | undefined;\n    editor?.focus();\n  };\n\n  return (\n    <StyledEditorWrapper\n      onMouseDown={(e) => e.preventDefault()}\n      onClick={handleClick}\n      {...props}\n    >\n      {children}\n    </StyledEditorWrapper>\n  );\n};\n","/**\nThe default maximum length of a `TreeBuffer` node.\n*/\nconst DefaultBufferLength = 1024;\nlet nextPropID = 0;\nclass Range {\n    constructor(from, to) {\n        this.from = from;\n        this.to = to;\n    }\n}\n/**\nEach [node type](#common.NodeType) or [individual tree](#common.Tree)\ncan have metadata associated with it in props. Instances of this\nclass represent prop names.\n*/\nclass NodeProp {\n    /**\n    Create a new node prop type.\n    */\n    constructor(config = {}) {\n        this.id = nextPropID++;\n        this.perNode = !!config.perNode;\n        this.deserialize = config.deserialize || (() => {\n            throw new Error(\"This node type doesn't define a deserialize function\");\n        });\n    }\n    /**\n    This is meant to be used with\n    [`NodeSet.extend`](#common.NodeSet.extend) or\n    [`LRParser.configure`](#lr.ParserConfig.props) to compute\n    prop values for each node type in the set. Takes a [match\n    object](#common.NodeType^match) or function that returns undefined\n    if the node type doesn't get this prop, and the prop's value if\n    it does.\n    */\n    add(match) {\n        if (this.perNode)\n            throw new RangeError(\"Can't add per-node props to node types\");\n        if (typeof match != \"function\")\n            match = NodeType.match(match);\n        return (type) => {\n            let result = match(type);\n            return result === undefined ? null : [this, result];\n        };\n    }\n}\n/**\nProp that is used to describe matching delimiters. For opening\ndelimiters, this holds an array of node names (written as a\nspace-separated string when declaring this prop in a grammar)\nfor the node types of closing delimiters that match it.\n*/\nNodeProp.closedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nThe inverse of [`closedBy`](#common.NodeProp^closedBy). This is\nattached to closing delimiters, holding an array of node names\nof types of matching opening delimiters.\n*/\nNodeProp.openedBy = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nUsed to assign node types to groups (for example, all node\ntypes that represent an expression could be tagged with an\n`\"Expression\"` group).\n*/\nNodeProp.group = new NodeProp({ deserialize: str => str.split(\" \") });\n/**\nAttached to nodes to indicate these should be\n[displayed](https://codemirror.net/docs/ref/#language.syntaxTree)\nin a bidirectional text isolate, so that direction-neutral\ncharacters on their sides don't incorrectly get associated with\nsurrounding text. You'll generally want to set this for nodes\nthat contain arbitrary text, like strings and comments, and for\nnodes that appear _inside_ arbitrary text, like HTML tags. When\nnot given a value, in a grammar declaration, defaults to\n`\"auto\"`.\n*/\nNodeProp.isolate = new NodeProp({ deserialize: value => {\n        if (value && value != \"rtl\" && value != \"ltr\" && value != \"auto\")\n            throw new RangeError(\"Invalid value for isolate: \" + value);\n        return value || \"auto\";\n    } });\n/**\nThe hash of the [context](#lr.ContextTracker.constructor)\nthat the node was parsed in, if any. Used to limit reuse of\ncontextual nodes.\n*/\nNodeProp.contextHash = new NodeProp({ perNode: true });\n/**\nThe distance beyond the end of the node that the tokenizer\nlooked ahead for any of the tokens inside the node. (The LR\nparser only stores this when it is larger than 25, for\nefficiency reasons.)\n*/\nNodeProp.lookAhead = new NodeProp({ perNode: true });\n/**\nThis per-node prop is used to replace a given node, or part of a\nnode, with another tree. This is useful to include trees from\ndifferent languages in mixed-language parsers.\n*/\nNodeProp.mounted = new NodeProp({ perNode: true });\n/**\nA mounted tree, which can be [stored](#common.NodeProp^mounted) on\na tree node to indicate that parts of its content are\nrepresented by another tree.\n*/\nclass MountedTree {\n    constructor(\n    /**\n    The inner tree.\n    */\n    tree, \n    /**\n    If this is null, this tree replaces the entire node (it will\n    be included in the regular iteration instead of its host\n    node). If not, only the given ranges are considered to be\n    covered by this tree. This is used for trees that are mixed in\n    a way that isn't strictly hierarchical. Such mounted trees are\n    only entered by [`resolveInner`](#common.Tree.resolveInner)\n    and [`enter`](#common.SyntaxNode.enter).\n    */\n    overlay, \n    /**\n    The parser used to create this subtree.\n    */\n    parser) {\n        this.tree = tree;\n        this.overlay = overlay;\n        this.parser = parser;\n    }\n    /**\n    @internal\n    */\n    static get(tree) {\n        return tree && tree.props && tree.props[NodeProp.mounted.id];\n    }\n}\nconst noProps = Object.create(null);\n/**\nEach node in a syntax tree has a node type associated with it.\n*/\nclass NodeType {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The name of the node type. Not necessarily unique, but if the\n    grammar was written properly, different node types with the\n    same name within a node set should play the same semantic\n    role.\n    */\n    name, \n    /**\n    @internal\n    */\n    props, \n    /**\n    The id of this node in its set. Corresponds to the term ids\n    used in the parser.\n    */\n    id, \n    /**\n    @internal\n    */\n    flags = 0) {\n        this.name = name;\n        this.props = props;\n        this.id = id;\n        this.flags = flags;\n    }\n    /**\n    Define a node type.\n    */\n    static define(spec) {\n        let props = spec.props && spec.props.length ? Object.create(null) : noProps;\n        let flags = (spec.top ? 1 /* NodeFlag.Top */ : 0) | (spec.skipped ? 2 /* NodeFlag.Skipped */ : 0) |\n            (spec.error ? 4 /* NodeFlag.Error */ : 0) | (spec.name == null ? 8 /* NodeFlag.Anonymous */ : 0);\n        let type = new NodeType(spec.name || \"\", props, spec.id, flags);\n        if (spec.props)\n            for (let src of spec.props) {\n                if (!Array.isArray(src))\n                    src = src(type);\n                if (src) {\n                    if (src[0].perNode)\n                        throw new RangeError(\"Can't store a per-node prop on a node type\");\n                    props[src[0].id] = src[1];\n                }\n            }\n        return type;\n    }\n    /**\n    Retrieves a node prop for this type. Will return `undefined` if\n    the prop isn't present on this node.\n    */\n    prop(prop) { return this.props[prop.id]; }\n    /**\n    True when this is the top node of a grammar.\n    */\n    get isTop() { return (this.flags & 1 /* NodeFlag.Top */) > 0; }\n    /**\n    True when this node is produced by a skip rule.\n    */\n    get isSkipped() { return (this.flags & 2 /* NodeFlag.Skipped */) > 0; }\n    /**\n    Indicates whether this is an error node.\n    */\n    get isError() { return (this.flags & 4 /* NodeFlag.Error */) > 0; }\n    /**\n    When true, this node type doesn't correspond to a user-declared\n    named node, for example because it is used to cache repetition.\n    */\n    get isAnonymous() { return (this.flags & 8 /* NodeFlag.Anonymous */) > 0; }\n    /**\n    Returns true when this node's name or one of its\n    [groups](#common.NodeProp^group) matches the given string.\n    */\n    is(name) {\n        if (typeof name == 'string') {\n            if (this.name == name)\n                return true;\n            let group = this.prop(NodeProp.group);\n            return group ? group.indexOf(name) > -1 : false;\n        }\n        return this.id == name;\n    }\n    /**\n    Create a function from node types to arbitrary values by\n    specifying an object whose property names are node or\n    [group](#common.NodeProp^group) names. Often useful with\n    [`NodeProp.add`](#common.NodeProp.add). You can put multiple\n    names, separated by spaces, in a single property name to map\n    multiple node names to a single value.\n    */\n    static match(map) {\n        let direct = Object.create(null);\n        for (let prop in map)\n            for (let name of prop.split(\" \"))\n                direct[name] = map[prop];\n        return (node) => {\n            for (let groups = node.prop(NodeProp.group), i = -1; i < (groups ? groups.length : 0); i++) {\n                let found = direct[i < 0 ? node.name : groups[i]];\n                if (found)\n                    return found;\n            }\n        };\n    }\n}\n/**\nAn empty dummy node type to use when no actual type is available.\n*/\nNodeType.none = new NodeType(\"\", Object.create(null), 0, 8 /* NodeFlag.Anonymous */);\n/**\nA node set holds a collection of node types. It is used to\ncompactly represent trees by storing their type ids, rather than a\nfull pointer to the type object, in a numeric array. Each parser\n[has](#lr.LRParser.nodeSet) a node set, and [tree\nbuffers](#common.TreeBuffer) can only store collections of nodes\nfrom the same set. A set can have a maximum of 2**16 (65536) node\ntypes in it, so that the ids fit into 16-bit typed array slots.\n*/\nclass NodeSet {\n    /**\n    Create a set with the given types. The `id` property of each\n    type should correspond to its position within the array.\n    */\n    constructor(\n    /**\n    The node types in this set, by id.\n    */\n    types) {\n        this.types = types;\n        for (let i = 0; i < types.length; i++)\n            if (types[i].id != i)\n                throw new RangeError(\"Node type ids should correspond to array positions when creating a node set\");\n    }\n    /**\n    Create a copy of this set with some node properties added. The\n    arguments to this method can be created with\n    [`NodeProp.add`](#common.NodeProp.add).\n    */\n    extend(...props) {\n        let newTypes = [];\n        for (let type of this.types) {\n            let newProps = null;\n            for (let source of props) {\n                let add = source(type);\n                if (add) {\n                    if (!newProps)\n                        newProps = Object.assign({}, type.props);\n                    newProps[add[0].id] = add[1];\n                }\n            }\n            newTypes.push(newProps ? new NodeType(type.name, newProps, type.id, type.flags) : type);\n        }\n        return new NodeSet(newTypes);\n    }\n}\nconst CachedNode = new WeakMap(), CachedInnerNode = new WeakMap();\n/**\nOptions that control iteration. Can be combined with the `|`\noperator to enable multiple ones.\n*/\nvar IterMode;\n(function (IterMode) {\n    /**\n    When enabled, iteration will only visit [`Tree`](#common.Tree)\n    objects, not nodes packed into\n    [`TreeBuffer`](#common.TreeBuffer)s.\n    */\n    IterMode[IterMode[\"ExcludeBuffers\"] = 1] = \"ExcludeBuffers\";\n    /**\n    Enable this to make iteration include anonymous nodes (such as\n    the nodes that wrap repeated grammar constructs into a balanced\n    tree).\n    */\n    IterMode[IterMode[\"IncludeAnonymous\"] = 2] = \"IncludeAnonymous\";\n    /**\n    By default, regular [mounted](#common.NodeProp^mounted) nodes\n    replace their base node in iteration. Enable this to ignore them\n    instead.\n    */\n    IterMode[IterMode[\"IgnoreMounts\"] = 4] = \"IgnoreMounts\";\n    /**\n    This option only applies in\n    [`enter`](#common.SyntaxNode.enter)-style methods. It tells the\n    library to not enter mounted overlays if one covers the given\n    position.\n    */\n    IterMode[IterMode[\"IgnoreOverlays\"] = 8] = \"IgnoreOverlays\";\n})(IterMode || (IterMode = {}));\n/**\nA piece of syntax tree. There are two ways to approach these\ntrees: the way they are actually stored in memory, and the\nconvenient way.\n\nSyntax trees are stored as a tree of `Tree` and `TreeBuffer`\nobjects. By packing detail information into `TreeBuffer` leaf\nnodes, the representation is made a lot more memory-efficient.\n\nHowever, when you want to actually work with tree nodes, this\nrepresentation is very awkward, so most client code will want to\nuse the [`TreeCursor`](#common.TreeCursor) or\n[`SyntaxNode`](#common.SyntaxNode) interface instead, which provides\na view on some part of this data structure, and can be used to\nmove around to adjacent nodes.\n*/\nclass Tree {\n    /**\n    Construct a new tree. See also [`Tree.build`](#common.Tree^build).\n    */\n    constructor(\n    /**\n    The type of the top node.\n    */\n    type, \n    /**\n    This node's child nodes.\n    */\n    children, \n    /**\n    The positions (offsets relative to the start of this tree) of\n    the children.\n    */\n    positions, \n    /**\n    The total length of this tree\n    */\n    length, \n    /**\n    Per-node [node props](#common.NodeProp) to associate with this node.\n    */\n    props) {\n        this.type = type;\n        this.children = children;\n        this.positions = positions;\n        this.length = length;\n        /**\n        @internal\n        */\n        this.props = null;\n        if (props && props.length) {\n            this.props = Object.create(null);\n            for (let [prop, value] of props)\n                this.props[typeof prop == \"number\" ? prop : prop.id] = value;\n        }\n    }\n    /**\n    @internal\n    */\n    toString() {\n        let mounted = MountedTree.get(this);\n        if (mounted && !mounted.overlay)\n            return mounted.tree.toString();\n        let children = \"\";\n        for (let ch of this.children) {\n            let str = ch.toString();\n            if (str) {\n                if (children)\n                    children += \",\";\n                children += str;\n            }\n        }\n        return !this.type.name ? children :\n            (/\\W/.test(this.type.name) && !this.type.isError ? JSON.stringify(this.type.name) : this.type.name) +\n                (children.length ? \"(\" + children + \")\" : \"\");\n    }\n    /**\n    Get a [tree cursor](#common.TreeCursor) positioned at the top of\n    the tree. Mode can be used to [control](#common.IterMode) which\n    nodes the cursor visits.\n    */\n    cursor(mode = 0) {\n        return new TreeCursor(this.topNode, mode);\n    }\n    /**\n    Get a [tree cursor](#common.TreeCursor) pointing into this tree\n    at the given position and side (see\n    [`moveTo`](#common.TreeCursor.moveTo).\n    */\n    cursorAt(pos, side = 0, mode = 0) {\n        let scope = CachedNode.get(this) || this.topNode;\n        let cursor = new TreeCursor(scope);\n        cursor.moveTo(pos, side);\n        CachedNode.set(this, cursor._tree);\n        return cursor;\n    }\n    /**\n    Get a [syntax node](#common.SyntaxNode) object for the top of the\n    tree.\n    */\n    get topNode() {\n        return new TreeNode(this, 0, 0, null);\n    }\n    /**\n    Get the [syntax node](#common.SyntaxNode) at the given position.\n    If `side` is -1, this will move into nodes that end at the\n    position. If 1, it'll move into nodes that start at the\n    position. With 0, it'll only enter nodes that cover the position\n    from both sides.\n    \n    Note that this will not enter\n    [overlays](#common.MountedTree.overlay), and you often want\n    [`resolveInner`](#common.Tree.resolveInner) instead.\n    */\n    resolve(pos, side = 0) {\n        let node = resolveNode(CachedNode.get(this) || this.topNode, pos, side, false);\n        CachedNode.set(this, node);\n        return node;\n    }\n    /**\n    Like [`resolve`](#common.Tree.resolve), but will enter\n    [overlaid](#common.MountedTree.overlay) nodes, producing a syntax node\n    pointing into the innermost overlaid tree at the given position\n    (with parent links going through all parent structure, including\n    the host trees).\n    */\n    resolveInner(pos, side = 0) {\n        let node = resolveNode(CachedInnerNode.get(this) || this.topNode, pos, side, true);\n        CachedInnerNode.set(this, node);\n        return node;\n    }\n    /**\n    In some situations, it can be useful to iterate through all\n    nodes around a position, including those in overlays that don't\n    directly cover the position. This method gives you an iterator\n    that will produce all nodes, from small to big, around the given\n    position.\n    */\n    resolveStack(pos, side = 0) {\n        return stackIterator(this, pos, side);\n    }\n    /**\n    Iterate over the tree and its children, calling `enter` for any\n    node that touches the `from`/`to` region (if given) before\n    running over such a node's children, and `leave` (if given) when\n    leaving the node. When `enter` returns `false`, that node will\n    not have its children iterated over (or `leave` called).\n    */\n    iterate(spec) {\n        let { enter, leave, from = 0, to = this.length } = spec;\n        let mode = spec.mode || 0, anon = (mode & IterMode.IncludeAnonymous) > 0;\n        for (let c = this.cursor(mode | IterMode.IncludeAnonymous);;) {\n            let entered = false;\n            if (c.from <= to && c.to >= from && (!anon && c.type.isAnonymous || enter(c) !== false)) {\n                if (c.firstChild())\n                    continue;\n                entered = true;\n            }\n            for (;;) {\n                if (entered && leave && (anon || !c.type.isAnonymous))\n                    leave(c);\n                if (c.nextSibling())\n                    break;\n                if (!c.parent())\n                    return;\n                entered = true;\n            }\n        }\n    }\n    /**\n    Get the value of the given [node prop](#common.NodeProp) for this\n    node. Works with both per-node and per-type props.\n    */\n    prop(prop) {\n        return !prop.perNode ? this.type.prop(prop) : this.props ? this.props[prop.id] : undefined;\n    }\n    /**\n    Returns the node's [per-node props](#common.NodeProp.perNode) in a\n    format that can be passed to the [`Tree`](#common.Tree)\n    constructor.\n    */\n    get propValues() {\n        let result = [];\n        if (this.props)\n            for (let id in this.props)\n                result.push([+id, this.props[id]]);\n        return result;\n    }\n    /**\n    Balance the direct children of this tree, producing a copy of\n    which may have children grouped into subtrees with type\n    [`NodeType.none`](#common.NodeType^none).\n    */\n    balance(config = {}) {\n        return this.children.length <= 8 /* Balance.BranchFactor */ ? this :\n            balanceRange(NodeType.none, this.children, this.positions, 0, this.children.length, 0, this.length, (children, positions, length) => new Tree(this.type, children, positions, length, this.propValues), config.makeTree || ((children, positions, length) => new Tree(NodeType.none, children, positions, length)));\n    }\n    /**\n    Build a tree from a postfix-ordered buffer of node information,\n    or a cursor over such a buffer.\n    */\n    static build(data) { return buildTree(data); }\n}\n/**\nThe empty tree\n*/\nTree.empty = new Tree(NodeType.none, [], [], 0);\nclass FlatBufferCursor {\n    constructor(buffer, index) {\n        this.buffer = buffer;\n        this.index = index;\n    }\n    get id() { return this.buffer[this.index - 4]; }\n    get start() { return this.buffer[this.index - 3]; }\n    get end() { return this.buffer[this.index - 2]; }\n    get size() { return this.buffer[this.index - 1]; }\n    get pos() { return this.index; }\n    next() { this.index -= 4; }\n    fork() { return new FlatBufferCursor(this.buffer, this.index); }\n}\n/**\nTree buffers contain (type, start, end, endIndex) quads for each\nnode. In such a buffer, nodes are stored in prefix order (parents\nbefore children, with the endIndex of the parent indicating which\nchildren belong to it).\n*/\nclass TreeBuffer {\n    /**\n    Create a tree buffer.\n    */\n    constructor(\n    /**\n    The buffer's content.\n    */\n    buffer, \n    /**\n    The total length of the group of nodes in the buffer.\n    */\n    length, \n    /**\n    The node set used in this buffer.\n    */\n    set) {\n        this.buffer = buffer;\n        this.length = length;\n        this.set = set;\n    }\n    /**\n    @internal\n    */\n    get type() { return NodeType.none; }\n    /**\n    @internal\n    */\n    toString() {\n        let result = [];\n        for (let index = 0; index < this.buffer.length;) {\n            result.push(this.childString(index));\n            index = this.buffer[index + 3];\n        }\n        return result.join(\",\");\n    }\n    /**\n    @internal\n    */\n    childString(index) {\n        let id = this.buffer[index], endIndex = this.buffer[index + 3];\n        let type = this.set.types[id], result = type.name;\n        if (/\\W/.test(result) && !type.isError)\n            result = JSON.stringify(result);\n        index += 4;\n        if (endIndex == index)\n            return result;\n        let children = [];\n        while (index < endIndex) {\n            children.push(this.childString(index));\n            index = this.buffer[index + 3];\n        }\n        return result + \"(\" + children.join(\",\") + \")\";\n    }\n    /**\n    @internal\n    */\n    findChild(startIndex, endIndex, dir, pos, side) {\n        let { buffer } = this, pick = -1;\n        for (let i = startIndex; i != endIndex; i = buffer[i + 3]) {\n            if (checkSide(side, pos, buffer[i + 1], buffer[i + 2])) {\n                pick = i;\n                if (dir > 0)\n                    break;\n            }\n        }\n        return pick;\n    }\n    /**\n    @internal\n    */\n    slice(startI, endI, from) {\n        let b = this.buffer;\n        let copy = new Uint16Array(endI - startI), len = 0;\n        for (let i = startI, j = 0; i < endI;) {\n            copy[j++] = b[i++];\n            copy[j++] = b[i++] - from;\n            let to = copy[j++] = b[i++] - from;\n            copy[j++] = b[i++] - startI;\n            len = Math.max(len, to);\n        }\n        return new TreeBuffer(copy, len, this.set);\n    }\n}\nfunction checkSide(side, pos, from, to) {\n    switch (side) {\n        case -2 /* Side.Before */: return from < pos;\n        case -1 /* Side.AtOrBefore */: return to >= pos && from < pos;\n        case 0 /* Side.Around */: return from < pos && to > pos;\n        case 1 /* Side.AtOrAfter */: return from <= pos && to > pos;\n        case 2 /* Side.After */: return to > pos;\n        case 4 /* Side.DontCare */: return true;\n    }\n}\nfunction resolveNode(node, pos, side, overlays) {\n    var _a;\n    // Move up to a node that actually holds the position, if possible\n    while (node.from == node.to ||\n        (side < 1 ? node.from >= pos : node.from > pos) ||\n        (side > -1 ? node.to <= pos : node.to < pos)) {\n        let parent = !overlays && node instanceof TreeNode && node.index < 0 ? null : node.parent;\n        if (!parent)\n            return node;\n        node = parent;\n    }\n    let mode = overlays ? 0 : IterMode.IgnoreOverlays;\n    // Must go up out of overlays when those do not overlap with pos\n    if (overlays)\n        for (let scan = node, parent = scan.parent; parent; scan = parent, parent = scan.parent) {\n            if (scan instanceof TreeNode && scan.index < 0 && ((_a = parent.enter(pos, side, mode)) === null || _a === void 0 ? void 0 : _a.from) != scan.from)\n                node = parent;\n        }\n    for (;;) {\n        let inner = node.enter(pos, side, mode);\n        if (!inner)\n            return node;\n        node = inner;\n    }\n}\nclass BaseNode {\n    cursor(mode = 0) { return new TreeCursor(this, mode); }\n    getChild(type, before = null, after = null) {\n        let r = getChildren(this, type, before, after);\n        return r.length ? r[0] : null;\n    }\n    getChildren(type, before = null, after = null) {\n        return getChildren(this, type, before, after);\n    }\n    resolve(pos, side = 0) {\n        return resolveNode(this, pos, side, false);\n    }\n    resolveInner(pos, side = 0) {\n        return resolveNode(this, pos, side, true);\n    }\n    matchContext(context) {\n        return matchNodeContext(this, context);\n    }\n    enterUnfinishedNodesBefore(pos) {\n        let scan = this.childBefore(pos), node = this;\n        while (scan) {\n            let last = scan.lastChild;\n            if (!last || last.to != scan.to)\n                break;\n            if (last.type.isError && last.from == last.to) {\n                node = scan;\n                scan = last.prevSibling;\n            }\n            else {\n                scan = last;\n            }\n        }\n        return node;\n    }\n    get node() { return this; }\n    get next() { return this.parent; }\n}\nclass TreeNode extends BaseNode {\n    constructor(_tree, from, \n    // Index in parent node, set to -1 if the node is not a direct child of _parent.node (overlay)\n    index, _parent) {\n        super();\n        this._tree = _tree;\n        this.from = from;\n        this.index = index;\n        this._parent = _parent;\n    }\n    get type() { return this._tree.type; }\n    get name() { return this._tree.type.name; }\n    get to() { return this.from + this._tree.length; }\n    nextChild(i, dir, pos, side, mode = 0) {\n        for (let parent = this;;) {\n            for (let { children, positions } = parent._tree, e = dir > 0 ? children.length : -1; i != e; i += dir) {\n                let next = children[i], start = positions[i] + parent.from;\n                if (!checkSide(side, pos, start, start + next.length))\n                    continue;\n                if (next instanceof TreeBuffer) {\n                    if (mode & IterMode.ExcludeBuffers)\n                        continue;\n                    let index = next.findChild(0, next.buffer.length, dir, pos - start, side);\n                    if (index > -1)\n                        return new BufferNode(new BufferContext(parent, next, i, start), null, index);\n                }\n                else if ((mode & IterMode.IncludeAnonymous) || (!next.type.isAnonymous || hasChild(next))) {\n                    let mounted;\n                    if (!(mode & IterMode.IgnoreMounts) && (mounted = MountedTree.get(next)) && !mounted.overlay)\n                        return new TreeNode(mounted.tree, start, i, parent);\n                    let inner = new TreeNode(next, start, i, parent);\n                    return (mode & IterMode.IncludeAnonymous) || !inner.type.isAnonymous ? inner\n                        : inner.nextChild(dir < 0 ? next.children.length - 1 : 0, dir, pos, side);\n                }\n            }\n            if ((mode & IterMode.IncludeAnonymous) || !parent.type.isAnonymous)\n                return null;\n            if (parent.index >= 0)\n                i = parent.index + dir;\n            else\n                i = dir < 0 ? -1 : parent._parent._tree.children.length;\n            parent = parent._parent;\n            if (!parent)\n                return null;\n        }\n    }\n    get firstChild() { return this.nextChild(0, 1, 0, 4 /* Side.DontCare */); }\n    get lastChild() { return this.nextChild(this._tree.children.length - 1, -1, 0, 4 /* Side.DontCare */); }\n    childAfter(pos) { return this.nextChild(0, 1, pos, 2 /* Side.After */); }\n    childBefore(pos) { return this.nextChild(this._tree.children.length - 1, -1, pos, -2 /* Side.Before */); }\n    enter(pos, side, mode = 0) {\n        let mounted;\n        if (!(mode & IterMode.IgnoreOverlays) && (mounted = MountedTree.get(this._tree)) && mounted.overlay) {\n            let rPos = pos - this.from;\n            for (let { from, to } of mounted.overlay) {\n                if ((side > 0 ? from <= rPos : from < rPos) &&\n                    (side < 0 ? to >= rPos : to > rPos))\n                    return new TreeNode(mounted.tree, mounted.overlay[0].from + this.from, -1, this);\n            }\n        }\n        return this.nextChild(0, 1, pos, side, mode);\n    }\n    nextSignificantParent() {\n        let val = this;\n        while (val.type.isAnonymous && val._parent)\n            val = val._parent;\n        return val;\n    }\n    get parent() {\n        return this._parent ? this._parent.nextSignificantParent() : null;\n    }\n    get nextSibling() {\n        return this._parent && this.index >= 0 ? this._parent.nextChild(this.index + 1, 1, 0, 4 /* Side.DontCare */) : null;\n    }\n    get prevSibling() {\n        return this._parent && this.index >= 0 ? this._parent.nextChild(this.index - 1, -1, 0, 4 /* Side.DontCare */) : null;\n    }\n    get tree() { return this._tree; }\n    toTree() { return this._tree; }\n    /**\n    @internal\n    */\n    toString() { return this._tree.toString(); }\n}\nfunction getChildren(node, type, before, after) {\n    let cur = node.cursor(), result = [];\n    if (!cur.firstChild())\n        return result;\n    if (before != null)\n        for (let found = false; !found;) {\n            found = cur.type.is(before);\n            if (!cur.nextSibling())\n                return result;\n        }\n    for (;;) {\n        if (after != null && cur.type.is(after))\n            return result;\n        if (cur.type.is(type))\n            result.push(cur.node);\n        if (!cur.nextSibling())\n            return after == null ? result : [];\n    }\n}\nfunction matchNodeContext(node, context, i = context.length - 1) {\n    for (let p = node.parent; i >= 0; p = p.parent) {\n        if (!p)\n            return false;\n        if (!p.type.isAnonymous) {\n            if (context[i] && context[i] != p.name)\n                return false;\n            i--;\n        }\n    }\n    return true;\n}\nclass BufferContext {\n    constructor(parent, buffer, index, start) {\n        this.parent = parent;\n        this.buffer = buffer;\n        this.index = index;\n        this.start = start;\n    }\n}\nclass BufferNode extends BaseNode {\n    get name() { return this.type.name; }\n    get from() { return this.context.start + this.context.buffer.buffer[this.index + 1]; }\n    get to() { return this.context.start + this.context.buffer.buffer[this.index + 2]; }\n    constructor(context, _parent, index) {\n        super();\n        this.context = context;\n        this._parent = _parent;\n        this.index = index;\n        this.type = context.buffer.set.types[context.buffer.buffer[index]];\n    }\n    child(dir, pos, side) {\n        let { buffer } = this.context;\n        let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.context.start, side);\n        return index < 0 ? null : new BufferNode(this.context, this, index);\n    }\n    get firstChild() { return this.child(1, 0, 4 /* Side.DontCare */); }\n    get lastChild() { return this.child(-1, 0, 4 /* Side.DontCare */); }\n    childAfter(pos) { return this.child(1, pos, 2 /* Side.After */); }\n    childBefore(pos) { return this.child(-1, pos, -2 /* Side.Before */); }\n    enter(pos, side, mode = 0) {\n        if (mode & IterMode.ExcludeBuffers)\n            return null;\n        let { buffer } = this.context;\n        let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], side > 0 ? 1 : -1, pos - this.context.start, side);\n        return index < 0 ? null : new BufferNode(this.context, this, index);\n    }\n    get parent() {\n        return this._parent || this.context.parent.nextSignificantParent();\n    }\n    externalSibling(dir) {\n        return this._parent ? null : this.context.parent.nextChild(this.context.index + dir, dir, 0, 4 /* Side.DontCare */);\n    }\n    get nextSibling() {\n        let { buffer } = this.context;\n        let after = buffer.buffer[this.index + 3];\n        if (after < (this._parent ? buffer.buffer[this._parent.index + 3] : buffer.buffer.length))\n            return new BufferNode(this.context, this._parent, after);\n        return this.externalSibling(1);\n    }\n    get prevSibling() {\n        let { buffer } = this.context;\n        let parentStart = this._parent ? this._parent.index + 4 : 0;\n        if (this.index == parentStart)\n            return this.externalSibling(-1);\n        return new BufferNode(this.context, this._parent, buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n    }\n    get tree() { return null; }\n    toTree() {\n        let children = [], positions = [];\n        let { buffer } = this.context;\n        let startI = this.index + 4, endI = buffer.buffer[this.index + 3];\n        if (endI > startI) {\n            let from = buffer.buffer[this.index + 1];\n            children.push(buffer.slice(startI, endI, from));\n            positions.push(0);\n        }\n        return new Tree(this.type, children, positions, this.to - this.from);\n    }\n    /**\n    @internal\n    */\n    toString() { return this.context.buffer.childString(this.index); }\n}\nfunction iterStack(heads) {\n    if (!heads.length)\n        return null;\n    let pick = 0, picked = heads[0];\n    for (let i = 1; i < heads.length; i++) {\n        let node = heads[i];\n        if (node.from > picked.from || node.to < picked.to) {\n            picked = node;\n            pick = i;\n        }\n    }\n    let next = picked instanceof TreeNode && picked.index < 0 ? null : picked.parent;\n    let newHeads = heads.slice();\n    if (next)\n        newHeads[pick] = next;\n    else\n        newHeads.splice(pick, 1);\n    return new StackIterator(newHeads, picked);\n}\nclass StackIterator {\n    constructor(heads, node) {\n        this.heads = heads;\n        this.node = node;\n    }\n    get next() { return iterStack(this.heads); }\n}\nfunction stackIterator(tree, pos, side) {\n    let inner = tree.resolveInner(pos, side), layers = null;\n    for (let scan = inner instanceof TreeNode ? inner : inner.context.parent; scan; scan = scan.parent) {\n        if (scan.index < 0) { // This is an overlay root\n            let parent = scan.parent;\n            (layers || (layers = [inner])).push(parent.resolve(pos, side));\n            scan = parent;\n        }\n        else {\n            let mount = MountedTree.get(scan.tree);\n            // Relevant overlay branching off\n            if (mount && mount.overlay && mount.overlay[0].from <= pos && mount.overlay[mount.overlay.length - 1].to >= pos) {\n                let root = new TreeNode(mount.tree, mount.overlay[0].from + scan.from, -1, scan);\n                (layers || (layers = [inner])).push(resolveNode(root, pos, side, false));\n            }\n        }\n    }\n    return layers ? iterStack(layers) : inner;\n}\n/**\nA tree cursor object focuses on a given node in a syntax tree, and\nallows you to move to adjacent nodes.\n*/\nclass TreeCursor {\n    /**\n    Shorthand for `.type.name`.\n    */\n    get name() { return this.type.name; }\n    /**\n    @internal\n    */\n    constructor(node, \n    /**\n    @internal\n    */\n    mode = 0) {\n        this.mode = mode;\n        /**\n        @internal\n        */\n        this.buffer = null;\n        this.stack = [];\n        /**\n        @internal\n        */\n        this.index = 0;\n        this.bufferNode = null;\n        if (node instanceof TreeNode) {\n            this.yieldNode(node);\n        }\n        else {\n            this._tree = node.context.parent;\n            this.buffer = node.context;\n            for (let n = node._parent; n; n = n._parent)\n                this.stack.unshift(n.index);\n            this.bufferNode = node;\n            this.yieldBuf(node.index);\n        }\n    }\n    yieldNode(node) {\n        if (!node)\n            return false;\n        this._tree = node;\n        this.type = node.type;\n        this.from = node.from;\n        this.to = node.to;\n        return true;\n    }\n    yieldBuf(index, type) {\n        this.index = index;\n        let { start, buffer } = this.buffer;\n        this.type = type || buffer.set.types[buffer.buffer[index]];\n        this.from = start + buffer.buffer[index + 1];\n        this.to = start + buffer.buffer[index + 2];\n        return true;\n    }\n    /**\n    @internal\n    */\n    yield(node) {\n        if (!node)\n            return false;\n        if (node instanceof TreeNode) {\n            this.buffer = null;\n            return this.yieldNode(node);\n        }\n        this.buffer = node.context;\n        return this.yieldBuf(node.index, node.type);\n    }\n    /**\n    @internal\n    */\n    toString() {\n        return this.buffer ? this.buffer.buffer.childString(this.index) : this._tree.toString();\n    }\n    /**\n    @internal\n    */\n    enterChild(dir, pos, side) {\n        if (!this.buffer)\n            return this.yield(this._tree.nextChild(dir < 0 ? this._tree._tree.children.length - 1 : 0, dir, pos, side, this.mode));\n        let { buffer } = this.buffer;\n        let index = buffer.findChild(this.index + 4, buffer.buffer[this.index + 3], dir, pos - this.buffer.start, side);\n        if (index < 0)\n            return false;\n        this.stack.push(this.index);\n        return this.yieldBuf(index);\n    }\n    /**\n    Move the cursor to this node's first child. When this returns\n    false, the node has no child, and the cursor has not been moved.\n    */\n    firstChild() { return this.enterChild(1, 0, 4 /* Side.DontCare */); }\n    /**\n    Move the cursor to this node's last child.\n    */\n    lastChild() { return this.enterChild(-1, 0, 4 /* Side.DontCare */); }\n    /**\n    Move the cursor to the first child that ends after `pos`.\n    */\n    childAfter(pos) { return this.enterChild(1, pos, 2 /* Side.After */); }\n    /**\n    Move to the last child that starts before `pos`.\n    */\n    childBefore(pos) { return this.enterChild(-1, pos, -2 /* Side.Before */); }\n    /**\n    Move the cursor to the child around `pos`. If side is -1 the\n    child may end at that position, when 1 it may start there. This\n    will also enter [overlaid](#common.MountedTree.overlay)\n    [mounted](#common.NodeProp^mounted) trees unless `overlays` is\n    set to false.\n    */\n    enter(pos, side, mode = this.mode) {\n        if (!this.buffer)\n            return this.yield(this._tree.enter(pos, side, mode));\n        return mode & IterMode.ExcludeBuffers ? false : this.enterChild(1, pos, side);\n    }\n    /**\n    Move to the node's parent node, if this isn't the top node.\n    */\n    parent() {\n        if (!this.buffer)\n            return this.yieldNode((this.mode & IterMode.IncludeAnonymous) ? this._tree._parent : this._tree.parent);\n        if (this.stack.length)\n            return this.yieldBuf(this.stack.pop());\n        let parent = (this.mode & IterMode.IncludeAnonymous) ? this.buffer.parent : this.buffer.parent.nextSignificantParent();\n        this.buffer = null;\n        return this.yieldNode(parent);\n    }\n    /**\n    @internal\n    */\n    sibling(dir) {\n        if (!this.buffer)\n            return !this._tree._parent ? false\n                : this.yield(this._tree.index < 0 ? null\n                    : this._tree._parent.nextChild(this._tree.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode));\n        let { buffer } = this.buffer, d = this.stack.length - 1;\n        if (dir < 0) {\n            let parentStart = d < 0 ? 0 : this.stack[d] + 4;\n            if (this.index != parentStart)\n                return this.yieldBuf(buffer.findChild(parentStart, this.index, -1, 0, 4 /* Side.DontCare */));\n        }\n        else {\n            let after = buffer.buffer[this.index + 3];\n            if (after < (d < 0 ? buffer.buffer.length : buffer.buffer[this.stack[d] + 3]))\n                return this.yieldBuf(after);\n        }\n        return d < 0 ? this.yield(this.buffer.parent.nextChild(this.buffer.index + dir, dir, 0, 4 /* Side.DontCare */, this.mode)) : false;\n    }\n    /**\n    Move to this node's next sibling, if any.\n    */\n    nextSibling() { return this.sibling(1); }\n    /**\n    Move to this node's previous sibling, if any.\n    */\n    prevSibling() { return this.sibling(-1); }\n    atLastNode(dir) {\n        let index, parent, { buffer } = this;\n        if (buffer) {\n            if (dir > 0) {\n                if (this.index < buffer.buffer.buffer.length)\n                    return false;\n            }\n            else {\n                for (let i = 0; i < this.index; i++)\n                    if (buffer.buffer.buffer[i + 3] < this.index)\n                        return false;\n            }\n            ({ index, parent } = buffer);\n        }\n        else {\n            ({ index, _parent: parent } = this._tree);\n        }\n        for (; parent; { index, _parent: parent } = parent) {\n            if (index > -1)\n                for (let i = index + dir, e = dir < 0 ? -1 : parent._tree.children.length; i != e; i += dir) {\n                    let child = parent._tree.children[i];\n                    if ((this.mode & IterMode.IncludeAnonymous) ||\n                        child instanceof TreeBuffer ||\n                        !child.type.isAnonymous ||\n                        hasChild(child))\n                        return false;\n                }\n        }\n        return true;\n    }\n    move(dir, enter) {\n        if (enter && this.enterChild(dir, 0, 4 /* Side.DontCare */))\n            return true;\n        for (;;) {\n            if (this.sibling(dir))\n                return true;\n            if (this.atLastNode(dir) || !this.parent())\n                return false;\n        }\n    }\n    /**\n    Move to the next node in a\n    [pre-order](https://en.wikipedia.org/wiki/Tree_traversal#Pre-order,_NLR)\n    traversal, going from a node to its first child or, if the\n    current node is empty or `enter` is false, its next sibling or\n    the next sibling of the first parent node that has one.\n    */\n    next(enter = true) { return this.move(1, enter); }\n    /**\n    Move to the next node in a last-to-first pre-order traveral. A\n    node is followed by its last child or, if it has none, its\n    previous sibling or the previous sibling of the first parent\n    node that has one.\n    */\n    prev(enter = true) { return this.move(-1, enter); }\n    /**\n    Move the cursor to the innermost node that covers `pos`. If\n    `side` is -1, it will enter nodes that end at `pos`. If it is 1,\n    it will enter nodes that start at `pos`.\n    */\n    moveTo(pos, side = 0) {\n        // Move up to a node that actually holds the position, if possible\n        while (this.from == this.to ||\n            (side < 1 ? this.from >= pos : this.from > pos) ||\n            (side > -1 ? this.to <= pos : this.to < pos))\n            if (!this.parent())\n                break;\n        // Then scan down into child nodes as far as possible\n        while (this.enterChild(1, pos, side)) { }\n        return this;\n    }\n    /**\n    Get a [syntax node](#common.SyntaxNode) at the cursor's current\n    position.\n    */\n    get node() {\n        if (!this.buffer)\n            return this._tree;\n        let cache = this.bufferNode, result = null, depth = 0;\n        if (cache && cache.context == this.buffer) {\n            scan: for (let index = this.index, d = this.stack.length; d >= 0;) {\n                for (let c = cache; c; c = c._parent)\n                    if (c.index == index) {\n                        if (index == this.index)\n                            return c;\n                        result = c;\n                        depth = d + 1;\n                        break scan;\n                    }\n                index = this.stack[--d];\n            }\n        }\n        for (let i = depth; i < this.stack.length; i++)\n            result = new BufferNode(this.buffer, result, this.stack[i]);\n        return this.bufferNode = new BufferNode(this.buffer, result, this.index);\n    }\n    /**\n    Get the [tree](#common.Tree) that represents the current node, if\n    any. Will return null when the node is in a [tree\n    buffer](#common.TreeBuffer).\n    */\n    get tree() {\n        return this.buffer ? null : this._tree._tree;\n    }\n    /**\n    Iterate over the current node and all its descendants, calling\n    `enter` when entering a node and `leave`, if given, when leaving\n    one. When `enter` returns `false`, any children of that node are\n    skipped, and `leave` isn't called for it.\n    */\n    iterate(enter, leave) {\n        for (let depth = 0;;) {\n            let mustLeave = false;\n            if (this.type.isAnonymous || enter(this) !== false) {\n                if (this.firstChild()) {\n                    depth++;\n                    continue;\n                }\n                if (!this.type.isAnonymous)\n                    mustLeave = true;\n            }\n            for (;;) {\n                if (mustLeave && leave)\n                    leave(this);\n                mustLeave = this.type.isAnonymous;\n                if (this.nextSibling())\n                    break;\n                if (!depth)\n                    return;\n                this.parent();\n                depth--;\n                mustLeave = true;\n            }\n        }\n    }\n    /**\n    Test whether the current node matches a given context—a sequence\n    of direct parent node names. Empty strings in the context array\n    are treated as wildcards.\n    */\n    matchContext(context) {\n        if (!this.buffer)\n            return matchNodeContext(this.node, context);\n        let { buffer } = this.buffer, { types } = buffer.set;\n        for (let i = context.length - 1, d = this.stack.length - 1; i >= 0; d--) {\n            if (d < 0)\n                return matchNodeContext(this.node, context, i);\n            let type = types[buffer.buffer[this.stack[d]]];\n            if (!type.isAnonymous) {\n                if (context[i] && context[i] != type.name)\n                    return false;\n                i--;\n            }\n        }\n        return true;\n    }\n}\nfunction hasChild(tree) {\n    return tree.children.some(ch => ch instanceof TreeBuffer || !ch.type.isAnonymous || hasChild(ch));\n}\nfunction buildTree(data) {\n    var _a;\n    let { buffer, nodeSet, maxBufferLength = DefaultBufferLength, reused = [], minRepeatType = nodeSet.types.length } = data;\n    let cursor = Array.isArray(buffer) ? new FlatBufferCursor(buffer, buffer.length) : buffer;\n    let types = nodeSet.types;\n    let contextHash = 0, lookAhead = 0;\n    function takeNode(parentStart, minPos, children, positions, inRepeat, depth) {\n        let { id, start, end, size } = cursor;\n        let lookAheadAtStart = lookAhead;\n        while (size < 0) {\n            cursor.next();\n            if (size == -1 /* SpecialRecord.Reuse */) {\n                let node = reused[id];\n                children.push(node);\n                positions.push(start - parentStart);\n                return;\n            }\n            else if (size == -3 /* SpecialRecord.ContextChange */) { // Context change\n                contextHash = id;\n                return;\n            }\n            else if (size == -4 /* SpecialRecord.LookAhead */) {\n                lookAhead = id;\n                return;\n            }\n            else {\n                throw new RangeError(`Unrecognized record size: ${size}`);\n            }\n        }\n        let type = types[id], node, buffer;\n        let startPos = start - parentStart;\n        if (end - start <= maxBufferLength && (buffer = findBufferSize(cursor.pos - minPos, inRepeat))) {\n            // Small enough for a buffer, and no reused nodes inside\n            let data = new Uint16Array(buffer.size - buffer.skip);\n            let endPos = cursor.pos - buffer.size, index = data.length;\n            while (cursor.pos > endPos)\n                index = copyToBuffer(buffer.start, data, index);\n            node = new TreeBuffer(data, end - buffer.start, nodeSet);\n            startPos = buffer.start - parentStart;\n        }\n        else { // Make it a node\n            let endPos = cursor.pos - size;\n            cursor.next();\n            let localChildren = [], localPositions = [];\n            let localInRepeat = id >= minRepeatType ? id : -1;\n            let lastGroup = 0, lastEnd = end;\n            while (cursor.pos > endPos) {\n                if (localInRepeat >= 0 && cursor.id == localInRepeat && cursor.size >= 0) {\n                    if (cursor.end <= lastEnd - maxBufferLength) {\n                        makeRepeatLeaf(localChildren, localPositions, start, lastGroup, cursor.end, lastEnd, localInRepeat, lookAheadAtStart);\n                        lastGroup = localChildren.length;\n                        lastEnd = cursor.end;\n                    }\n                    cursor.next();\n                }\n                else if (depth > 2500 /* CutOff.Depth */) {\n                    takeFlatNode(start, endPos, localChildren, localPositions);\n                }\n                else {\n                    takeNode(start, endPos, localChildren, localPositions, localInRepeat, depth + 1);\n                }\n            }\n            if (localInRepeat >= 0 && lastGroup > 0 && lastGroup < localChildren.length)\n                makeRepeatLeaf(localChildren, localPositions, start, lastGroup, start, lastEnd, localInRepeat, lookAheadAtStart);\n            localChildren.reverse();\n            localPositions.reverse();\n            if (localInRepeat > -1 && lastGroup > 0) {\n                let make = makeBalanced(type);\n                node = balanceRange(type, localChildren, localPositions, 0, localChildren.length, 0, end - start, make, make);\n            }\n            else {\n                node = makeTree(type, localChildren, localPositions, end - start, lookAheadAtStart - end);\n            }\n        }\n        children.push(node);\n        positions.push(startPos);\n    }\n    function takeFlatNode(parentStart, minPos, children, positions) {\n        let nodes = []; // Temporary, inverted array of leaf nodes found, with absolute positions\n        let nodeCount = 0, stopAt = -1;\n        while (cursor.pos > minPos) {\n            let { id, start, end, size } = cursor;\n            if (size > 4) { // Not a leaf\n                cursor.next();\n            }\n            else if (stopAt > -1 && start < stopAt) {\n                break;\n            }\n            else {\n                if (stopAt < 0)\n                    stopAt = end - maxBufferLength;\n                nodes.push(id, start, end);\n                nodeCount++;\n                cursor.next();\n            }\n        }\n        if (nodeCount) {\n            let buffer = new Uint16Array(nodeCount * 4);\n            let start = nodes[nodes.length - 2];\n            for (let i = nodes.length - 3, j = 0; i >= 0; i -= 3) {\n                buffer[j++] = nodes[i];\n                buffer[j++] = nodes[i + 1] - start;\n                buffer[j++] = nodes[i + 2] - start;\n                buffer[j++] = j;\n            }\n            children.push(new TreeBuffer(buffer, nodes[2] - start, nodeSet));\n            positions.push(start - parentStart);\n        }\n    }\n    function makeBalanced(type) {\n        return (children, positions, length) => {\n            let lookAhead = 0, lastI = children.length - 1, last, lookAheadProp;\n            if (lastI >= 0 && (last = children[lastI]) instanceof Tree) {\n                if (!lastI && last.type == type && last.length == length)\n                    return last;\n                if (lookAheadProp = last.prop(NodeProp.lookAhead))\n                    lookAhead = positions[lastI] + last.length + lookAheadProp;\n            }\n            return makeTree(type, children, positions, length, lookAhead);\n        };\n    }\n    function makeRepeatLeaf(children, positions, base, i, from, to, type, lookAhead) {\n        let localChildren = [], localPositions = [];\n        while (children.length > i) {\n            localChildren.push(children.pop());\n            localPositions.push(positions.pop() + base - from);\n        }\n        children.push(makeTree(nodeSet.types[type], localChildren, localPositions, to - from, lookAhead - to));\n        positions.push(from - base);\n    }\n    function makeTree(type, children, positions, length, lookAhead = 0, props) {\n        if (contextHash) {\n            let pair = [NodeProp.contextHash, contextHash];\n            props = props ? [pair].concat(props) : [pair];\n        }\n        if (lookAhead > 25) {\n            let pair = [NodeProp.lookAhead, lookAhead];\n            props = props ? [pair].concat(props) : [pair];\n        }\n        return new Tree(type, children, positions, length, props);\n    }\n    function findBufferSize(maxSize, inRepeat) {\n        // Scan through the buffer to find previous siblings that fit\n        // together in a TreeBuffer, and don't contain any reused nodes\n        // (which can't be stored in a buffer).\n        // If `inRepeat` is > -1, ignore node boundaries of that type for\n        // nesting, but make sure the end falls either at the start\n        // (`maxSize`) or before such a node.\n        let fork = cursor.fork();\n        let size = 0, start = 0, skip = 0, minStart = fork.end - maxBufferLength;\n        let result = { size: 0, start: 0, skip: 0 };\n        scan: for (let minPos = fork.pos - maxSize; fork.pos > minPos;) {\n            let nodeSize = fork.size;\n            // Pretend nested repeat nodes of the same type don't exist\n            if (fork.id == inRepeat && nodeSize >= 0) {\n                // Except that we store the current state as a valid return\n                // value.\n                result.size = size;\n                result.start = start;\n                result.skip = skip;\n                skip += 4;\n                size += 4;\n                fork.next();\n                continue;\n            }\n            let startPos = fork.pos - nodeSize;\n            if (nodeSize < 0 || startPos < minPos || fork.start < minStart)\n                break;\n            let localSkipped = fork.id >= minRepeatType ? 4 : 0;\n            let nodeStart = fork.start;\n            fork.next();\n            while (fork.pos > startPos) {\n                if (fork.size < 0) {\n                    if (fork.size == -3 /* SpecialRecord.ContextChange */)\n                        localSkipped += 4;\n                    else\n                        break scan;\n                }\n                else if (fork.id >= minRepeatType) {\n                    localSkipped += 4;\n                }\n                fork.next();\n            }\n            start = nodeStart;\n            size += nodeSize;\n            skip += localSkipped;\n        }\n        if (inRepeat < 0 || size == maxSize) {\n            result.size = size;\n            result.start = start;\n            result.skip = skip;\n        }\n        return result.size > 4 ? result : undefined;\n    }\n    function copyToBuffer(bufferStart, buffer, index) {\n        let { id, start, end, size } = cursor;\n        cursor.next();\n        if (size >= 0 && id < minRepeatType) {\n            let startIndex = index;\n            if (size > 4) {\n                let endPos = cursor.pos - (size - 4);\n                while (cursor.pos > endPos)\n                    index = copyToBuffer(bufferStart, buffer, index);\n            }\n            buffer[--index] = startIndex;\n            buffer[--index] = end - bufferStart;\n            buffer[--index] = start - bufferStart;\n            buffer[--index] = id;\n        }\n        else if (size == -3 /* SpecialRecord.ContextChange */) {\n            contextHash = id;\n        }\n        else if (size == -4 /* SpecialRecord.LookAhead */) {\n            lookAhead = id;\n        }\n        return index;\n    }\n    let children = [], positions = [];\n    while (cursor.pos > 0)\n        takeNode(data.start || 0, data.bufferStart || 0, children, positions, -1, 0);\n    let length = (_a = data.length) !== null && _a !== void 0 ? _a : (children.length ? positions[0] + children[0].length : 0);\n    return new Tree(types[data.topID], children.reverse(), positions.reverse(), length);\n}\nconst nodeSizeCache = new WeakMap;\nfunction nodeSize(balanceType, node) {\n    if (!balanceType.isAnonymous || node instanceof TreeBuffer || node.type != balanceType)\n        return 1;\n    let size = nodeSizeCache.get(node);\n    if (size == null) {\n        size = 1;\n        for (let child of node.children) {\n            if (child.type != balanceType || !(child instanceof Tree)) {\n                size = 1;\n                break;\n            }\n            size += nodeSize(balanceType, child);\n        }\n        nodeSizeCache.set(node, size);\n    }\n    return size;\n}\nfunction balanceRange(\n// The type the balanced tree's inner nodes.\nbalanceType, \n// The direct children and their positions\nchildren, positions, \n// The index range in children/positions to use\nfrom, to, \n// The start position of the nodes, relative to their parent.\nstart, \n// Length of the outer node\nlength, \n// Function to build the top node of the balanced tree\nmkTop, \n// Function to build internal nodes for the balanced tree\nmkTree) {\n    let total = 0;\n    for (let i = from; i < to; i++)\n        total += nodeSize(balanceType, children[i]);\n    let maxChild = Math.ceil((total * 1.5) / 8 /* Balance.BranchFactor */);\n    let localChildren = [], localPositions = [];\n    function divide(children, positions, from, to, offset) {\n        for (let i = from; i < to;) {\n            let groupFrom = i, groupStart = positions[i], groupSize = nodeSize(balanceType, children[i]);\n            i++;\n            for (; i < to; i++) {\n                let nextSize = nodeSize(balanceType, children[i]);\n                if (groupSize + nextSize >= maxChild)\n                    break;\n                groupSize += nextSize;\n            }\n            if (i == groupFrom + 1) {\n                if (groupSize > maxChild) {\n                    let only = children[groupFrom]; // Only trees can have a size > 1\n                    divide(only.children, only.positions, 0, only.children.length, positions[groupFrom] + offset);\n                    continue;\n                }\n                localChildren.push(children[groupFrom]);\n            }\n            else {\n                let length = positions[i - 1] + children[i - 1].length - groupStart;\n                localChildren.push(balanceRange(balanceType, children, positions, groupFrom, i, groupStart, length, null, mkTree));\n            }\n            localPositions.push(groupStart + offset - start);\n        }\n    }\n    divide(children, positions, from, to, 0);\n    return (mkTop || mkTree)(localChildren, localPositions, length);\n}\n/**\nProvides a way to associate values with pieces of trees. As long\nas that part of the tree is reused, the associated values can be\nretrieved from an updated tree.\n*/\nclass NodeWeakMap {\n    constructor() {\n        this.map = new WeakMap();\n    }\n    setBuffer(buffer, index, value) {\n        let inner = this.map.get(buffer);\n        if (!inner)\n            this.map.set(buffer, inner = new Map);\n        inner.set(index, value);\n    }\n    getBuffer(buffer, index) {\n        let inner = this.map.get(buffer);\n        return inner && inner.get(index);\n    }\n    /**\n    Set the value for this syntax node.\n    */\n    set(node, value) {\n        if (node instanceof BufferNode)\n            this.setBuffer(node.context.buffer, node.index, value);\n        else if (node instanceof TreeNode)\n            this.map.set(node.tree, value);\n    }\n    /**\n    Retrieve value for this syntax node, if it exists in the map.\n    */\n    get(node) {\n        return node instanceof BufferNode ? this.getBuffer(node.context.buffer, node.index)\n            : node instanceof TreeNode ? this.map.get(node.tree) : undefined;\n    }\n    /**\n    Set the value for the node that a cursor currently points to.\n    */\n    cursorSet(cursor, value) {\n        if (cursor.buffer)\n            this.setBuffer(cursor.buffer.buffer, cursor.index, value);\n        else\n            this.map.set(cursor.tree, value);\n    }\n    /**\n    Retrieve the value for the node that a cursor currently points\n    to.\n    */\n    cursorGet(cursor) {\n        return cursor.buffer ? this.getBuffer(cursor.buffer.buffer, cursor.index) : this.map.get(cursor.tree);\n    }\n}\n\n/**\nTree fragments are used during [incremental\nparsing](#common.Parser.startParse) to track parts of old trees\nthat can be reused in a new parse. An array of fragments is used\nto track regions of an old tree whose nodes might be reused in new\nparses. Use the static\n[`applyChanges`](#common.TreeFragment^applyChanges) method to\nupdate fragments for document changes.\n*/\nclass TreeFragment {\n    /**\n    Construct a tree fragment. You'll usually want to use\n    [`addTree`](#common.TreeFragment^addTree) and\n    [`applyChanges`](#common.TreeFragment^applyChanges) instead of\n    calling this directly.\n    */\n    constructor(\n    /**\n    The start of the unchanged range pointed to by this fragment.\n    This refers to an offset in the _updated_ document (as opposed\n    to the original tree).\n    */\n    from, \n    /**\n    The end of the unchanged range.\n    */\n    to, \n    /**\n    The tree that this fragment is based on.\n    */\n    tree, \n    /**\n    The offset between the fragment's tree and the document that\n    this fragment can be used against. Add this when going from\n    document to tree positions, subtract it to go from tree to\n    document positions.\n    */\n    offset, openStart = false, openEnd = false) {\n        this.from = from;\n        this.to = to;\n        this.tree = tree;\n        this.offset = offset;\n        this.open = (openStart ? 1 /* Open.Start */ : 0) | (openEnd ? 2 /* Open.End */ : 0);\n    }\n    /**\n    Whether the start of the fragment represents the start of a\n    parse, or the end of a change. (In the second case, it may not\n    be safe to reuse some nodes at the start, depending on the\n    parsing algorithm.)\n    */\n    get openStart() { return (this.open & 1 /* Open.Start */) > 0; }\n    /**\n    Whether the end of the fragment represents the end of a\n    full-document parse, or the start of a change.\n    */\n    get openEnd() { return (this.open & 2 /* Open.End */) > 0; }\n    /**\n    Create a set of fragments from a freshly parsed tree, or update\n    an existing set of fragments by replacing the ones that overlap\n    with a tree with content from the new tree. When `partial` is\n    true, the parse is treated as incomplete, and the resulting\n    fragment has [`openEnd`](#common.TreeFragment.openEnd) set to\n    true.\n    */\n    static addTree(tree, fragments = [], partial = false) {\n        let result = [new TreeFragment(0, tree.length, tree, 0, false, partial)];\n        for (let f of fragments)\n            if (f.to > tree.length)\n                result.push(f);\n        return result;\n    }\n    /**\n    Apply a set of edits to an array of fragments, removing or\n    splitting fragments as necessary to remove edited ranges, and\n    adjusting offsets for fragments that moved.\n    */\n    static applyChanges(fragments, changes, minGap = 128) {\n        if (!changes.length)\n            return fragments;\n        let result = [];\n        let fI = 1, nextF = fragments.length ? fragments[0] : null;\n        for (let cI = 0, pos = 0, off = 0;; cI++) {\n            let nextC = cI < changes.length ? changes[cI] : null;\n            let nextPos = nextC ? nextC.fromA : 1e9;\n            if (nextPos - pos >= minGap)\n                while (nextF && nextF.from < nextPos) {\n                    let cut = nextF;\n                    if (pos >= cut.from || nextPos <= cut.to || off) {\n                        let fFrom = Math.max(cut.from, pos) - off, fTo = Math.min(cut.to, nextPos) - off;\n                        cut = fFrom >= fTo ? null : new TreeFragment(fFrom, fTo, cut.tree, cut.offset + off, cI > 0, !!nextC);\n                    }\n                    if (cut)\n                        result.push(cut);\n                    if (nextF.to > nextPos)\n                        break;\n                    nextF = fI < fragments.length ? fragments[fI++] : null;\n                }\n            if (!nextC)\n                break;\n            pos = nextC.toA;\n            off = nextC.toA - nextC.toB;\n        }\n        return result;\n    }\n}\n/**\nA superclass that parsers should extend.\n*/\nclass Parser {\n    /**\n    Start a parse, returning a [partial parse](#common.PartialParse)\n    object. [`fragments`](#common.TreeFragment) can be passed in to\n    make the parse incremental.\n    \n    By default, the entire input is parsed. You can pass `ranges`,\n    which should be a sorted array of non-empty, non-overlapping\n    ranges, to parse only those ranges. The tree returned in that\n    case will start at `ranges[0].from`.\n    */\n    startParse(input, fragments, ranges) {\n        if (typeof input == \"string\")\n            input = new StringInput(input);\n        ranges = !ranges ? [new Range(0, input.length)] : ranges.length ? ranges.map(r => new Range(r.from, r.to)) : [new Range(0, 0)];\n        return this.createParse(input, fragments || [], ranges);\n    }\n    /**\n    Run a full parse, returning the resulting tree.\n    */\n    parse(input, fragments, ranges) {\n        let parse = this.startParse(input, fragments, ranges);\n        for (;;) {\n            let done = parse.advance();\n            if (done)\n                return done;\n        }\n    }\n}\nclass StringInput {\n    constructor(string) {\n        this.string = string;\n    }\n    get length() { return this.string.length; }\n    chunk(from) { return this.string.slice(from); }\n    get lineChunks() { return false; }\n    read(from, to) { return this.string.slice(from, to); }\n}\n\n/**\nCreate a parse wrapper that, after the inner parse completes,\nscans its tree for mixed language regions with the `nest`\nfunction, runs the resulting [inner parses](#common.NestedParse),\nand then [mounts](#common.NodeProp^mounted) their results onto the\ntree.\n*/\nfunction parseMixed(nest) {\n    return (parse, input, fragments, ranges) => new MixedParse(parse, nest, input, fragments, ranges);\n}\nclass InnerParse {\n    constructor(parser, parse, overlay, target, from) {\n        this.parser = parser;\n        this.parse = parse;\n        this.overlay = overlay;\n        this.target = target;\n        this.from = from;\n    }\n}\nfunction checkRanges(ranges) {\n    if (!ranges.length || ranges.some(r => r.from >= r.to))\n        throw new RangeError(\"Invalid inner parse ranges given: \" + JSON.stringify(ranges));\n}\nclass ActiveOverlay {\n    constructor(parser, predicate, mounts, index, start, target, prev) {\n        this.parser = parser;\n        this.predicate = predicate;\n        this.mounts = mounts;\n        this.index = index;\n        this.start = start;\n        this.target = target;\n        this.prev = prev;\n        this.depth = 0;\n        this.ranges = [];\n    }\n}\nconst stoppedInner = new NodeProp({ perNode: true });\nclass MixedParse {\n    constructor(base, nest, input, fragments, ranges) {\n        this.nest = nest;\n        this.input = input;\n        this.fragments = fragments;\n        this.ranges = ranges;\n        this.inner = [];\n        this.innerDone = 0;\n        this.baseTree = null;\n        this.stoppedAt = null;\n        this.baseParse = base;\n    }\n    advance() {\n        if (this.baseParse) {\n            let done = this.baseParse.advance();\n            if (!done)\n                return null;\n            this.baseParse = null;\n            this.baseTree = done;\n            this.startInner();\n            if (this.stoppedAt != null)\n                for (let inner of this.inner)\n                    inner.parse.stopAt(this.stoppedAt);\n        }\n        if (this.innerDone == this.inner.length) {\n            let result = this.baseTree;\n            if (this.stoppedAt != null)\n                result = new Tree(result.type, result.children, result.positions, result.length, result.propValues.concat([[stoppedInner, this.stoppedAt]]));\n            return result;\n        }\n        let inner = this.inner[this.innerDone], done = inner.parse.advance();\n        if (done) {\n            this.innerDone++;\n            // This is a somewhat dodgy but super helpful hack where we\n            // patch up nodes created by the inner parse (and thus\n            // presumably not aliased anywhere else) to hold the information\n            // about the inner parse.\n            let props = Object.assign(Object.create(null), inner.target.props);\n            props[NodeProp.mounted.id] = new MountedTree(done, inner.overlay, inner.parser);\n            inner.target.props = props;\n        }\n        return null;\n    }\n    get parsedPos() {\n        if (this.baseParse)\n            return 0;\n        let pos = this.input.length;\n        for (let i = this.innerDone; i < this.inner.length; i++) {\n            if (this.inner[i].from < pos)\n                pos = Math.min(pos, this.inner[i].parse.parsedPos);\n        }\n        return pos;\n    }\n    stopAt(pos) {\n        this.stoppedAt = pos;\n        if (this.baseParse)\n            this.baseParse.stopAt(pos);\n        else\n            for (let i = this.innerDone; i < this.inner.length; i++)\n                this.inner[i].parse.stopAt(pos);\n    }\n    startInner() {\n        let fragmentCursor = new FragmentCursor(this.fragments);\n        let overlay = null;\n        let covered = null;\n        let cursor = new TreeCursor(new TreeNode(this.baseTree, this.ranges[0].from, 0, null), IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n        scan: for (let nest, isCovered;;) {\n            let enter = true, range;\n            if (this.stoppedAt != null && cursor.from >= this.stoppedAt) {\n                enter = false;\n            }\n            else if (fragmentCursor.hasNode(cursor)) {\n                if (overlay) {\n                    let match = overlay.mounts.find(m => m.frag.from <= cursor.from && m.frag.to >= cursor.to && m.mount.overlay);\n                    if (match)\n                        for (let r of match.mount.overlay) {\n                            let from = r.from + match.pos, to = r.to + match.pos;\n                            if (from >= cursor.from && to <= cursor.to && !overlay.ranges.some(r => r.from < to && r.to > from))\n                                overlay.ranges.push({ from, to });\n                        }\n                }\n                enter = false;\n            }\n            else if (covered && (isCovered = checkCover(covered.ranges, cursor.from, cursor.to))) {\n                enter = isCovered != 2 /* Cover.Full */;\n            }\n            else if (!cursor.type.isAnonymous && (nest = this.nest(cursor, this.input)) &&\n                (cursor.from < cursor.to || !nest.overlay)) {\n                if (!cursor.tree)\n                    materialize(cursor);\n                let oldMounts = fragmentCursor.findMounts(cursor.from, nest.parser);\n                if (typeof nest.overlay == \"function\") {\n                    overlay = new ActiveOverlay(nest.parser, nest.overlay, oldMounts, this.inner.length, cursor.from, cursor.tree, overlay);\n                }\n                else {\n                    let ranges = punchRanges(this.ranges, nest.overlay ||\n                        (cursor.from < cursor.to ? [new Range(cursor.from, cursor.to)] : []));\n                    if (ranges.length)\n                        checkRanges(ranges);\n                    if (ranges.length || !nest.overlay)\n                        this.inner.push(new InnerParse(nest.parser, ranges.length ? nest.parser.startParse(this.input, enterFragments(oldMounts, ranges), ranges)\n                            : nest.parser.startParse(\"\"), nest.overlay ? nest.overlay.map(r => new Range(r.from - cursor.from, r.to - cursor.from)) : null, cursor.tree, ranges.length ? ranges[0].from : cursor.from));\n                    if (!nest.overlay)\n                        enter = false;\n                    else if (ranges.length)\n                        covered = { ranges, depth: 0, prev: covered };\n                }\n            }\n            else if (overlay && (range = overlay.predicate(cursor))) {\n                if (range === true)\n                    range = new Range(cursor.from, cursor.to);\n                if (range.from < range.to)\n                    overlay.ranges.push(range);\n            }\n            if (enter && cursor.firstChild()) {\n                if (overlay)\n                    overlay.depth++;\n                if (covered)\n                    covered.depth++;\n            }\n            else {\n                for (;;) {\n                    if (cursor.nextSibling())\n                        break;\n                    if (!cursor.parent())\n                        break scan;\n                    if (overlay && !--overlay.depth) {\n                        let ranges = punchRanges(this.ranges, overlay.ranges);\n                        if (ranges.length) {\n                            checkRanges(ranges);\n                            this.inner.splice(overlay.index, 0, new InnerParse(overlay.parser, overlay.parser.startParse(this.input, enterFragments(overlay.mounts, ranges), ranges), overlay.ranges.map(r => new Range(r.from - overlay.start, r.to - overlay.start)), overlay.target, ranges[0].from));\n                        }\n                        overlay = overlay.prev;\n                    }\n                    if (covered && !--covered.depth)\n                        covered = covered.prev;\n                }\n            }\n        }\n    }\n}\nfunction checkCover(covered, from, to) {\n    for (let range of covered) {\n        if (range.from >= to)\n            break;\n        if (range.to > from)\n            return range.from <= from && range.to >= to ? 2 /* Cover.Full */ : 1 /* Cover.Partial */;\n    }\n    return 0 /* Cover.None */;\n}\n// Take a piece of buffer and convert it into a stand-alone\n// TreeBuffer.\nfunction sliceBuf(buf, startI, endI, nodes, positions, off) {\n    if (startI < endI) {\n        let from = buf.buffer[startI + 1];\n        nodes.push(buf.slice(startI, endI, from));\n        positions.push(from - off);\n    }\n}\n// This function takes a node that's in a buffer, and converts it, and\n// its parent buffer nodes, into a Tree. This is again acting on the\n// assumption that the trees and buffers have been constructed by the\n// parse that was ran via the mix parser, and thus aren't shared with\n// any other code, making violations of the immutability safe.\nfunction materialize(cursor) {\n    let { node } = cursor, stack = [];\n    let buffer = node.context.buffer;\n    // Scan up to the nearest tree\n    do {\n        stack.push(cursor.index);\n        cursor.parent();\n    } while (!cursor.tree);\n    // Find the index of the buffer in that tree\n    let base = cursor.tree, i = base.children.indexOf(buffer);\n    let buf = base.children[i], b = buf.buffer, newStack = [i];\n    // Split a level in the buffer, putting the nodes before and after\n    // the child that contains `node` into new buffers.\n    function split(startI, endI, type, innerOffset, length, stackPos) {\n        let targetI = stack[stackPos];\n        let children = [], positions = [];\n        sliceBuf(buf, startI, targetI, children, positions, innerOffset);\n        let from = b[targetI + 1], to = b[targetI + 2];\n        newStack.push(children.length);\n        let child = stackPos\n            ? split(targetI + 4, b[targetI + 3], buf.set.types[b[targetI]], from, to - from, stackPos - 1)\n            : node.toTree();\n        children.push(child);\n        positions.push(from - innerOffset);\n        sliceBuf(buf, b[targetI + 3], endI, children, positions, innerOffset);\n        return new Tree(type, children, positions, length);\n    }\n    base.children[i] = split(0, b.length, NodeType.none, 0, buf.length, stack.length - 1);\n    // Move the cursor back to the target node\n    for (let index of newStack) {\n        let tree = cursor.tree.children[index], pos = cursor.tree.positions[index];\n        cursor.yield(new TreeNode(tree, pos + cursor.from, index, cursor._tree));\n    }\n}\nclass StructureCursor {\n    constructor(root, offset) {\n        this.offset = offset;\n        this.done = false;\n        this.cursor = root.cursor(IterMode.IncludeAnonymous | IterMode.IgnoreMounts);\n    }\n    // Move to the first node (in pre-order) that starts at or after `pos`.\n    moveTo(pos) {\n        let { cursor } = this, p = pos - this.offset;\n        while (!this.done && cursor.from < p) {\n            if (cursor.to >= pos && cursor.enter(p, 1, IterMode.IgnoreOverlays | IterMode.ExcludeBuffers)) ;\n            else if (!cursor.next(false))\n                this.done = true;\n        }\n    }\n    hasNode(cursor) {\n        this.moveTo(cursor.from);\n        if (!this.done && this.cursor.from + this.offset == cursor.from && this.cursor.tree) {\n            for (let tree = this.cursor.tree;;) {\n                if (tree == cursor.tree)\n                    return true;\n                if (tree.children.length && tree.positions[0] == 0 && tree.children[0] instanceof Tree)\n                    tree = tree.children[0];\n                else\n                    break;\n            }\n        }\n        return false;\n    }\n}\nclass FragmentCursor {\n    constructor(fragments) {\n        var _a;\n        this.fragments = fragments;\n        this.curTo = 0;\n        this.fragI = 0;\n        if (fragments.length) {\n            let first = this.curFrag = fragments[0];\n            this.curTo = (_a = first.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : first.to;\n            this.inner = new StructureCursor(first.tree, -first.offset);\n        }\n        else {\n            this.curFrag = this.inner = null;\n        }\n    }\n    hasNode(node) {\n        while (this.curFrag && node.from >= this.curTo)\n            this.nextFrag();\n        return this.curFrag && this.curFrag.from <= node.from && this.curTo >= node.to && this.inner.hasNode(node);\n    }\n    nextFrag() {\n        var _a;\n        this.fragI++;\n        if (this.fragI == this.fragments.length) {\n            this.curFrag = this.inner = null;\n        }\n        else {\n            let frag = this.curFrag = this.fragments[this.fragI];\n            this.curTo = (_a = frag.tree.prop(stoppedInner)) !== null && _a !== void 0 ? _a : frag.to;\n            this.inner = new StructureCursor(frag.tree, -frag.offset);\n        }\n    }\n    findMounts(pos, parser) {\n        var _a;\n        let result = [];\n        if (this.inner) {\n            this.inner.cursor.moveTo(pos, 1);\n            for (let pos = this.inner.cursor.node; pos; pos = pos.parent) {\n                let mount = (_a = pos.tree) === null || _a === void 0 ? void 0 : _a.prop(NodeProp.mounted);\n                if (mount && mount.parser == parser) {\n                    for (let i = this.fragI; i < this.fragments.length; i++) {\n                        let frag = this.fragments[i];\n                        if (frag.from >= pos.to)\n                            break;\n                        if (frag.tree == this.curFrag.tree)\n                            result.push({\n                                frag,\n                                pos: pos.from - frag.offset,\n                                mount\n                            });\n                    }\n                }\n            }\n        }\n        return result;\n    }\n}\nfunction punchRanges(outer, ranges) {\n    let copy = null, current = ranges;\n    for (let i = 1, j = 0; i < outer.length; i++) {\n        let gapFrom = outer[i - 1].to, gapTo = outer[i].from;\n        for (; j < current.length; j++) {\n            let r = current[j];\n            if (r.from >= gapTo)\n                break;\n            if (r.to <= gapFrom)\n                continue;\n            if (!copy)\n                current = copy = ranges.slice();\n            if (r.from < gapFrom) {\n                copy[j] = new Range(r.from, gapFrom);\n                if (r.to > gapTo)\n                    copy.splice(j + 1, 0, new Range(gapTo, r.to));\n            }\n            else if (r.to > gapTo) {\n                copy[j--] = new Range(gapTo, r.to);\n            }\n            else {\n                copy.splice(j--, 1);\n            }\n        }\n    }\n    return current;\n}\nfunction findCoverChanges(a, b, from, to) {\n    let iA = 0, iB = 0, inA = false, inB = false, pos = -1e9;\n    let result = [];\n    for (;;) {\n        let nextA = iA == a.length ? 1e9 : inA ? a[iA].to : a[iA].from;\n        let nextB = iB == b.length ? 1e9 : inB ? b[iB].to : b[iB].from;\n        if (inA != inB) {\n            let start = Math.max(pos, from), end = Math.min(nextA, nextB, to);\n            if (start < end)\n                result.push(new Range(start, end));\n        }\n        pos = Math.min(nextA, nextB);\n        if (pos == 1e9)\n            break;\n        if (nextA == pos) {\n            if (!inA)\n                inA = true;\n            else {\n                inA = false;\n                iA++;\n            }\n        }\n        if (nextB == pos) {\n            if (!inB)\n                inB = true;\n            else {\n                inB = false;\n                iB++;\n            }\n        }\n    }\n    return result;\n}\n// Given a number of fragments for the outer tree, and a set of ranges\n// to parse, find fragments for inner trees mounted around those\n// ranges, if any.\nfunction enterFragments(mounts, ranges) {\n    let result = [];\n    for (let { pos, mount, frag } of mounts) {\n        let startPos = pos + (mount.overlay ? mount.overlay[0].from : 0), endPos = startPos + mount.tree.length;\n        let from = Math.max(frag.from, startPos), to = Math.min(frag.to, endPos);\n        if (mount.overlay) {\n            let overlay = mount.overlay.map(r => new Range(r.from + pos, r.to + pos));\n            let changes = findCoverChanges(ranges, overlay, from, to);\n            for (let i = 0, pos = from;; i++) {\n                let last = i == changes.length, end = last ? to : changes[i].from;\n                if (end > pos)\n                    result.push(new TreeFragment(pos, end, mount.tree, -startPos, frag.from >= pos || frag.openStart, frag.to <= end || frag.openEnd));\n                if (last)\n                    break;\n                pos = changes[i].to;\n            }\n        }\n        else {\n            result.push(new TreeFragment(from, to, mount.tree, -startPos, frag.from >= startPos || frag.openStart, frag.to <= endPos || frag.openEnd));\n        }\n    }\n    return result;\n}\n\nexport { DefaultBufferLength, IterMode, MountedTree, NodeProp, NodeSet, NodeType, NodeWeakMap, Parser, Tree, TreeBuffer, TreeCursor, TreeFragment, parseMixed };\n","import { NodeProp } from '@lezer/common';\n\nlet nextTagID = 0;\n/**\nHighlighting tags are markers that denote a highlighting category.\nThey are [associated](#highlight.styleTags) with parts of a syntax\ntree by a language mode, and then mapped to an actual CSS style by\na [highlighter](#highlight.Highlighter).\n\nBecause syntax tree node types and highlight styles have to be\nable to talk the same language, CodeMirror uses a mostly _closed_\n[vocabulary](#highlight.tags) of syntax tags (as opposed to\ntraditional open string-based systems, which make it hard for\nhighlighting themes to cover all the tokens produced by the\nvarious languages).\n\nIt _is_ possible to [define](#highlight.Tag^define) your own\nhighlighting tags for system-internal use (where you control both\nthe language package and the highlighter), but such tags will not\nbe picked up by regular highlighters (though you can derive them\nfrom standard tags to allow highlighters to fall back to those).\n*/\nclass Tag {\n    /**\n    @internal\n    */\n    constructor(\n    /**\n    The set of this tag and all its parent tags, starting with\n    this one itself and sorted in order of decreasing specificity.\n    */\n    set, \n    /**\n    The base unmodified tag that this one is based on, if it's\n    modified @internal\n    */\n    base, \n    /**\n    The modifiers applied to this.base @internal\n    */\n    modified) {\n        this.set = set;\n        this.base = base;\n        this.modified = modified;\n        /**\n        @internal\n        */\n        this.id = nextTagID++;\n    }\n    /**\n    Define a new tag. If `parent` is given, the tag is treated as a\n    sub-tag of that parent, and\n    [highlighters](#highlight.tagHighlighter) that don't mention\n    this tag will try to fall back to the parent tag (or grandparent\n    tag, etc).\n    */\n    static define(parent) {\n        if (parent === null || parent === void 0 ? void 0 : parent.base)\n            throw new Error(\"Can not derive from a modified tag\");\n        let tag = new Tag([], null, []);\n        tag.set.push(tag);\n        if (parent)\n            for (let t of parent.set)\n                tag.set.push(t);\n        return tag;\n    }\n    /**\n    Define a tag _modifier_, which is a function that, given a tag,\n    will return a tag that is a subtag of the original. Applying the\n    same modifier to a twice tag will return the same value (`m1(t1)\n    == m1(t1)`) and applying multiple modifiers will, regardless or\n    order, produce the same tag (`m1(m2(t1)) == m2(m1(t1))`).\n    \n    When multiple modifiers are applied to a given base tag, each\n    smaller set of modifiers is registered as a parent, so that for\n    example `m1(m2(m3(t1)))` is a subtype of `m1(m2(t1))`,\n    `m1(m3(t1)`, and so on.\n    */\n    static defineModifier() {\n        let mod = new Modifier;\n        return (tag) => {\n            if (tag.modified.indexOf(mod) > -1)\n                return tag;\n            return Modifier.get(tag.base || tag, tag.modified.concat(mod).sort((a, b) => a.id - b.id));\n        };\n    }\n}\nlet nextModifierID = 0;\nclass Modifier {\n    constructor() {\n        this.instances = [];\n        this.id = nextModifierID++;\n    }\n    static get(base, mods) {\n        if (!mods.length)\n            return base;\n        let exists = mods[0].instances.find(t => t.base == base && sameArray(mods, t.modified));\n        if (exists)\n            return exists;\n        let set = [], tag = new Tag(set, base, mods);\n        for (let m of mods)\n            m.instances.push(tag);\n        let configs = powerSet(mods);\n        for (let parent of base.set)\n            if (!parent.modified.length)\n                for (let config of configs)\n                    set.push(Modifier.get(parent, config));\n        return tag;\n    }\n}\nfunction sameArray(a, b) {\n    return a.length == b.length && a.every((x, i) => x == b[i]);\n}\nfunction powerSet(array) {\n    let sets = [[]];\n    for (let i = 0; i < array.length; i++) {\n        for (let j = 0, e = sets.length; j < e; j++) {\n            sets.push(sets[j].concat(array[i]));\n        }\n    }\n    return sets.sort((a, b) => b.length - a.length);\n}\n/**\nThis function is used to add a set of tags to a language syntax\nvia [`NodeSet.extend`](#common.NodeSet.extend) or\n[`LRParser.configure`](#lr.LRParser.configure).\n\nThe argument object maps node selectors to [highlighting\ntags](#highlight.Tag) or arrays of tags.\n\nNode selectors may hold one or more (space-separated) node paths.\nSuch a path can be a [node name](#common.NodeType.name), or\nmultiple node names (or `*` wildcards) separated by slash\ncharacters, as in `\"Block/Declaration/VariableName\"`. Such a path\nmatches the final node but only if its direct parent nodes are the\nother nodes mentioned. A `*` in such a path matches any parent,\nbut only a single level—wildcards that match multiple parents\naren't supported, both for efficiency reasons and because Lezer\ntrees make it rather hard to reason about what they would match.)\n\nA path can be ended with `/...` to indicate that the tag assigned\nto the node should also apply to all child nodes, even if they\nmatch their own style (by default, only the innermost style is\nused).\n\nWhen a path ends in `!`, as in `Attribute!`, no further matching\nhappens for the node's child nodes, and the entire node gets the\ngiven style.\n\nIn this notation, node names that contain `/`, `!`, `*`, or `...`\nmust be quoted as JSON strings.\n\nFor example:\n\n```javascript\nparser.withProps(\n  styleTags({\n    // Style Number and BigNumber nodes\n    \"Number BigNumber\": tags.number,\n    // Style Escape nodes whose parent is String\n    \"String/Escape\": tags.escape,\n    // Style anything inside Attributes nodes\n    \"Attributes!\": tags.meta,\n    // Add a style to all content inside Italic nodes\n    \"Italic/...\": tags.emphasis,\n    // Style InvalidString nodes as both `string` and `invalid`\n    \"InvalidString\": [tags.string, tags.invalid],\n    // Style the node named \"/\" as punctuation\n    '\"/\"': tags.punctuation\n  })\n)\n```\n*/\nfunction styleTags(spec) {\n    let byName = Object.create(null);\n    for (let prop in spec) {\n        let tags = spec[prop];\n        if (!Array.isArray(tags))\n            tags = [tags];\n        for (let part of prop.split(\" \"))\n            if (part) {\n                let pieces = [], mode = 2 /* Mode.Normal */, rest = part;\n                for (let pos = 0;;) {\n                    if (rest == \"...\" && pos > 0 && pos + 3 == part.length) {\n                        mode = 1 /* Mode.Inherit */;\n                        break;\n                    }\n                    let m = /^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(rest);\n                    if (!m)\n                        throw new RangeError(\"Invalid path: \" + part);\n                    pieces.push(m[0] == \"*\" ? \"\" : m[0][0] == '\"' ? JSON.parse(m[0]) : m[0]);\n                    pos += m[0].length;\n                    if (pos == part.length)\n                        break;\n                    let next = part[pos++];\n                    if (pos == part.length && next == \"!\") {\n                        mode = 0 /* Mode.Opaque */;\n                        break;\n                    }\n                    if (next != \"/\")\n                        throw new RangeError(\"Invalid path: \" + part);\n                    rest = part.slice(pos);\n                }\n                let last = pieces.length - 1, inner = pieces[last];\n                if (!inner)\n                    throw new RangeError(\"Invalid path: \" + part);\n                let rule = new Rule(tags, mode, last > 0 ? pieces.slice(0, last) : null);\n                byName[inner] = rule.sort(byName[inner]);\n            }\n    }\n    return ruleNodeProp.add(byName);\n}\nconst ruleNodeProp = new NodeProp();\nclass Rule {\n    constructor(tags, mode, context, next) {\n        this.tags = tags;\n        this.mode = mode;\n        this.context = context;\n        this.next = next;\n    }\n    get opaque() { return this.mode == 0 /* Mode.Opaque */; }\n    get inherit() { return this.mode == 1 /* Mode.Inherit */; }\n    sort(other) {\n        if (!other || other.depth < this.depth) {\n            this.next = other;\n            return this;\n        }\n        other.next = this.sort(other.next);\n        return other;\n    }\n    get depth() { return this.context ? this.context.length : 0; }\n}\nRule.empty = new Rule([], 2 /* Mode.Normal */, null);\n/**\nDefine a [highlighter](#highlight.Highlighter) from an array of\ntag/class pairs. Classes associated with more specific tags will\ntake precedence.\n*/\nfunction tagHighlighter(tags, options) {\n    let map = Object.create(null);\n    for (let style of tags) {\n        if (!Array.isArray(style.tag))\n            map[style.tag.id] = style.class;\n        else\n            for (let tag of style.tag)\n                map[tag.id] = style.class;\n    }\n    let { scope, all = null } = options || {};\n    return {\n        style: (tags) => {\n            let cls = all;\n            for (let tag of tags) {\n                for (let sub of tag.set) {\n                    let tagClass = map[sub.id];\n                    if (tagClass) {\n                        cls = cls ? cls + \" \" + tagClass : tagClass;\n                        break;\n                    }\n                }\n            }\n            return cls;\n        },\n        scope\n    };\n}\nfunction highlightTags(highlighters, tags) {\n    let result = null;\n    for (let highlighter of highlighters) {\n        let value = highlighter.style(tags);\n        if (value)\n            result = result ? result + \" \" + value : value;\n    }\n    return result;\n}\n/**\nHighlight the given [tree](#common.Tree) with the given\n[highlighter](#highlight.Highlighter). Often, the higher-level\n[`highlightCode`](#highlight.highlightCode) function is easier to\nuse.\n*/\nfunction highlightTree(tree, highlighter, \n/**\nAssign styling to a region of the text. Will be called, in order\nof position, for any ranges where more than zero classes apply.\n`classes` is a space separated string of CSS classes.\n*/\nputStyle, \n/**\nThe start of the range to highlight.\n*/\nfrom = 0, \n/**\nThe end of the range.\n*/\nto = tree.length) {\n    let builder = new HighlightBuilder(from, Array.isArray(highlighter) ? highlighter : [highlighter], putStyle);\n    builder.highlightRange(tree.cursor(), from, to, \"\", builder.highlighters);\n    builder.flush(to);\n}\n/**\nHighlight the given tree with the given highlighter, calling\n`putText` for every piece of text, either with a set of classes or\nwith the empty string when unstyled, and `putBreak` for every line\nbreak.\n*/\nfunction highlightCode(code, tree, highlighter, putText, putBreak, from = 0, to = code.length) {\n    let pos = from;\n    function writeTo(p, classes) {\n        if (p <= pos)\n            return;\n        for (let text = code.slice(pos, p), i = 0;;) {\n            let nextBreak = text.indexOf(\"\\n\", i);\n            let upto = nextBreak < 0 ? text.length : nextBreak;\n            if (upto > i)\n                putText(text.slice(i, upto), classes);\n            if (nextBreak < 0)\n                break;\n            putBreak();\n            i = nextBreak + 1;\n        }\n        pos = p;\n    }\n    highlightTree(tree, highlighter, (from, to, classes) => {\n        writeTo(from, \"\");\n        writeTo(to, classes);\n    }, from, to);\n    writeTo(to, \"\");\n}\nclass HighlightBuilder {\n    constructor(at, highlighters, span) {\n        this.at = at;\n        this.highlighters = highlighters;\n        this.span = span;\n        this.class = \"\";\n    }\n    startSpan(at, cls) {\n        if (cls != this.class) {\n            this.flush(at);\n            if (at > this.at)\n                this.at = at;\n            this.class = cls;\n        }\n    }\n    flush(to) {\n        if (to > this.at && this.class)\n            this.span(this.at, to, this.class);\n    }\n    highlightRange(cursor, from, to, inheritedClass, highlighters) {\n        let { type, from: start, to: end } = cursor;\n        if (start >= to || end <= from)\n            return;\n        if (type.isTop)\n            highlighters = this.highlighters.filter(h => !h.scope || h.scope(type));\n        let cls = inheritedClass;\n        let rule = getStyleTags(cursor) || Rule.empty;\n        let tagCls = highlightTags(highlighters, rule.tags);\n        if (tagCls) {\n            if (cls)\n                cls += \" \";\n            cls += tagCls;\n            if (rule.mode == 1 /* Mode.Inherit */)\n                inheritedClass += (inheritedClass ? \" \" : \"\") + tagCls;\n        }\n        this.startSpan(Math.max(from, start), cls);\n        if (rule.opaque)\n            return;\n        let mounted = cursor.tree && cursor.tree.prop(NodeProp.mounted);\n        if (mounted && mounted.overlay) {\n            let inner = cursor.node.enter(mounted.overlay[0].from + start, 1);\n            let innerHighlighters = this.highlighters.filter(h => !h.scope || h.scope(mounted.tree.type));\n            let hasChild = cursor.firstChild();\n            for (let i = 0, pos = start;; i++) {\n                let next = i < mounted.overlay.length ? mounted.overlay[i] : null;\n                let nextPos = next ? next.from + start : end;\n                let rangeFrom = Math.max(from, pos), rangeTo = Math.min(to, nextPos);\n                if (rangeFrom < rangeTo && hasChild) {\n                    while (cursor.from < rangeTo) {\n                        this.highlightRange(cursor, rangeFrom, rangeTo, inheritedClass, highlighters);\n                        this.startSpan(Math.min(rangeTo, cursor.to), cls);\n                        if (cursor.to >= nextPos || !cursor.nextSibling())\n                            break;\n                    }\n                }\n                if (!next || nextPos > to)\n                    break;\n                pos = next.to + start;\n                if (pos > from) {\n                    this.highlightRange(inner.cursor(), Math.max(from, next.from + start), Math.min(to, pos), \"\", innerHighlighters);\n                    this.startSpan(Math.min(to, pos), cls);\n                }\n            }\n            if (hasChild)\n                cursor.parent();\n        }\n        else if (cursor.firstChild()) {\n            if (mounted)\n                inheritedClass = \"\";\n            do {\n                if (cursor.to <= from)\n                    continue;\n                if (cursor.from >= to)\n                    break;\n                this.highlightRange(cursor, from, to, inheritedClass, highlighters);\n                this.startSpan(Math.min(to, cursor.to), cls);\n            } while (cursor.nextSibling());\n            cursor.parent();\n        }\n    }\n}\n/**\nMatch a syntax node's [highlight rules](#highlight.styleTags). If\nthere's a match, return its set of tags, and whether it is\nopaque (uses a `!`) or applies to all child nodes (`/...`).\n*/\nfunction getStyleTags(node) {\n    let rule = node.type.prop(ruleNodeProp);\n    while (rule && rule.context && !node.matchContext(rule.context))\n        rule = rule.next;\n    return rule || null;\n}\nconst t = Tag.define;\nconst comment = t(), name = t(), typeName = t(name), propertyName = t(name), literal = t(), string = t(literal), number = t(literal), content = t(), heading = t(content), keyword = t(), operator = t(), punctuation = t(), bracket = t(punctuation), meta = t();\n/**\nThe default set of highlighting [tags](#highlight.Tag).\n\nThis collection is heavily biased towards programming languages,\nand necessarily incomplete. A full ontology of syntactic\nconstructs would fill a stack of books, and be impractical to\nwrite themes for. So try to make do with this set. If all else\nfails, [open an\nissue](https://github.com/codemirror/codemirror.next) to propose a\nnew tag, or [define](#highlight.Tag^define) a local custom tag for\nyour use case.\n\nNote that it is not obligatory to always attach the most specific\ntag possible to an element—if your grammar can't easily\ndistinguish a certain type of element (such as a local variable),\nit is okay to style it as its more general variant (a variable).\n\nFor tags that extend some parent tag, the documentation links to\nthe parent.\n*/\nconst tags = {\n    /**\n    A comment.\n    */\n    comment,\n    /**\n    A line [comment](#highlight.tags.comment).\n    */\n    lineComment: t(comment),\n    /**\n    A block [comment](#highlight.tags.comment).\n    */\n    blockComment: t(comment),\n    /**\n    A documentation [comment](#highlight.tags.comment).\n    */\n    docComment: t(comment),\n    /**\n    Any kind of identifier.\n    */\n    name,\n    /**\n    The [name](#highlight.tags.name) of a variable.\n    */\n    variableName: t(name),\n    /**\n    A type [name](#highlight.tags.name).\n    */\n    typeName: typeName,\n    /**\n    A tag name (subtag of [`typeName`](#highlight.tags.typeName)).\n    */\n    tagName: t(typeName),\n    /**\n    A property or field [name](#highlight.tags.name).\n    */\n    propertyName: propertyName,\n    /**\n    An attribute name (subtag of [`propertyName`](#highlight.tags.propertyName)).\n    */\n    attributeName: t(propertyName),\n    /**\n    The [name](#highlight.tags.name) of a class.\n    */\n    className: t(name),\n    /**\n    A label [name](#highlight.tags.name).\n    */\n    labelName: t(name),\n    /**\n    A namespace [name](#highlight.tags.name).\n    */\n    namespace: t(name),\n    /**\n    The [name](#highlight.tags.name) of a macro.\n    */\n    macroName: t(name),\n    /**\n    A literal value.\n    */\n    literal,\n    /**\n    A string [literal](#highlight.tags.literal).\n    */\n    string,\n    /**\n    A documentation [string](#highlight.tags.string).\n    */\n    docString: t(string),\n    /**\n    A character literal (subtag of [string](#highlight.tags.string)).\n    */\n    character: t(string),\n    /**\n    An attribute value (subtag of [string](#highlight.tags.string)).\n    */\n    attributeValue: t(string),\n    /**\n    A number [literal](#highlight.tags.literal).\n    */\n    number,\n    /**\n    An integer [number](#highlight.tags.number) literal.\n    */\n    integer: t(number),\n    /**\n    A floating-point [number](#highlight.tags.number) literal.\n    */\n    float: t(number),\n    /**\n    A boolean [literal](#highlight.tags.literal).\n    */\n    bool: t(literal),\n    /**\n    Regular expression [literal](#highlight.tags.literal).\n    */\n    regexp: t(literal),\n    /**\n    An escape [literal](#highlight.tags.literal), for example a\n    backslash escape in a string.\n    */\n    escape: t(literal),\n    /**\n    A color [literal](#highlight.tags.literal).\n    */\n    color: t(literal),\n    /**\n    A URL [literal](#highlight.tags.literal).\n    */\n    url: t(literal),\n    /**\n    A language keyword.\n    */\n    keyword,\n    /**\n    The [keyword](#highlight.tags.keyword) for the self or this\n    object.\n    */\n    self: t(keyword),\n    /**\n    The [keyword](#highlight.tags.keyword) for null.\n    */\n    null: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) denoting some atomic value.\n    */\n    atom: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) that represents a unit.\n    */\n    unit: t(keyword),\n    /**\n    A modifier [keyword](#highlight.tags.keyword).\n    */\n    modifier: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) that acts as an operator.\n    */\n    operatorKeyword: t(keyword),\n    /**\n    A control-flow related [keyword](#highlight.tags.keyword).\n    */\n    controlKeyword: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) that defines something.\n    */\n    definitionKeyword: t(keyword),\n    /**\n    A [keyword](#highlight.tags.keyword) related to defining or\n    interfacing with modules.\n    */\n    moduleKeyword: t(keyword),\n    /**\n    An operator.\n    */\n    operator,\n    /**\n    An [operator](#highlight.tags.operator) that dereferences something.\n    */\n    derefOperator: t(operator),\n    /**\n    Arithmetic-related [operator](#highlight.tags.operator).\n    */\n    arithmeticOperator: t(operator),\n    /**\n    Logical [operator](#highlight.tags.operator).\n    */\n    logicOperator: t(operator),\n    /**\n    Bit [operator](#highlight.tags.operator).\n    */\n    bitwiseOperator: t(operator),\n    /**\n    Comparison [operator](#highlight.tags.operator).\n    */\n    compareOperator: t(operator),\n    /**\n    [Operator](#highlight.tags.operator) that updates its operand.\n    */\n    updateOperator: t(operator),\n    /**\n    [Operator](#highlight.tags.operator) that defines something.\n    */\n    definitionOperator: t(operator),\n    /**\n    Type-related [operator](#highlight.tags.operator).\n    */\n    typeOperator: t(operator),\n    /**\n    Control-flow [operator](#highlight.tags.operator).\n    */\n    controlOperator: t(operator),\n    /**\n    Program or markup punctuation.\n    */\n    punctuation,\n    /**\n    [Punctuation](#highlight.tags.punctuation) that separates\n    things.\n    */\n    separator: t(punctuation),\n    /**\n    Bracket-style [punctuation](#highlight.tags.punctuation).\n    */\n    bracket,\n    /**\n    Angle [brackets](#highlight.tags.bracket) (usually `<` and `>`\n    tokens).\n    */\n    angleBracket: t(bracket),\n    /**\n    Square [brackets](#highlight.tags.bracket) (usually `[` and `]`\n    tokens).\n    */\n    squareBracket: t(bracket),\n    /**\n    Parentheses (usually `(` and `)` tokens). Subtag of\n    [bracket](#highlight.tags.bracket).\n    */\n    paren: t(bracket),\n    /**\n    Braces (usually `{` and `}` tokens). Subtag of\n    [bracket](#highlight.tags.bracket).\n    */\n    brace: t(bracket),\n    /**\n    Content, for example plain text in XML or markup documents.\n    */\n    content,\n    /**\n    [Content](#highlight.tags.content) that represents a heading.\n    */\n    heading,\n    /**\n    A level 1 [heading](#highlight.tags.heading).\n    */\n    heading1: t(heading),\n    /**\n    A level 2 [heading](#highlight.tags.heading).\n    */\n    heading2: t(heading),\n    /**\n    A level 3 [heading](#highlight.tags.heading).\n    */\n    heading3: t(heading),\n    /**\n    A level 4 [heading](#highlight.tags.heading).\n    */\n    heading4: t(heading),\n    /**\n    A level 5 [heading](#highlight.tags.heading).\n    */\n    heading5: t(heading),\n    /**\n    A level 6 [heading](#highlight.tags.heading).\n    */\n    heading6: t(heading),\n    /**\n    A prose separator (such as a horizontal rule).\n    */\n    contentSeparator: t(content),\n    /**\n    [Content](#highlight.tags.content) that represents a list.\n    */\n    list: t(content),\n    /**\n    [Content](#highlight.tags.content) that represents a quote.\n    */\n    quote: t(content),\n    /**\n    [Content](#highlight.tags.content) that is emphasized.\n    */\n    emphasis: t(content),\n    /**\n    [Content](#highlight.tags.content) that is styled strong.\n    */\n    strong: t(content),\n    /**\n    [Content](#highlight.tags.content) that is part of a link.\n    */\n    link: t(content),\n    /**\n    [Content](#highlight.tags.content) that is styled as code or\n    monospace.\n    */\n    monospace: t(content),\n    /**\n    [Content](#highlight.tags.content) that has a strike-through\n    style.\n    */\n    strikethrough: t(content),\n    /**\n    Inserted text in a change-tracking format.\n    */\n    inserted: t(),\n    /**\n    Deleted text.\n    */\n    deleted: t(),\n    /**\n    Changed text.\n    */\n    changed: t(),\n    /**\n    An invalid or unsyntactic element.\n    */\n    invalid: t(),\n    /**\n    Metadata or meta-instruction.\n    */\n    meta,\n    /**\n    [Metadata](#highlight.tags.meta) that applies to the entire\n    document.\n    */\n    documentMeta: t(meta),\n    /**\n    [Metadata](#highlight.tags.meta) that annotates or adds\n    attributes to a given syntactic element.\n    */\n    annotation: t(meta),\n    /**\n    Processing instruction or preprocessor directive. Subtag of\n    [meta](#highlight.tags.meta).\n    */\n    processingInstruction: t(meta),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) that indicates that a\n    given element is being defined. Expected to be used with the\n    various [name](#highlight.tags.name) tags.\n    */\n    definition: Tag.defineModifier(),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) that indicates that\n    something is constant. Mostly expected to be used with\n    [variable names](#highlight.tags.variableName).\n    */\n    constant: Tag.defineModifier(),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) used to indicate that\n    a [variable](#highlight.tags.variableName) or [property\n    name](#highlight.tags.propertyName) is being called or defined\n    as a function.\n    */\n    function: Tag.defineModifier(),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) that can be applied to\n    [names](#highlight.tags.name) to indicate that they belong to\n    the language's standard environment.\n    */\n    standard: Tag.defineModifier(),\n    /**\n    [Modifier](#highlight.Tag^defineModifier) that indicates a given\n    [names](#highlight.tags.name) is local to some scope.\n    */\n    local: Tag.defineModifier(),\n    /**\n    A generic variant [modifier](#highlight.Tag^defineModifier) that\n    can be used to tag language-specific alternative variants of\n    some common tag. It is recommended for themes to define special\n    forms of at least the [string](#highlight.tags.string) and\n    [variable name](#highlight.tags.variableName) tags, since those\n    come up a lot.\n    */\n    special: Tag.defineModifier()\n};\n/**\nThis is a highlighter that adds stable, predictable classes to\ntokens, for styling with external CSS.\n\nThe following tags are mapped to their name prefixed with `\"tok-\"`\n(for example `\"tok-comment\"`):\n\n* [`link`](#highlight.tags.link)\n* [`heading`](#highlight.tags.heading)\n* [`emphasis`](#highlight.tags.emphasis)\n* [`strong`](#highlight.tags.strong)\n* [`keyword`](#highlight.tags.keyword)\n* [`atom`](#highlight.tags.atom)\n* [`bool`](#highlight.tags.bool)\n* [`url`](#highlight.tags.url)\n* [`labelName`](#highlight.tags.labelName)\n* [`inserted`](#highlight.tags.inserted)\n* [`deleted`](#highlight.tags.deleted)\n* [`literal`](#highlight.tags.literal)\n* [`string`](#highlight.tags.string)\n* [`number`](#highlight.tags.number)\n* [`variableName`](#highlight.tags.variableName)\n* [`typeName`](#highlight.tags.typeName)\n* [`namespace`](#highlight.tags.namespace)\n* [`className`](#highlight.tags.className)\n* [`macroName`](#highlight.tags.macroName)\n* [`propertyName`](#highlight.tags.propertyName)\n* [`operator`](#highlight.tags.operator)\n* [`comment`](#highlight.tags.comment)\n* [`meta`](#highlight.tags.meta)\n* [`punctuation`](#highlight.tags.punctuation)\n* [`invalid`](#highlight.tags.invalid)\n\nIn addition, these mappings are provided:\n\n* [`regexp`](#highlight.tags.regexp),\n  [`escape`](#highlight.tags.escape), and\n  [`special`](#highlight.tags.special)[`(string)`](#highlight.tags.string)\n  are mapped to `\"tok-string2\"`\n* [`special`](#highlight.tags.special)[`(variableName)`](#highlight.tags.variableName)\n  to `\"tok-variableName2\"`\n* [`local`](#highlight.tags.local)[`(variableName)`](#highlight.tags.variableName)\n  to `\"tok-variableName tok-local\"`\n* [`definition`](#highlight.tags.definition)[`(variableName)`](#highlight.tags.variableName)\n  to `\"tok-variableName tok-definition\"`\n* [`definition`](#highlight.tags.definition)[`(propertyName)`](#highlight.tags.propertyName)\n  to `\"tok-propertyName tok-definition\"`\n*/\nconst classHighlighter = tagHighlighter([\n    { tag: tags.link, class: \"tok-link\" },\n    { tag: tags.heading, class: \"tok-heading\" },\n    { tag: tags.emphasis, class: \"tok-emphasis\" },\n    { tag: tags.strong, class: \"tok-strong\" },\n    { tag: tags.keyword, class: \"tok-keyword\" },\n    { tag: tags.atom, class: \"tok-atom\" },\n    { tag: tags.bool, class: \"tok-bool\" },\n    { tag: tags.url, class: \"tok-url\" },\n    { tag: tags.labelName, class: \"tok-labelName\" },\n    { tag: tags.inserted, class: \"tok-inserted\" },\n    { tag: tags.deleted, class: \"tok-deleted\" },\n    { tag: tags.literal, class: \"tok-literal\" },\n    { tag: tags.string, class: \"tok-string\" },\n    { tag: tags.number, class: \"tok-number\" },\n    { tag: [tags.regexp, tags.escape, tags.special(tags.string)], class: \"tok-string2\" },\n    { tag: tags.variableName, class: \"tok-variableName\" },\n    { tag: tags.local(tags.variableName), class: \"tok-variableName tok-local\" },\n    { tag: tags.definition(tags.variableName), class: \"tok-variableName tok-definition\" },\n    { tag: tags.special(tags.variableName), class: \"tok-variableName2\" },\n    { tag: tags.definition(tags.propertyName), class: \"tok-propertyName tok-definition\" },\n    { tag: tags.typeName, class: \"tok-typeName\" },\n    { tag: tags.namespace, class: \"tok-namespace\" },\n    { tag: tags.className, class: \"tok-className\" },\n    { tag: tags.macroName, class: \"tok-macroName\" },\n    { tag: tags.propertyName, class: \"tok-propertyName\" },\n    { tag: tags.operator, class: \"tok-operator\" },\n    { tag: tags.comment, class: \"tok-comment\" },\n    { tag: tags.meta, class: \"tok-meta\" },\n    { tag: tags.invalid, class: \"tok-invalid\" },\n    { tag: tags.punctuation, class: \"tok-punctuation\" }\n]);\n\nexport { Tag, classHighlighter, getStyleTags, highlightCode, highlightTree, styleTags, tagHighlighter, tags };\n","import { NodeProp, IterMode, Tree, TreeFragment, Parser, NodeType, NodeSet } from '@lezer/common';\nimport { StateEffect, StateField, Facet, EditorState, countColumn, combineConfig, RangeSet, RangeSetBuilder, Prec } from '@codemirror/state';\nimport { ViewPlugin, logException, EditorView, Decoration, WidgetType, gutter, GutterMarker, Direction } from '@codemirror/view';\nimport { tags, tagHighlighter, highlightTree, styleTags } from '@lezer/highlight';\nimport { StyleModule } from 'style-mod';\n\nvar _a;\n/**\nNode prop stored in a parser's top syntax node to provide the\nfacet that stores language-specific data for that language.\n*/\nconst languageDataProp = /*@__PURE__*/new NodeProp();\n/**\nHelper function to define a facet (to be added to the top syntax\nnode(s) for a language via\n[`languageDataProp`](https://codemirror.net/6/docs/ref/#language.languageDataProp)), that will be\nused to associate language data with the language. You\nprobably only need this when subclassing\n[`Language`](https://codemirror.net/6/docs/ref/#language.Language).\n*/\nfunction defineLanguageFacet(baseData) {\n    return Facet.define({\n        combine: baseData ? values => values.concat(baseData) : undefined\n    });\n}\n/**\nSyntax node prop used to register sublanguages. Should be added to\nthe top level node type for the language.\n*/\nconst sublanguageProp = /*@__PURE__*/new NodeProp();\n/**\nA language object manages parsing and per-language\n[metadata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt). Parse data is\nmanaged as a [Lezer](https://lezer.codemirror.net) tree. The class\ncan be used directly, via the [`LRLanguage`](https://codemirror.net/6/docs/ref/#language.LRLanguage)\nsubclass for [Lezer](https://lezer.codemirror.net/) LR parsers, or\nvia the [`StreamLanguage`](https://codemirror.net/6/docs/ref/#language.StreamLanguage) subclass\nfor stream parsers.\n*/\nclass Language {\n    /**\n    Construct a language object. If you need to invoke this\n    directly, first define a data facet with\n    [`defineLanguageFacet`](https://codemirror.net/6/docs/ref/#language.defineLanguageFacet), and then\n    configure your parser to [attach](https://codemirror.net/6/docs/ref/#language.languageDataProp) it\n    to the language's outer syntax node.\n    */\n    constructor(\n    /**\n    The [language data](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt) facet\n    used for this language.\n    */\n    data, parser, extraExtensions = [], \n    /**\n    A language name.\n    */\n    name = \"\") {\n        this.data = data;\n        this.name = name;\n        // Kludge to define EditorState.tree as a debugging helper,\n        // without the EditorState package actually knowing about\n        // languages and lezer trees.\n        if (!EditorState.prototype.hasOwnProperty(\"tree\"))\n            Object.defineProperty(EditorState.prototype, \"tree\", { get() { return syntaxTree(this); } });\n        this.parser = parser;\n        this.extension = [\n            language.of(this),\n            EditorState.languageData.of((state, pos, side) => {\n                let top = topNodeAt(state, pos, side), data = top.type.prop(languageDataProp);\n                if (!data)\n                    return [];\n                let base = state.facet(data), sub = top.type.prop(sublanguageProp);\n                if (sub) {\n                    let innerNode = top.resolve(pos - top.from, side);\n                    for (let sublang of sub)\n                        if (sublang.test(innerNode, state)) {\n                            let data = state.facet(sublang.facet);\n                            return sublang.type == \"replace\" ? data : data.concat(base);\n                        }\n                }\n                return base;\n            })\n        ].concat(extraExtensions);\n    }\n    /**\n    Query whether this language is active at the given position.\n    */\n    isActiveAt(state, pos, side = -1) {\n        return topNodeAt(state, pos, side).type.prop(languageDataProp) == this.data;\n    }\n    /**\n    Find the document regions that were parsed using this language.\n    The returned regions will _include_ any nested languages rooted\n    in this language, when those exist.\n    */\n    findRegions(state) {\n        let lang = state.facet(language);\n        if ((lang === null || lang === void 0 ? void 0 : lang.data) == this.data)\n            return [{ from: 0, to: state.doc.length }];\n        if (!lang || !lang.allowsNesting)\n            return [];\n        let result = [];\n        let explore = (tree, from) => {\n            if (tree.prop(languageDataProp) == this.data) {\n                result.push({ from, to: from + tree.length });\n                return;\n            }\n            let mount = tree.prop(NodeProp.mounted);\n            if (mount) {\n                if (mount.tree.prop(languageDataProp) == this.data) {\n                    if (mount.overlay)\n                        for (let r of mount.overlay)\n                            result.push({ from: r.from + from, to: r.to + from });\n                    else\n                        result.push({ from: from, to: from + tree.length });\n                    return;\n                }\n                else if (mount.overlay) {\n                    let size = result.length;\n                    explore(mount.tree, mount.overlay[0].from + from);\n                    if (result.length > size)\n                        return;\n                }\n            }\n            for (let i = 0; i < tree.children.length; i++) {\n                let ch = tree.children[i];\n                if (ch instanceof Tree)\n                    explore(ch, tree.positions[i] + from);\n            }\n        };\n        explore(syntaxTree(state), 0);\n        return result;\n    }\n    /**\n    Indicates whether this language allows nested languages. The\n    default implementation returns true.\n    */\n    get allowsNesting() { return true; }\n}\n/**\n@internal\n*/\nLanguage.setState = /*@__PURE__*/StateEffect.define();\nfunction topNodeAt(state, pos, side) {\n    let topLang = state.facet(language), tree = syntaxTree(state).topNode;\n    if (!topLang || topLang.allowsNesting) {\n        for (let node = tree; node; node = node.enter(pos, side, IterMode.ExcludeBuffers))\n            if (node.type.isTop)\n                tree = node;\n    }\n    return tree;\n}\n/**\nA subclass of [`Language`](https://codemirror.net/6/docs/ref/#language.Language) for use with Lezer\n[LR parsers](https://lezer.codemirror.net/docs/ref#lr.LRParser)\nparsers.\n*/\nclass LRLanguage extends Language {\n    constructor(data, parser, name) {\n        super(data, parser, [], name);\n        this.parser = parser;\n    }\n    /**\n    Define a language from a parser.\n    */\n    static define(spec) {\n        let data = defineLanguageFacet(spec.languageData);\n        return new LRLanguage(data, spec.parser.configure({\n            props: [languageDataProp.add(type => type.isTop ? data : undefined)]\n        }), spec.name);\n    }\n    /**\n    Create a new instance of this language with a reconfigured\n    version of its parser and optionally a new name.\n    */\n    configure(options, name) {\n        return new LRLanguage(this.data, this.parser.configure(options), name || this.name);\n    }\n    get allowsNesting() { return this.parser.hasWrappers(); }\n}\n/**\nGet the syntax tree for a state, which is the current (possibly\nincomplete) parse tree of the active\n[language](https://codemirror.net/6/docs/ref/#language.Language), or the empty tree if there is no\nlanguage available.\n*/\nfunction syntaxTree(state) {\n    let field = state.field(Language.state, false);\n    return field ? field.tree : Tree.empty;\n}\n/**\nTry to get a parse tree that spans at least up to `upto`. The\nmethod will do at most `timeout` milliseconds of work to parse\nup to that point if the tree isn't already available.\n*/\nfunction ensureSyntaxTree(state, upto, timeout = 50) {\n    var _a;\n    let parse = (_a = state.field(Language.state, false)) === null || _a === void 0 ? void 0 : _a.context;\n    if (!parse)\n        return null;\n    let oldVieport = parse.viewport;\n    parse.updateViewport({ from: 0, to: upto });\n    let result = parse.isDone(upto) || parse.work(timeout, upto) ? parse.tree : null;\n    parse.updateViewport(oldVieport);\n    return result;\n}\n/**\nQueries whether there is a full syntax tree available up to the\ngiven document position. If there isn't, the background parse\nprocess _might_ still be working and update the tree further, but\nthere is no guarantee of that—the parser will [stop\nworking](https://codemirror.net/6/docs/ref/#language.syntaxParserRunning) when it has spent a\ncertain amount of time or has moved beyond the visible viewport.\nAlways returns false if no language has been enabled.\n*/\nfunction syntaxTreeAvailable(state, upto = state.doc.length) {\n    var _a;\n    return ((_a = state.field(Language.state, false)) === null || _a === void 0 ? void 0 : _a.context.isDone(upto)) || false;\n}\n/**\nMove parsing forward, and update the editor state afterwards to\nreflect the new tree. Will work for at most `timeout`\nmilliseconds. Returns true if the parser managed get to the given\nposition in that time.\n*/\nfunction forceParsing(view, upto = view.viewport.to, timeout = 100) {\n    let success = ensureSyntaxTree(view.state, upto, timeout);\n    if (success != syntaxTree(view.state))\n        view.dispatch({});\n    return !!success;\n}\n/**\nTells you whether the language parser is planning to do more\nparsing work (in a `requestIdleCallback` pseudo-thread) or has\nstopped running, either because it parsed the entire document,\nbecause it spent too much time and was cut off, or because there\nis no language parser enabled.\n*/\nfunction syntaxParserRunning(view) {\n    var _a;\n    return ((_a = view.plugin(parseWorker)) === null || _a === void 0 ? void 0 : _a.isWorking()) || false;\n}\n/**\nLezer-style\n[`Input`](https://lezer.codemirror.net/docs/ref#common.Input)\nobject for a [`Text`](https://codemirror.net/6/docs/ref/#state.Text) object.\n*/\nclass DocInput {\n    /**\n    Create an input object for the given document.\n    */\n    constructor(doc) {\n        this.doc = doc;\n        this.cursorPos = 0;\n        this.string = \"\";\n        this.cursor = doc.iter();\n    }\n    get length() { return this.doc.length; }\n    syncTo(pos) {\n        this.string = this.cursor.next(pos - this.cursorPos).value;\n        this.cursorPos = pos + this.string.length;\n        return this.cursorPos - this.string.length;\n    }\n    chunk(pos) {\n        this.syncTo(pos);\n        return this.string;\n    }\n    get lineChunks() { return true; }\n    read(from, to) {\n        let stringStart = this.cursorPos - this.string.length;\n        if (from < stringStart || to >= this.cursorPos)\n            return this.doc.sliceString(from, to);\n        else\n            return this.string.slice(from - stringStart, to - stringStart);\n    }\n}\nlet currentContext = null;\n/**\nA parse context provided to parsers working on the editor content.\n*/\nclass ParseContext {\n    constructor(parser, \n    /**\n    The current editor state.\n    */\n    state, \n    /**\n    Tree fragments that can be reused by incremental re-parses.\n    */\n    fragments = [], \n    /**\n    @internal\n    */\n    tree, \n    /**\n    @internal\n    */\n    treeLen, \n    /**\n    The current editor viewport (or some overapproximation\n    thereof). Intended to be used for opportunistically avoiding\n    work (in which case\n    [`skipUntilInView`](https://codemirror.net/6/docs/ref/#language.ParseContext.skipUntilInView)\n    should be called to make sure the parser is restarted when the\n    skipped region becomes visible).\n    */\n    viewport, \n    /**\n    @internal\n    */\n    skipped, \n    /**\n    This is where skipping parsers can register a promise that,\n    when resolved, will schedule a new parse. It is cleared when\n    the parse worker picks up the promise. @internal\n    */\n    scheduleOn) {\n        this.parser = parser;\n        this.state = state;\n        this.fragments = fragments;\n        this.tree = tree;\n        this.treeLen = treeLen;\n        this.viewport = viewport;\n        this.skipped = skipped;\n        this.scheduleOn = scheduleOn;\n        this.parse = null;\n        /**\n        @internal\n        */\n        this.tempSkipped = [];\n    }\n    /**\n    @internal\n    */\n    static create(parser, state, viewport) {\n        return new ParseContext(parser, state, [], Tree.empty, 0, viewport, [], null);\n    }\n    startParse() {\n        return this.parser.startParse(new DocInput(this.state.doc), this.fragments);\n    }\n    /**\n    @internal\n    */\n    work(until, upto) {\n        if (upto != null && upto >= this.state.doc.length)\n            upto = undefined;\n        if (this.tree != Tree.empty && this.isDone(upto !== null && upto !== void 0 ? upto : this.state.doc.length)) {\n            this.takeTree();\n            return true;\n        }\n        return this.withContext(() => {\n            var _a;\n            if (typeof until == \"number\") {\n                let endTime = Date.now() + until;\n                until = () => Date.now() > endTime;\n            }\n            if (!this.parse)\n                this.parse = this.startParse();\n            if (upto != null && (this.parse.stoppedAt == null || this.parse.stoppedAt > upto) &&\n                upto < this.state.doc.length)\n                this.parse.stopAt(upto);\n            for (;;) {\n                let done = this.parse.advance();\n                if (done) {\n                    this.fragments = this.withoutTempSkipped(TreeFragment.addTree(done, this.fragments, this.parse.stoppedAt != null));\n                    this.treeLen = (_a = this.parse.stoppedAt) !== null && _a !== void 0 ? _a : this.state.doc.length;\n                    this.tree = done;\n                    this.parse = null;\n                    if (this.treeLen < (upto !== null && upto !== void 0 ? upto : this.state.doc.length))\n                        this.parse = this.startParse();\n                    else\n                        return true;\n                }\n                if (until())\n                    return false;\n            }\n        });\n    }\n    /**\n    @internal\n    */\n    takeTree() {\n        let pos, tree;\n        if (this.parse && (pos = this.parse.parsedPos) >= this.treeLen) {\n            if (this.parse.stoppedAt == null || this.parse.stoppedAt > pos)\n                this.parse.stopAt(pos);\n            this.withContext(() => { while (!(tree = this.parse.advance())) { } });\n            this.treeLen = pos;\n            this.tree = tree;\n            this.fragments = this.withoutTempSkipped(TreeFragment.addTree(this.tree, this.fragments, true));\n            this.parse = null;\n        }\n    }\n    withContext(f) {\n        let prev = currentContext;\n        currentContext = this;\n        try {\n            return f();\n        }\n        finally {\n            currentContext = prev;\n        }\n    }\n    withoutTempSkipped(fragments) {\n        for (let r; r = this.tempSkipped.pop();)\n            fragments = cutFragments(fragments, r.from, r.to);\n        return fragments;\n    }\n    /**\n    @internal\n    */\n    changes(changes, newState) {\n        let { fragments, tree, treeLen, viewport, skipped } = this;\n        this.takeTree();\n        if (!changes.empty) {\n            let ranges = [];\n            changes.iterChangedRanges((fromA, toA, fromB, toB) => ranges.push({ fromA, toA, fromB, toB }));\n            fragments = TreeFragment.applyChanges(fragments, ranges);\n            tree = Tree.empty;\n            treeLen = 0;\n            viewport = { from: changes.mapPos(viewport.from, -1), to: changes.mapPos(viewport.to, 1) };\n            if (this.skipped.length) {\n                skipped = [];\n                for (let r of this.skipped) {\n                    let from = changes.mapPos(r.from, 1), to = changes.mapPos(r.to, -1);\n                    if (from < to)\n                        skipped.push({ from, to });\n                }\n            }\n        }\n        return new ParseContext(this.parser, newState, fragments, tree, treeLen, viewport, skipped, this.scheduleOn);\n    }\n    /**\n    @internal\n    */\n    updateViewport(viewport) {\n        if (this.viewport.from == viewport.from && this.viewport.to == viewport.to)\n            return false;\n        this.viewport = viewport;\n        let startLen = this.skipped.length;\n        for (let i = 0; i < this.skipped.length; i++) {\n            let { from, to } = this.skipped[i];\n            if (from < viewport.to && to > viewport.from) {\n                this.fragments = cutFragments(this.fragments, from, to);\n                this.skipped.splice(i--, 1);\n            }\n        }\n        if (this.skipped.length >= startLen)\n            return false;\n        this.reset();\n        return true;\n    }\n    /**\n    @internal\n    */\n    reset() {\n        if (this.parse) {\n            this.takeTree();\n            this.parse = null;\n        }\n    }\n    /**\n    Notify the parse scheduler that the given region was skipped\n    because it wasn't in view, and the parse should be restarted\n    when it comes into view.\n    */\n    skipUntilInView(from, to) {\n        this.skipped.push({ from, to });\n    }\n    /**\n    Returns a parser intended to be used as placeholder when\n    asynchronously loading a nested parser. It'll skip its input and\n    mark it as not-really-parsed, so that the next update will parse\n    it again.\n    \n    When `until` is given, a reparse will be scheduled when that\n    promise resolves.\n    */\n    static getSkippingParser(until) {\n        return new class extends Parser {\n            createParse(input, fragments, ranges) {\n                let from = ranges[0].from, to = ranges[ranges.length - 1].to;\n                let parser = {\n                    parsedPos: from,\n                    advance() {\n                        let cx = currentContext;\n                        if (cx) {\n                            for (let r of ranges)\n                                cx.tempSkipped.push(r);\n                            if (until)\n                                cx.scheduleOn = cx.scheduleOn ? Promise.all([cx.scheduleOn, until]) : until;\n                        }\n                        this.parsedPos = to;\n                        return new Tree(NodeType.none, [], [], to - from);\n                    },\n                    stoppedAt: null,\n                    stopAt() { }\n                };\n                return parser;\n            }\n        };\n    }\n    /**\n    @internal\n    */\n    isDone(upto) {\n        upto = Math.min(upto, this.state.doc.length);\n        let frags = this.fragments;\n        return this.treeLen >= upto && frags.length && frags[0].from == 0 && frags[0].to >= upto;\n    }\n    /**\n    Get the context for the current parse, or `null` if no editor\n    parse is in progress.\n    */\n    static get() { return currentContext; }\n}\nfunction cutFragments(fragments, from, to) {\n    return TreeFragment.applyChanges(fragments, [{ fromA: from, toA: to, fromB: from, toB: to }]);\n}\nclass LanguageState {\n    constructor(\n    // A mutable parse state that is used to preserve work done during\n    // the lifetime of a state when moving to the next state.\n    context) {\n        this.context = context;\n        this.tree = context.tree;\n    }\n    apply(tr) {\n        if (!tr.docChanged && this.tree == this.context.tree)\n            return this;\n        let newCx = this.context.changes(tr.changes, tr.state);\n        // If the previous parse wasn't done, go forward only up to its\n        // end position or the end of the viewport, to avoid slowing down\n        // state updates with parse work beyond the viewport.\n        let upto = this.context.treeLen == tr.startState.doc.length ? undefined\n            : Math.max(tr.changes.mapPos(this.context.treeLen), newCx.viewport.to);\n        if (!newCx.work(20 /* Work.Apply */, upto))\n            newCx.takeTree();\n        return new LanguageState(newCx);\n    }\n    static init(state) {\n        let vpTo = Math.min(3000 /* Work.InitViewport */, state.doc.length);\n        let parseState = ParseContext.create(state.facet(language).parser, state, { from: 0, to: vpTo });\n        if (!parseState.work(20 /* Work.Apply */, vpTo))\n            parseState.takeTree();\n        return new LanguageState(parseState);\n    }\n}\nLanguage.state = /*@__PURE__*/StateField.define({\n    create: LanguageState.init,\n    update(value, tr) {\n        for (let e of tr.effects)\n            if (e.is(Language.setState))\n                return e.value;\n        if (tr.startState.facet(language) != tr.state.facet(language))\n            return LanguageState.init(tr.state);\n        return value.apply(tr);\n    }\n});\nlet requestIdle = (callback) => {\n    let timeout = setTimeout(() => callback(), 500 /* Work.MaxPause */);\n    return () => clearTimeout(timeout);\n};\nif (typeof requestIdleCallback != \"undefined\")\n    requestIdle = (callback) => {\n        let idle = -1, timeout = setTimeout(() => {\n            idle = requestIdleCallback(callback, { timeout: 500 /* Work.MaxPause */ - 100 /* Work.MinPause */ });\n        }, 100 /* Work.MinPause */);\n        return () => idle < 0 ? clearTimeout(timeout) : cancelIdleCallback(idle);\n    };\nconst isInputPending = typeof navigator != \"undefined\" && ((_a = navigator.scheduling) === null || _a === void 0 ? void 0 : _a.isInputPending)\n    ? () => navigator.scheduling.isInputPending() : null;\nconst parseWorker = /*@__PURE__*/ViewPlugin.fromClass(class ParseWorker {\n    constructor(view) {\n        this.view = view;\n        this.working = null;\n        this.workScheduled = 0;\n        // End of the current time chunk\n        this.chunkEnd = -1;\n        // Milliseconds of budget left for this chunk\n        this.chunkBudget = -1;\n        this.work = this.work.bind(this);\n        this.scheduleWork();\n    }\n    update(update) {\n        let cx = this.view.state.field(Language.state).context;\n        if (cx.updateViewport(update.view.viewport) || this.view.viewport.to > cx.treeLen)\n            this.scheduleWork();\n        if (update.docChanged || update.selectionSet) {\n            if (this.view.hasFocus)\n                this.chunkBudget += 50 /* Work.ChangeBonus */;\n            this.scheduleWork();\n        }\n        this.checkAsyncSchedule(cx);\n    }\n    scheduleWork() {\n        if (this.working)\n            return;\n        let { state } = this.view, field = state.field(Language.state);\n        if (field.tree != field.context.tree || !field.context.isDone(state.doc.length))\n            this.working = requestIdle(this.work);\n    }\n    work(deadline) {\n        this.working = null;\n        let now = Date.now();\n        if (this.chunkEnd < now && (this.chunkEnd < 0 || this.view.hasFocus)) { // Start a new chunk\n            this.chunkEnd = now + 30000 /* Work.ChunkTime */;\n            this.chunkBudget = 3000 /* Work.ChunkBudget */;\n        }\n        if (this.chunkBudget <= 0)\n            return; // No more budget\n        let { state, viewport: { to: vpTo } } = this.view, field = state.field(Language.state);\n        if (field.tree == field.context.tree && field.context.isDone(vpTo + 100000 /* Work.MaxParseAhead */))\n            return;\n        let endTime = Date.now() + Math.min(this.chunkBudget, 100 /* Work.Slice */, deadline && !isInputPending ? Math.max(25 /* Work.MinSlice */, deadline.timeRemaining() - 5) : 1e9);\n        let viewportFirst = field.context.treeLen < vpTo && state.doc.length > vpTo + 1000;\n        let done = field.context.work(() => {\n            return isInputPending && isInputPending() || Date.now() > endTime;\n        }, vpTo + (viewportFirst ? 0 : 100000 /* Work.MaxParseAhead */));\n        this.chunkBudget -= Date.now() - now;\n        if (done || this.chunkBudget <= 0) {\n            field.context.takeTree();\n            this.view.dispatch({ effects: Language.setState.of(new LanguageState(field.context)) });\n        }\n        if (this.chunkBudget > 0 && !(done && !viewportFirst))\n            this.scheduleWork();\n        this.checkAsyncSchedule(field.context);\n    }\n    checkAsyncSchedule(cx) {\n        if (cx.scheduleOn) {\n            this.workScheduled++;\n            cx.scheduleOn\n                .then(() => this.scheduleWork())\n                .catch(err => logException(this.view.state, err))\n                .then(() => this.workScheduled--);\n            cx.scheduleOn = null;\n        }\n    }\n    destroy() {\n        if (this.working)\n            this.working();\n    }\n    isWorking() {\n        return !!(this.working || this.workScheduled > 0);\n    }\n}, {\n    eventHandlers: { focus() { this.scheduleWork(); } }\n});\n/**\nThe facet used to associate a language with an editor state. Used\nby `Language` object's `extension` property (so you don't need to\nmanually wrap your languages in this). Can be used to access the\ncurrent language on a state.\n*/\nconst language = /*@__PURE__*/Facet.define({\n    combine(languages) { return languages.length ? languages[0] : null; },\n    enables: language => [\n        Language.state,\n        parseWorker,\n        EditorView.contentAttributes.compute([language], state => {\n            let lang = state.facet(language);\n            return lang && lang.name ? { \"data-language\": lang.name } : {};\n        })\n    ]\n});\n/**\nThis class bundles a [language](https://codemirror.net/6/docs/ref/#language.Language) with an\noptional set of supporting extensions. Language packages are\nencouraged to export a function that optionally takes a\nconfiguration object and returns a `LanguageSupport` instance, as\nthe main way for client code to use the package.\n*/\nclass LanguageSupport {\n    /**\n    Create a language support object.\n    */\n    constructor(\n    /**\n    The language object.\n    */\n    language, \n    /**\n    An optional set of supporting extensions. When nesting a\n    language in another language, the outer language is encouraged\n    to include the supporting extensions for its inner languages\n    in its own set of support extensions.\n    */\n    support = []) {\n        this.language = language;\n        this.support = support;\n        this.extension = [language, support];\n    }\n}\n/**\nLanguage descriptions are used to store metadata about languages\nand to dynamically load them. Their main role is finding the\nappropriate language for a filename or dynamically loading nested\nparsers.\n*/\nclass LanguageDescription {\n    constructor(\n    /**\n    The name of this language.\n    */\n    name, \n    /**\n    Alternative names for the mode (lowercased, includes `this.name`).\n    */\n    alias, \n    /**\n    File extensions associated with this language.\n    */\n    extensions, \n    /**\n    Optional filename pattern that should be associated with this\n    language.\n    */\n    filename, loadFunc, \n    /**\n    If the language has been loaded, this will hold its value.\n    */\n    support = undefined) {\n        this.name = name;\n        this.alias = alias;\n        this.extensions = extensions;\n        this.filename = filename;\n        this.loadFunc = loadFunc;\n        this.support = support;\n        this.loading = null;\n    }\n    /**\n    Start loading the the language. Will return a promise that\n    resolves to a [`LanguageSupport`](https://codemirror.net/6/docs/ref/#language.LanguageSupport)\n    object when the language successfully loads.\n    */\n    load() {\n        return this.loading || (this.loading = this.loadFunc().then(support => this.support = support, err => { this.loading = null; throw err; }));\n    }\n    /**\n    Create a language description.\n    */\n    static of(spec) {\n        let { load, support } = spec;\n        if (!load) {\n            if (!support)\n                throw new RangeError(\"Must pass either 'load' or 'support' to LanguageDescription.of\");\n            load = () => Promise.resolve(support);\n        }\n        return new LanguageDescription(spec.name, (spec.alias || []).concat(spec.name).map(s => s.toLowerCase()), spec.extensions || [], spec.filename, load, support);\n    }\n    /**\n    Look for a language in the given array of descriptions that\n    matches the filename. Will first match\n    [`filename`](https://codemirror.net/6/docs/ref/#language.LanguageDescription.filename) patterns,\n    and then [extensions](https://codemirror.net/6/docs/ref/#language.LanguageDescription.extensions),\n    and return the first language that matches.\n    */\n    static matchFilename(descs, filename) {\n        for (let d of descs)\n            if (d.filename && d.filename.test(filename))\n                return d;\n        let ext = /\\.([^.]+)$/.exec(filename);\n        if (ext)\n            for (let d of descs)\n                if (d.extensions.indexOf(ext[1]) > -1)\n                    return d;\n        return null;\n    }\n    /**\n    Look for a language whose name or alias matches the the given\n    name (case-insensitively). If `fuzzy` is true, and no direct\n    matchs is found, this'll also search for a language whose name\n    or alias occurs in the string (for names shorter than three\n    characters, only when surrounded by non-word characters).\n    */\n    static matchLanguageName(descs, name, fuzzy = true) {\n        name = name.toLowerCase();\n        for (let d of descs)\n            if (d.alias.some(a => a == name))\n                return d;\n        if (fuzzy)\n            for (let d of descs)\n                for (let a of d.alias) {\n                    let found = name.indexOf(a);\n                    if (found > -1 && (a.length > 2 || !/\\w/.test(name[found - 1]) && !/\\w/.test(name[found + a.length])))\n                        return d;\n                }\n        return null;\n    }\n}\n\n/**\nFacet that defines a way to provide a function that computes the\nappropriate indentation depth, as a column number (see\n[`indentString`](https://codemirror.net/6/docs/ref/#language.indentString)), at the start of a given\nline. A return value of `null` indicates no indentation can be\ndetermined, and the line should inherit the indentation of the one\nabove it. A return value of `undefined` defers to the next indent\nservice.\n*/\nconst indentService = /*@__PURE__*/Facet.define();\n/**\nFacet for overriding the unit by which indentation happens. Should\nbe a string consisting either entirely of the same whitespace\ncharacter. When not set, this defaults to 2 spaces.\n*/\nconst indentUnit = /*@__PURE__*/Facet.define({\n    combine: values => {\n        if (!values.length)\n            return \"  \";\n        let unit = values[0];\n        if (!unit || /\\S/.test(unit) || Array.from(unit).some(e => e != unit[0]))\n            throw new Error(\"Invalid indent unit: \" + JSON.stringify(values[0]));\n        return unit;\n    }\n});\n/**\nReturn the _column width_ of an indent unit in the state.\nDetermined by the [`indentUnit`](https://codemirror.net/6/docs/ref/#language.indentUnit)\nfacet, and [`tabSize`](https://codemirror.net/6/docs/ref/#state.EditorState^tabSize) when that\ncontains tabs.\n*/\nfunction getIndentUnit(state) {\n    let unit = state.facet(indentUnit);\n    return unit.charCodeAt(0) == 9 ? state.tabSize * unit.length : unit.length;\n}\n/**\nCreate an indentation string that covers columns 0 to `cols`.\nWill use tabs for as much of the columns as possible when the\n[`indentUnit`](https://codemirror.net/6/docs/ref/#language.indentUnit) facet contains\ntabs.\n*/\nfunction indentString(state, cols) {\n    let result = \"\", ts = state.tabSize, ch = state.facet(indentUnit)[0];\n    if (ch == \"\\t\") {\n        while (cols >= ts) {\n            result += \"\\t\";\n            cols -= ts;\n        }\n        ch = \" \";\n    }\n    for (let i = 0; i < cols; i++)\n        result += ch;\n    return result;\n}\n/**\nGet the indentation, as a column number, at the given position.\nWill first consult any [indent services](https://codemirror.net/6/docs/ref/#language.indentService)\nthat are registered, and if none of those return an indentation,\nthis will check the syntax tree for the [indent node\nprop](https://codemirror.net/6/docs/ref/#language.indentNodeProp) and use that if found. Returns a\nnumber when an indentation could be determined, and null\notherwise.\n*/\nfunction getIndentation(context, pos) {\n    if (context instanceof EditorState)\n        context = new IndentContext(context);\n    for (let service of context.state.facet(indentService)) {\n        let result = service(context, pos);\n        if (result !== undefined)\n            return result;\n    }\n    let tree = syntaxTree(context.state);\n    return tree.length >= pos ? syntaxIndentation(context, tree, pos) : null;\n}\n/**\nCreate a change set that auto-indents all lines touched by the\ngiven document range.\n*/\nfunction indentRange(state, from, to) {\n    let updated = Object.create(null);\n    let context = new IndentContext(state, { overrideIndentation: start => { var _a; return (_a = updated[start]) !== null && _a !== void 0 ? _a : -1; } });\n    let changes = [];\n    for (let pos = from; pos <= to;) {\n        let line = state.doc.lineAt(pos);\n        pos = line.to + 1;\n        let indent = getIndentation(context, line.from);\n        if (indent == null)\n            continue;\n        if (!/\\S/.test(line.text))\n            indent = 0;\n        let cur = /^\\s*/.exec(line.text)[0];\n        let norm = indentString(state, indent);\n        if (cur != norm) {\n            updated[line.from] = indent;\n            changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n        }\n    }\n    return state.changes(changes);\n}\n/**\nIndentation contexts are used when calling [indentation\nservices](https://codemirror.net/6/docs/ref/#language.indentService). They provide helper utilities\nuseful in indentation logic, and can selectively override the\nindentation reported for some lines.\n*/\nclass IndentContext {\n    /**\n    Create an indent context.\n    */\n    constructor(\n    /**\n    The editor state.\n    */\n    state, \n    /**\n    @internal\n    */\n    options = {}) {\n        this.state = state;\n        this.options = options;\n        this.unit = getIndentUnit(state);\n    }\n    /**\n    Get a description of the line at the given position, taking\n    [simulated line\n    breaks](https://codemirror.net/6/docs/ref/#language.IndentContext.constructor^options.simulateBreak)\n    into account. If there is such a break at `pos`, the `bias`\n    argument determines whether the part of the line line before or\n    after the break is used.\n    */\n    lineAt(pos, bias = 1) {\n        let line = this.state.doc.lineAt(pos);\n        let { simulateBreak, simulateDoubleBreak } = this.options;\n        if (simulateBreak != null && simulateBreak >= line.from && simulateBreak <= line.to) {\n            if (simulateDoubleBreak && simulateBreak == pos)\n                return { text: \"\", from: pos };\n            else if (bias < 0 ? simulateBreak < pos : simulateBreak <= pos)\n                return { text: line.text.slice(simulateBreak - line.from), from: simulateBreak };\n            else\n                return { text: line.text.slice(0, simulateBreak - line.from), from: line.from };\n        }\n        return line;\n    }\n    /**\n    Get the text directly after `pos`, either the entire line\n    or the next 100 characters, whichever is shorter.\n    */\n    textAfterPos(pos, bias = 1) {\n        if (this.options.simulateDoubleBreak && pos == this.options.simulateBreak)\n            return \"\";\n        let { text, from } = this.lineAt(pos, bias);\n        return text.slice(pos - from, Math.min(text.length, pos + 100 - from));\n    }\n    /**\n    Find the column for the given position.\n    */\n    column(pos, bias = 1) {\n        let { text, from } = this.lineAt(pos, bias);\n        let result = this.countColumn(text, pos - from);\n        let override = this.options.overrideIndentation ? this.options.overrideIndentation(from) : -1;\n        if (override > -1)\n            result += override - this.countColumn(text, text.search(/\\S|$/));\n        return result;\n    }\n    /**\n    Find the column position (taking tabs into account) of the given\n    position in the given string.\n    */\n    countColumn(line, pos = line.length) {\n        return countColumn(line, this.state.tabSize, pos);\n    }\n    /**\n    Find the indentation column of the line at the given point.\n    */\n    lineIndent(pos, bias = 1) {\n        let { text, from } = this.lineAt(pos, bias);\n        let override = this.options.overrideIndentation;\n        if (override) {\n            let overriden = override(from);\n            if (overriden > -1)\n                return overriden;\n        }\n        return this.countColumn(text, text.search(/\\S|$/));\n    }\n    /**\n    Returns the [simulated line\n    break](https://codemirror.net/6/docs/ref/#language.IndentContext.constructor^options.simulateBreak)\n    for this context, if any.\n    */\n    get simulatedBreak() {\n        return this.options.simulateBreak || null;\n    }\n}\n/**\nA syntax tree node prop used to associate indentation strategies\nwith node types. Such a strategy is a function from an indentation\ncontext to a column number (see also\n[`indentString`](https://codemirror.net/6/docs/ref/#language.indentString)) or null, where null\nindicates that no definitive indentation can be determined.\n*/\nconst indentNodeProp = /*@__PURE__*/new NodeProp();\n// Compute the indentation for a given position from the syntax tree.\nfunction syntaxIndentation(cx, ast, pos) {\n    let stack = ast.resolveStack(pos);\n    let inner = stack.node.enterUnfinishedNodesBefore(pos);\n    if (inner != stack.node) {\n        let add = [];\n        for (let cur = inner; cur != stack.node; cur = cur.parent)\n            add.push(cur);\n        for (let i = add.length - 1; i >= 0; i--)\n            stack = { node: add[i], next: stack };\n    }\n    return indentFor(stack, cx, pos);\n}\nfunction indentFor(stack, cx, pos) {\n    for (let cur = stack; cur; cur = cur.next) {\n        let strategy = indentStrategy(cur.node);\n        if (strategy)\n            return strategy(TreeIndentContext.create(cx, pos, cur));\n    }\n    return 0;\n}\nfunction ignoreClosed(cx) {\n    return cx.pos == cx.options.simulateBreak && cx.options.simulateDoubleBreak;\n}\nfunction indentStrategy(tree) {\n    let strategy = tree.type.prop(indentNodeProp);\n    if (strategy)\n        return strategy;\n    let first = tree.firstChild, close;\n    if (first && (close = first.type.prop(NodeProp.closedBy))) {\n        let last = tree.lastChild, closed = last && close.indexOf(last.name) > -1;\n        return cx => delimitedStrategy(cx, true, 1, undefined, closed && !ignoreClosed(cx) ? last.from : undefined);\n    }\n    return tree.parent == null ? topIndent : null;\n}\nfunction topIndent() { return 0; }\n/**\nObjects of this type provide context information and helper\nmethods to indentation functions registered on syntax nodes.\n*/\nclass TreeIndentContext extends IndentContext {\n    constructor(base, \n    /**\n    The position at which indentation is being computed.\n    */\n    pos, \n    /**\n    @internal\n    */\n    context) {\n        super(base.state, base.options);\n        this.base = base;\n        this.pos = pos;\n        this.context = context;\n    }\n    /**\n    The syntax tree node to which the indentation strategy\n    applies.\n    */\n    get node() { return this.context.node; }\n    /**\n    @internal\n    */\n    static create(base, pos, context) {\n        return new TreeIndentContext(base, pos, context);\n    }\n    /**\n    Get the text directly after `this.pos`, either the entire line\n    or the next 100 characters, whichever is shorter.\n    */\n    get textAfter() {\n        return this.textAfterPos(this.pos);\n    }\n    /**\n    Get the indentation at the reference line for `this.node`, which\n    is the line on which it starts, unless there is a node that is\n    _not_ a parent of this node covering the start of that line. If\n    so, the line at the start of that node is tried, again skipping\n    on if it is covered by another such node.\n    */\n    get baseIndent() {\n        return this.baseIndentFor(this.node);\n    }\n    /**\n    Get the indentation for the reference line of the given node\n    (see [`baseIndent`](https://codemirror.net/6/docs/ref/#language.TreeIndentContext.baseIndent)).\n    */\n    baseIndentFor(node) {\n        let line = this.state.doc.lineAt(node.from);\n        // Skip line starts that are covered by a sibling (or cousin, etc)\n        for (;;) {\n            let atBreak = node.resolve(line.from);\n            while (atBreak.parent && atBreak.parent.from == atBreak.from)\n                atBreak = atBreak.parent;\n            if (isParent(atBreak, node))\n                break;\n            line = this.state.doc.lineAt(atBreak.from);\n        }\n        return this.lineIndent(line.from);\n    }\n    /**\n    Continue looking for indentations in the node's parent nodes,\n    and return the result of that.\n    */\n    continue() {\n        return indentFor(this.context.next, this.base, this.pos);\n    }\n}\nfunction isParent(parent, of) {\n    for (let cur = of; cur; cur = cur.parent)\n        if (parent == cur)\n            return true;\n    return false;\n}\n// Check whether a delimited node is aligned (meaning there are\n// non-skipped nodes on the same line as the opening delimiter). And\n// if so, return the opening token.\nfunction bracketedAligned(context) {\n    let tree = context.node;\n    let openToken = tree.childAfter(tree.from), last = tree.lastChild;\n    if (!openToken)\n        return null;\n    let sim = context.options.simulateBreak;\n    let openLine = context.state.doc.lineAt(openToken.from);\n    let lineEnd = sim == null || sim <= openLine.from ? openLine.to : Math.min(openLine.to, sim);\n    for (let pos = openToken.to;;) {\n        let next = tree.childAfter(pos);\n        if (!next || next == last)\n            return null;\n        if (!next.type.isSkipped)\n            return next.from < lineEnd ? openToken : null;\n        pos = next.to;\n    }\n}\n/**\nAn indentation strategy for delimited (usually bracketed) nodes.\nWill, by default, indent one unit more than the parent's base\nindent unless the line starts with a closing token. When `align`\nis true and there are non-skipped nodes on the node's opening\nline, the content of the node will be aligned with the end of the\nopening node, like this:\n\n    foo(bar,\n        baz)\n*/\nfunction delimitedIndent({ closing, align = true, units = 1 }) {\n    return (context) => delimitedStrategy(context, align, units, closing);\n}\nfunction delimitedStrategy(context, align, units, closing, closedAt) {\n    let after = context.textAfter, space = after.match(/^\\s*/)[0].length;\n    let closed = closing && after.slice(space, space + closing.length) == closing || closedAt == context.pos + space;\n    let aligned = align ? bracketedAligned(context) : null;\n    if (aligned)\n        return closed ? context.column(aligned.from) : context.column(aligned.to);\n    return context.baseIndent + (closed ? 0 : context.unit * units);\n}\n/**\nAn indentation strategy that aligns a node's content to its base\nindentation.\n*/\nconst flatIndent = (context) => context.baseIndent;\n/**\nCreates an indentation strategy that, by default, indents\ncontinued lines one unit more than the node's base indentation.\nYou can provide `except` to prevent indentation of lines that\nmatch a pattern (for example `/^else\\b/` in `if`/`else`\nconstructs), and you can change the amount of units used with the\n`units` option.\n*/\nfunction continuedIndent({ except, units = 1 } = {}) {\n    return (context) => {\n        let matchExcept = except && except.test(context.textAfter);\n        return context.baseIndent + (matchExcept ? 0 : units * context.unit);\n    };\n}\nconst DontIndentBeyond = 200;\n/**\nEnables reindentation on input. When a language defines an\n`indentOnInput` field in its [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt), which must hold a regular\nexpression, the line at the cursor will be reindented whenever new\ntext is typed and the input from the start of the line up to the\ncursor matches that regexp.\n\nTo avoid unneccesary reindents, it is recommended to start the\nregexp with `^` (usually followed by `\\s*`), and end it with `$`.\nFor example, `/^\\s*\\}$/` will reindent when a closing brace is\nadded at the start of a line.\n*/\nfunction indentOnInput() {\n    return EditorState.transactionFilter.of(tr => {\n        if (!tr.docChanged || !tr.isUserEvent(\"input.type\") && !tr.isUserEvent(\"input.complete\"))\n            return tr;\n        let rules = tr.startState.languageDataAt(\"indentOnInput\", tr.startState.selection.main.head);\n        if (!rules.length)\n            return tr;\n        let doc = tr.newDoc, { head } = tr.newSelection.main, line = doc.lineAt(head);\n        if (head > line.from + DontIndentBeyond)\n            return tr;\n        let lineStart = doc.sliceString(line.from, head);\n        if (!rules.some(r => r.test(lineStart)))\n            return tr;\n        let { state } = tr, last = -1, changes = [];\n        for (let { head } of state.selection.ranges) {\n            let line = state.doc.lineAt(head);\n            if (line.from == last)\n                continue;\n            last = line.from;\n            let indent = getIndentation(state, line.from);\n            if (indent == null)\n                continue;\n            let cur = /^\\s*/.exec(line.text)[0];\n            let norm = indentString(state, indent);\n            if (cur != norm)\n                changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n        }\n        return changes.length ? [tr, { changes, sequential: true }] : tr;\n    });\n}\n\n/**\nA facet that registers a code folding service. When called with\nthe extent of a line, such a function should return a foldable\nrange that starts on that line (but continues beyond it), if one\ncan be found.\n*/\nconst foldService = /*@__PURE__*/Facet.define();\n/**\nThis node prop is used to associate folding information with\nsyntax node types. Given a syntax node, it should check whether\nthat tree is foldable and return the range that can be collapsed\nwhen it is.\n*/\nconst foldNodeProp = /*@__PURE__*/new NodeProp();\n/**\n[Fold](https://codemirror.net/6/docs/ref/#language.foldNodeProp) function that folds everything but\nthe first and the last child of a syntax node. Useful for nodes\nthat start and end with delimiters.\n*/\nfunction foldInside(node) {\n    let first = node.firstChild, last = node.lastChild;\n    return first && first.to < last.from ? { from: first.to, to: last.type.isError ? node.to : last.from } : null;\n}\nfunction syntaxFolding(state, start, end) {\n    let tree = syntaxTree(state);\n    if (tree.length < end)\n        return null;\n    let stack = tree.resolveStack(end, 1);\n    let found = null;\n    for (let iter = stack; iter; iter = iter.next) {\n        let cur = iter.node;\n        if (cur.to <= end || cur.from > end)\n            continue;\n        if (found && cur.from < start)\n            break;\n        let prop = cur.type.prop(foldNodeProp);\n        if (prop && (cur.to < tree.length - 50 || tree.length == state.doc.length || !isUnfinished(cur))) {\n            let value = prop(cur, state);\n            if (value && value.from <= end && value.from >= start && value.to > end)\n                found = value;\n        }\n    }\n    return found;\n}\nfunction isUnfinished(node) {\n    let ch = node.lastChild;\n    return ch && ch.to == node.to && ch.type.isError;\n}\n/**\nCheck whether the given line is foldable. First asks any fold\nservices registered through\n[`foldService`](https://codemirror.net/6/docs/ref/#language.foldService), and if none of them return\na result, tries to query the [fold node\nprop](https://codemirror.net/6/docs/ref/#language.foldNodeProp) of syntax nodes that cover the end\nof the line.\n*/\nfunction foldable(state, lineStart, lineEnd) {\n    for (let service of state.facet(foldService)) {\n        let result = service(state, lineStart, lineEnd);\n        if (result)\n            return result;\n    }\n    return syntaxFolding(state, lineStart, lineEnd);\n}\nfunction mapRange(range, mapping) {\n    let from = mapping.mapPos(range.from, 1), to = mapping.mapPos(range.to, -1);\n    return from >= to ? undefined : { from, to };\n}\n/**\nState effect that can be attached to a transaction to fold the\ngiven range. (You probably only need this in exceptional\ncircumstances—usually you'll just want to let\n[`foldCode`](https://codemirror.net/6/docs/ref/#language.foldCode) and the [fold\ngutter](https://codemirror.net/6/docs/ref/#language.foldGutter) create the transactions.)\n*/\nconst foldEffect = /*@__PURE__*/StateEffect.define({ map: mapRange });\n/**\nState effect that unfolds the given range (if it was folded).\n*/\nconst unfoldEffect = /*@__PURE__*/StateEffect.define({ map: mapRange });\nfunction selectedLines(view) {\n    let lines = [];\n    for (let { head } of view.state.selection.ranges) {\n        if (lines.some(l => l.from <= head && l.to >= head))\n            continue;\n        lines.push(view.lineBlockAt(head));\n    }\n    return lines;\n}\n/**\nThe state field that stores the folded ranges (as a [decoration\nset](https://codemirror.net/6/docs/ref/#view.DecorationSet)). Can be passed to\n[`EditorState.toJSON`](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) and\n[`fromJSON`](https://codemirror.net/6/docs/ref/#state.EditorState^fromJSON) to serialize the fold\nstate.\n*/\nconst foldState = /*@__PURE__*/StateField.define({\n    create() {\n        return Decoration.none;\n    },\n    update(folded, tr) {\n        folded = folded.map(tr.changes);\n        for (let e of tr.effects) {\n            if (e.is(foldEffect) && !foldExists(folded, e.value.from, e.value.to)) {\n                let { preparePlaceholder } = tr.state.facet(foldConfig);\n                let widget = !preparePlaceholder ? foldWidget :\n                    Decoration.replace({ widget: new PreparedFoldWidget(preparePlaceholder(tr.state, e.value)) });\n                folded = folded.update({ add: [widget.range(e.value.from, e.value.to)] });\n            }\n            else if (e.is(unfoldEffect)) {\n                folded = folded.update({ filter: (from, to) => e.value.from != from || e.value.to != to,\n                    filterFrom: e.value.from, filterTo: e.value.to });\n            }\n        }\n        // Clear folded ranges that cover the selection head\n        if (tr.selection) {\n            let onSelection = false, { head } = tr.selection.main;\n            folded.between(head, head, (a, b) => { if (a < head && b > head)\n                onSelection = true; });\n            if (onSelection)\n                folded = folded.update({\n                    filterFrom: head,\n                    filterTo: head,\n                    filter: (a, b) => b <= head || a >= head\n                });\n        }\n        return folded;\n    },\n    provide: f => EditorView.decorations.from(f),\n    toJSON(folded, state) {\n        let ranges = [];\n        folded.between(0, state.doc.length, (from, to) => { ranges.push(from, to); });\n        return ranges;\n    },\n    fromJSON(value) {\n        if (!Array.isArray(value) || value.length % 2)\n            throw new RangeError(\"Invalid JSON for fold state\");\n        let ranges = [];\n        for (let i = 0; i < value.length;) {\n            let from = value[i++], to = value[i++];\n            if (typeof from != \"number\" || typeof to != \"number\")\n                throw new RangeError(\"Invalid JSON for fold state\");\n            ranges.push(foldWidget.range(from, to));\n        }\n        return Decoration.set(ranges, true);\n    }\n});\n/**\nGet a [range set](https://codemirror.net/6/docs/ref/#state.RangeSet) containing the folded ranges\nin the given state.\n*/\nfunction foldedRanges(state) {\n    return state.field(foldState, false) || RangeSet.empty;\n}\nfunction findFold(state, from, to) {\n    var _a;\n    let found = null;\n    (_a = state.field(foldState, false)) === null || _a === void 0 ? void 0 : _a.between(from, to, (from, to) => {\n        if (!found || found.from > from)\n            found = { from, to };\n    });\n    return found;\n}\nfunction foldExists(folded, from, to) {\n    let found = false;\n    folded.between(from, from, (a, b) => { if (a == from && b == to)\n        found = true; });\n    return found;\n}\nfunction maybeEnable(state, other) {\n    return state.field(foldState, false) ? other : other.concat(StateEffect.appendConfig.of(codeFolding()));\n}\n/**\nFold the lines that are selected, if possible.\n*/\nconst foldCode = view => {\n    for (let line of selectedLines(view)) {\n        let range = foldable(view.state, line.from, line.to);\n        if (range) {\n            view.dispatch({ effects: maybeEnable(view.state, [foldEffect.of(range), announceFold(view, range)]) });\n            return true;\n        }\n    }\n    return false;\n};\n/**\nUnfold folded ranges on selected lines.\n*/\nconst unfoldCode = view => {\n    if (!view.state.field(foldState, false))\n        return false;\n    let effects = [];\n    for (let line of selectedLines(view)) {\n        let folded = findFold(view.state, line.from, line.to);\n        if (folded)\n            effects.push(unfoldEffect.of(folded), announceFold(view, folded, false));\n    }\n    if (effects.length)\n        view.dispatch({ effects });\n    return effects.length > 0;\n};\nfunction announceFold(view, range, fold = true) {\n    let lineFrom = view.state.doc.lineAt(range.from).number, lineTo = view.state.doc.lineAt(range.to).number;\n    return EditorView.announce.of(`${view.state.phrase(fold ? \"Folded lines\" : \"Unfolded lines\")} ${lineFrom} ${view.state.phrase(\"to\")} ${lineTo}.`);\n}\n/**\nFold all top-level foldable ranges. Note that, in most cases,\nfolding information will depend on the [syntax\ntree](https://codemirror.net/6/docs/ref/#language.syntaxTree), and folding everything may not work\nreliably when the document hasn't been fully parsed (either\nbecause the editor state was only just initialized, or because the\ndocument is so big that the parser decided not to parse it\nentirely).\n*/\nconst foldAll = view => {\n    let { state } = view, effects = [];\n    for (let pos = 0; pos < state.doc.length;) {\n        let line = view.lineBlockAt(pos), range = foldable(state, line.from, line.to);\n        if (range)\n            effects.push(foldEffect.of(range));\n        pos = (range ? view.lineBlockAt(range.to) : line).to + 1;\n    }\n    if (effects.length)\n        view.dispatch({ effects: maybeEnable(view.state, effects) });\n    return !!effects.length;\n};\n/**\nUnfold all folded code.\n*/\nconst unfoldAll = view => {\n    let field = view.state.field(foldState, false);\n    if (!field || !field.size)\n        return false;\n    let effects = [];\n    field.between(0, view.state.doc.length, (from, to) => { effects.push(unfoldEffect.of({ from, to })); });\n    view.dispatch({ effects });\n    return true;\n};\n// Find the foldable region containing the given line, if one exists\nfunction foldableContainer(view, lineBlock) {\n    // Look backwards through line blocks until we find a foldable region that\n    // intersects with the line\n    for (let line = lineBlock;;) {\n        let foldableRegion = foldable(view.state, line.from, line.to);\n        if (foldableRegion && foldableRegion.to > lineBlock.from)\n            return foldableRegion;\n        if (!line.from)\n            return null;\n        line = view.lineBlockAt(line.from - 1);\n    }\n}\n/**\nToggle folding at cursors. Unfolds if there is an existing fold\nstarting in that line, tries to find a foldable range around it\notherwise.\n*/\nconst toggleFold = (view) => {\n    let effects = [];\n    for (let line of selectedLines(view)) {\n        let folded = findFold(view.state, line.from, line.to);\n        if (folded) {\n            effects.push(unfoldEffect.of(folded), announceFold(view, folded, false));\n        }\n        else {\n            let foldRange = foldableContainer(view, line);\n            if (foldRange)\n                effects.push(foldEffect.of(foldRange), announceFold(view, foldRange));\n        }\n    }\n    if (effects.length > 0)\n        view.dispatch({ effects: maybeEnable(view.state, effects) });\n    return !!effects.length;\n};\n/**\nDefault fold-related key bindings.\n\n - Ctrl-Shift-[ (Cmd-Alt-[ on macOS): [`foldCode`](https://codemirror.net/6/docs/ref/#language.foldCode).\n - Ctrl-Shift-] (Cmd-Alt-] on macOS): [`unfoldCode`](https://codemirror.net/6/docs/ref/#language.unfoldCode).\n - Ctrl-Alt-[: [`foldAll`](https://codemirror.net/6/docs/ref/#language.foldAll).\n - Ctrl-Alt-]: [`unfoldAll`](https://codemirror.net/6/docs/ref/#language.unfoldAll).\n*/\nconst foldKeymap = [\n    { key: \"Ctrl-Shift-[\", mac: \"Cmd-Alt-[\", run: foldCode },\n    { key: \"Ctrl-Shift-]\", mac: \"Cmd-Alt-]\", run: unfoldCode },\n    { key: \"Ctrl-Alt-[\", run: foldAll },\n    { key: \"Ctrl-Alt-]\", run: unfoldAll }\n];\nconst defaultConfig = {\n    placeholderDOM: null,\n    preparePlaceholder: null,\n    placeholderText: \"…\"\n};\nconst foldConfig = /*@__PURE__*/Facet.define({\n    combine(values) { return combineConfig(values, defaultConfig); }\n});\n/**\nCreate an extension that configures code folding.\n*/\nfunction codeFolding(config) {\n    let result = [foldState, baseTheme$1];\n    if (config)\n        result.push(foldConfig.of(config));\n    return result;\n}\nfunction widgetToDOM(view, prepared) {\n    let { state } = view, conf = state.facet(foldConfig);\n    let onclick = (event) => {\n        let line = view.lineBlockAt(view.posAtDOM(event.target));\n        let folded = findFold(view.state, line.from, line.to);\n        if (folded)\n            view.dispatch({ effects: unfoldEffect.of(folded) });\n        event.preventDefault();\n    };\n    if (conf.placeholderDOM)\n        return conf.placeholderDOM(view, onclick, prepared);\n    let element = document.createElement(\"span\");\n    element.textContent = conf.placeholderText;\n    element.setAttribute(\"aria-label\", state.phrase(\"folded code\"));\n    element.title = state.phrase(\"unfold\");\n    element.className = \"cm-foldPlaceholder\";\n    element.onclick = onclick;\n    return element;\n}\nconst foldWidget = /*@__PURE__*/Decoration.replace({ widget: /*@__PURE__*/new class extends WidgetType {\n        toDOM(view) { return widgetToDOM(view, null); }\n    } });\nclass PreparedFoldWidget extends WidgetType {\n    constructor(value) {\n        super();\n        this.value = value;\n    }\n    eq(other) { return this.value == other.value; }\n    toDOM(view) { return widgetToDOM(view, this.value); }\n}\nconst foldGutterDefaults = {\n    openText: \"⌄\",\n    closedText: \"›\",\n    markerDOM: null,\n    domEventHandlers: {},\n    foldingChanged: () => false\n};\nclass FoldMarker extends GutterMarker {\n    constructor(config, open) {\n        super();\n        this.config = config;\n        this.open = open;\n    }\n    eq(other) { return this.config == other.config && this.open == other.open; }\n    toDOM(view) {\n        if (this.config.markerDOM)\n            return this.config.markerDOM(this.open);\n        let span = document.createElement(\"span\");\n        span.textContent = this.open ? this.config.openText : this.config.closedText;\n        span.title = view.state.phrase(this.open ? \"Fold line\" : \"Unfold line\");\n        return span;\n    }\n}\n/**\nCreate an extension that registers a fold gutter, which shows a\nfold status indicator before foldable lines (which can be clicked\nto fold or unfold the line).\n*/\nfunction foldGutter(config = {}) {\n    let fullConfig = Object.assign(Object.assign({}, foldGutterDefaults), config);\n    let canFold = new FoldMarker(fullConfig, true), canUnfold = new FoldMarker(fullConfig, false);\n    let markers = ViewPlugin.fromClass(class {\n        constructor(view) {\n            this.from = view.viewport.from;\n            this.markers = this.buildMarkers(view);\n        }\n        update(update) {\n            if (update.docChanged || update.viewportChanged ||\n                update.startState.facet(language) != update.state.facet(language) ||\n                update.startState.field(foldState, false) != update.state.field(foldState, false) ||\n                syntaxTree(update.startState) != syntaxTree(update.state) ||\n                fullConfig.foldingChanged(update))\n                this.markers = this.buildMarkers(update.view);\n        }\n        buildMarkers(view) {\n            let builder = new RangeSetBuilder();\n            for (let line of view.viewportLineBlocks) {\n                let mark = findFold(view.state, line.from, line.to) ? canUnfold\n                    : foldable(view.state, line.from, line.to) ? canFold : null;\n                if (mark)\n                    builder.add(line.from, line.from, mark);\n            }\n            return builder.finish();\n        }\n    });\n    let { domEventHandlers } = fullConfig;\n    return [\n        markers,\n        gutter({\n            class: \"cm-foldGutter\",\n            markers(view) { var _a; return ((_a = view.plugin(markers)) === null || _a === void 0 ? void 0 : _a.markers) || RangeSet.empty; },\n            initialSpacer() {\n                return new FoldMarker(fullConfig, false);\n            },\n            domEventHandlers: Object.assign(Object.assign({}, domEventHandlers), { click: (view, line, event) => {\n                    if (domEventHandlers.click && domEventHandlers.click(view, line, event))\n                        return true;\n                    let folded = findFold(view.state, line.from, line.to);\n                    if (folded) {\n                        view.dispatch({ effects: unfoldEffect.of(folded) });\n                        return true;\n                    }\n                    let range = foldable(view.state, line.from, line.to);\n                    if (range) {\n                        view.dispatch({ effects: foldEffect.of(range) });\n                        return true;\n                    }\n                    return false;\n                } })\n        }),\n        codeFolding()\n    ];\n}\nconst baseTheme$1 = /*@__PURE__*/EditorView.baseTheme({\n    \".cm-foldPlaceholder\": {\n        backgroundColor: \"#eee\",\n        border: \"1px solid #ddd\",\n        color: \"#888\",\n        borderRadius: \".2em\",\n        margin: \"0 1px\",\n        padding: \"0 1px\",\n        cursor: \"pointer\"\n    },\n    \".cm-foldGutter span\": {\n        padding: \"0 1px\",\n        cursor: \"pointer\"\n    }\n});\n\n/**\nA highlight style associates CSS styles with higlighting\n[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag).\n*/\nclass HighlightStyle {\n    constructor(\n    /**\n    The tag styles used to create this highlight style.\n    */\n    specs, options) {\n        this.specs = specs;\n        let modSpec;\n        function def(spec) {\n            let cls = StyleModule.newName();\n            (modSpec || (modSpec = Object.create(null)))[\".\" + cls] = spec;\n            return cls;\n        }\n        const all = typeof options.all == \"string\" ? options.all : options.all ? def(options.all) : undefined;\n        const scopeOpt = options.scope;\n        this.scope = scopeOpt instanceof Language ? (type) => type.prop(languageDataProp) == scopeOpt.data\n            : scopeOpt ? (type) => type == scopeOpt : undefined;\n        this.style = tagHighlighter(specs.map(style => ({\n            tag: style.tag,\n            class: style.class || def(Object.assign({}, style, { tag: null }))\n        })), {\n            all,\n        }).style;\n        this.module = modSpec ? new StyleModule(modSpec) : null;\n        this.themeType = options.themeType;\n    }\n    /**\n    Create a highlighter style that associates the given styles to\n    the given tags. The specs must be objects that hold a style tag\n    or array of tags in their `tag` property, and either a single\n    `class` property providing a static CSS class (for highlighter\n    that rely on external styling), or a\n    [`style-mod`](https://github.com/marijnh/style-mod#documentation)-style\n    set of CSS properties (which define the styling for those tags).\n    \n    The CSS rules created for a highlighter will be emitted in the\n    order of the spec's properties. That means that for elements that\n    have multiple tags associated with them, styles defined further\n    down in the list will have a higher CSS precedence than styles\n    defined earlier.\n    */\n    static define(specs, options) {\n        return new HighlightStyle(specs, options || {});\n    }\n}\nconst highlighterFacet = /*@__PURE__*/Facet.define();\nconst fallbackHighlighter = /*@__PURE__*/Facet.define({\n    combine(values) { return values.length ? [values[0]] : null; }\n});\nfunction getHighlighters(state) {\n    let main = state.facet(highlighterFacet);\n    return main.length ? main : state.facet(fallbackHighlighter);\n}\n/**\nWrap a highlighter in an editor extension that uses it to apply\nsyntax highlighting to the editor content.\n\nWhen multiple (non-fallback) styles are provided, the styling\napplied is the union of the classes they emit.\n*/\nfunction syntaxHighlighting(highlighter, options) {\n    let ext = [treeHighlighter], themeType;\n    if (highlighter instanceof HighlightStyle) {\n        if (highlighter.module)\n            ext.push(EditorView.styleModule.of(highlighter.module));\n        themeType = highlighter.themeType;\n    }\n    if (options === null || options === void 0 ? void 0 : options.fallback)\n        ext.push(fallbackHighlighter.of(highlighter));\n    else if (themeType)\n        ext.push(highlighterFacet.computeN([EditorView.darkTheme], state => {\n            return state.facet(EditorView.darkTheme) == (themeType == \"dark\") ? [highlighter] : [];\n        }));\n    else\n        ext.push(highlighterFacet.of(highlighter));\n    return ext;\n}\n/**\nReturns the CSS classes (if any) that the highlighters active in\nthe state would assign to the given style\n[tags](https://lezer.codemirror.net/docs/ref#highlight.Tag) and\n(optional) language\n[scope](https://codemirror.net/6/docs/ref/#language.HighlightStyle^define^options.scope).\n*/\nfunction highlightingFor(state, tags, scope) {\n    let highlighters = getHighlighters(state);\n    let result = null;\n    if (highlighters)\n        for (let highlighter of highlighters) {\n            if (!highlighter.scope || scope && highlighter.scope(scope)) {\n                let cls = highlighter.style(tags);\n                if (cls)\n                    result = result ? result + \" \" + cls : cls;\n            }\n        }\n    return result;\n}\nclass TreeHighlighter {\n    constructor(view) {\n        this.markCache = Object.create(null);\n        this.tree = syntaxTree(view.state);\n        this.decorations = this.buildDeco(view, getHighlighters(view.state));\n        this.decoratedTo = view.viewport.to;\n    }\n    update(update) {\n        let tree = syntaxTree(update.state), highlighters = getHighlighters(update.state);\n        let styleChange = highlighters != getHighlighters(update.startState);\n        let { viewport } = update.view, decoratedToMapped = update.changes.mapPos(this.decoratedTo, 1);\n        if (tree.length < viewport.to && !styleChange && tree.type == this.tree.type && decoratedToMapped >= viewport.to) {\n            this.decorations = this.decorations.map(update.changes);\n            this.decoratedTo = decoratedToMapped;\n        }\n        else if (tree != this.tree || update.viewportChanged || styleChange) {\n            this.tree = tree;\n            this.decorations = this.buildDeco(update.view, highlighters);\n            this.decoratedTo = viewport.to;\n        }\n    }\n    buildDeco(view, highlighters) {\n        if (!highlighters || !this.tree.length)\n            return Decoration.none;\n        let builder = new RangeSetBuilder();\n        for (let { from, to } of view.visibleRanges) {\n            highlightTree(this.tree, highlighters, (from, to, style) => {\n                builder.add(from, to, this.markCache[style] || (this.markCache[style] = Decoration.mark({ class: style })));\n            }, from, to);\n        }\n        return builder.finish();\n    }\n}\nconst treeHighlighter = /*@__PURE__*/Prec.high(/*@__PURE__*/ViewPlugin.fromClass(TreeHighlighter, {\n    decorations: v => v.decorations\n}));\n/**\nA default highlight style (works well with light themes).\n*/\nconst defaultHighlightStyle = /*@__PURE__*/HighlightStyle.define([\n    { tag: tags.meta,\n        color: \"#404740\" },\n    { tag: tags.link,\n        textDecoration: \"underline\" },\n    { tag: tags.heading,\n        textDecoration: \"underline\",\n        fontWeight: \"bold\" },\n    { tag: tags.emphasis,\n        fontStyle: \"italic\" },\n    { tag: tags.strong,\n        fontWeight: \"bold\" },\n    { tag: tags.strikethrough,\n        textDecoration: \"line-through\" },\n    { tag: tags.keyword,\n        color: \"#708\" },\n    { tag: [tags.atom, tags.bool, tags.url, tags.contentSeparator, tags.labelName],\n        color: \"#219\" },\n    { tag: [tags.literal, tags.inserted],\n        color: \"#164\" },\n    { tag: [tags.string, tags.deleted],\n        color: \"#a11\" },\n    { tag: [tags.regexp, tags.escape, /*@__PURE__*/tags.special(tags.string)],\n        color: \"#e40\" },\n    { tag: /*@__PURE__*/tags.definition(tags.variableName),\n        color: \"#00f\" },\n    { tag: /*@__PURE__*/tags.local(tags.variableName),\n        color: \"#30a\" },\n    { tag: [tags.typeName, tags.namespace],\n        color: \"#085\" },\n    { tag: tags.className,\n        color: \"#167\" },\n    { tag: [/*@__PURE__*/tags.special(tags.variableName), tags.macroName],\n        color: \"#256\" },\n    { tag: /*@__PURE__*/tags.definition(tags.propertyName),\n        color: \"#00c\" },\n    { tag: tags.comment,\n        color: \"#940\" },\n    { tag: tags.invalid,\n        color: \"#f00\" }\n]);\n\nconst baseTheme = /*@__PURE__*/EditorView.baseTheme({\n    \"&.cm-focused .cm-matchingBracket\": { backgroundColor: \"#328c8252\" },\n    \"&.cm-focused .cm-nonmatchingBracket\": { backgroundColor: \"#bb555544\" }\n});\nconst DefaultScanDist = 10000, DefaultBrackets = \"()[]{}\";\nconst bracketMatchingConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            afterCursor: true,\n            brackets: DefaultBrackets,\n            maxScanDistance: DefaultScanDist,\n            renderMatch: defaultRenderMatch\n        });\n    }\n});\nconst matchingMark = /*@__PURE__*/Decoration.mark({ class: \"cm-matchingBracket\" }), nonmatchingMark = /*@__PURE__*/Decoration.mark({ class: \"cm-nonmatchingBracket\" });\nfunction defaultRenderMatch(match) {\n    let decorations = [];\n    let mark = match.matched ? matchingMark : nonmatchingMark;\n    decorations.push(mark.range(match.start.from, match.start.to));\n    if (match.end)\n        decorations.push(mark.range(match.end.from, match.end.to));\n    return decorations;\n}\nconst bracketMatchingState = /*@__PURE__*/StateField.define({\n    create() { return Decoration.none; },\n    update(deco, tr) {\n        if (!tr.docChanged && !tr.selection)\n            return deco;\n        let decorations = [];\n        let config = tr.state.facet(bracketMatchingConfig);\n        for (let range of tr.state.selection.ranges) {\n            if (!range.empty)\n                continue;\n            let match = matchBrackets(tr.state, range.head, -1, config)\n                || (range.head > 0 && matchBrackets(tr.state, range.head - 1, 1, config))\n                || (config.afterCursor &&\n                    (matchBrackets(tr.state, range.head, 1, config) ||\n                        (range.head < tr.state.doc.length && matchBrackets(tr.state, range.head + 1, -1, config))));\n            if (match)\n                decorations = decorations.concat(config.renderMatch(match, tr.state));\n        }\n        return Decoration.set(decorations, true);\n    },\n    provide: f => EditorView.decorations.from(f)\n});\nconst bracketMatchingUnique = [\n    bracketMatchingState,\n    baseTheme\n];\n/**\nCreate an extension that enables bracket matching. Whenever the\ncursor is next to a bracket, that bracket and the one it matches\nare highlighted. Or, when no matching bracket is found, another\nhighlighting style is used to indicate this.\n*/\nfunction bracketMatching(config = {}) {\n    return [bracketMatchingConfig.of(config), bracketMatchingUnique];\n}\n/**\nWhen larger syntax nodes, such as HTML tags, are marked as\nopening/closing, it can be a bit messy to treat the whole node as\na matchable bracket. This node prop allows you to define, for such\na node, a ‘handle’—the part of the node that is highlighted, and\nthat the cursor must be on to activate highlighting in the first\nplace.\n*/\nconst bracketMatchingHandle = /*@__PURE__*/new NodeProp();\nfunction matchingNodes(node, dir, brackets) {\n    let byProp = node.prop(dir < 0 ? NodeProp.openedBy : NodeProp.closedBy);\n    if (byProp)\n        return byProp;\n    if (node.name.length == 1) {\n        let index = brackets.indexOf(node.name);\n        if (index > -1 && index % 2 == (dir < 0 ? 1 : 0))\n            return [brackets[index + dir]];\n    }\n    return null;\n}\nfunction findHandle(node) {\n    let hasHandle = node.type.prop(bracketMatchingHandle);\n    return hasHandle ? hasHandle(node.node) : node;\n}\n/**\nFind the matching bracket for the token at `pos`, scanning\ndirection `dir`. Only the `brackets` and `maxScanDistance`\nproperties are used from `config`, if given. Returns null if no\nbracket was found at `pos`, or a match result otherwise.\n*/\nfunction matchBrackets(state, pos, dir, config = {}) {\n    let maxScanDistance = config.maxScanDistance || DefaultScanDist, brackets = config.brackets || DefaultBrackets;\n    let tree = syntaxTree(state), node = tree.resolveInner(pos, dir);\n    for (let cur = node; cur; cur = cur.parent) {\n        let matches = matchingNodes(cur.type, dir, brackets);\n        if (matches && cur.from < cur.to) {\n            let handle = findHandle(cur);\n            if (handle && (dir > 0 ? pos >= handle.from && pos < handle.to : pos > handle.from && pos <= handle.to))\n                return matchMarkedBrackets(state, pos, dir, cur, handle, matches, brackets);\n        }\n    }\n    return matchPlainBrackets(state, pos, dir, tree, node.type, maxScanDistance, brackets);\n}\nfunction matchMarkedBrackets(_state, _pos, dir, token, handle, matching, brackets) {\n    let parent = token.parent, firstToken = { from: handle.from, to: handle.to };\n    let depth = 0, cursor = parent === null || parent === void 0 ? void 0 : parent.cursor();\n    if (cursor && (dir < 0 ? cursor.childBefore(token.from) : cursor.childAfter(token.to)))\n        do {\n            if (dir < 0 ? cursor.to <= token.from : cursor.from >= token.to) {\n                if (depth == 0 && matching.indexOf(cursor.type.name) > -1 && cursor.from < cursor.to) {\n                    let endHandle = findHandle(cursor);\n                    return { start: firstToken, end: endHandle ? { from: endHandle.from, to: endHandle.to } : undefined, matched: true };\n                }\n                else if (matchingNodes(cursor.type, dir, brackets)) {\n                    depth++;\n                }\n                else if (matchingNodes(cursor.type, -dir, brackets)) {\n                    if (depth == 0) {\n                        let endHandle = findHandle(cursor);\n                        return {\n                            start: firstToken,\n                            end: endHandle && endHandle.from < endHandle.to ? { from: endHandle.from, to: endHandle.to } : undefined,\n                            matched: false\n                        };\n                    }\n                    depth--;\n                }\n            }\n        } while (dir < 0 ? cursor.prevSibling() : cursor.nextSibling());\n    return { start: firstToken, matched: false };\n}\nfunction matchPlainBrackets(state, pos, dir, tree, tokenType, maxScanDistance, brackets) {\n    let startCh = dir < 0 ? state.sliceDoc(pos - 1, pos) : state.sliceDoc(pos, pos + 1);\n    let bracket = brackets.indexOf(startCh);\n    if (bracket < 0 || (bracket % 2 == 0) != (dir > 0))\n        return null;\n    let startToken = { from: dir < 0 ? pos - 1 : pos, to: dir > 0 ? pos + 1 : pos };\n    let iter = state.doc.iterRange(pos, dir > 0 ? state.doc.length : 0), depth = 0;\n    for (let distance = 0; !(iter.next()).done && distance <= maxScanDistance;) {\n        let text = iter.value;\n        if (dir < 0)\n            distance += text.length;\n        let basePos = pos + distance * dir;\n        for (let pos = dir > 0 ? 0 : text.length - 1, end = dir > 0 ? text.length : -1; pos != end; pos += dir) {\n            let found = brackets.indexOf(text[pos]);\n            if (found < 0 || tree.resolveInner(basePos + pos, 1).type != tokenType)\n                continue;\n            if ((found % 2 == 0) == (dir > 0)) {\n                depth++;\n            }\n            else if (depth == 1) { // Closing\n                return { start: startToken, end: { from: basePos + pos, to: basePos + pos + 1 }, matched: (found >> 1) == (bracket >> 1) };\n            }\n            else {\n                depth--;\n            }\n        }\n        if (dir > 0)\n            distance += text.length;\n    }\n    return iter.done ? { start: startToken, matched: false } : null;\n}\n\n// Counts the column offset in a string, taking tabs into account.\n// Used mostly to find indentation.\nfunction countCol(string, end, tabSize, startIndex = 0, startValue = 0) {\n    if (end == null) {\n        end = string.search(/[^\\s\\u00a0]/);\n        if (end == -1)\n            end = string.length;\n    }\n    let n = startValue;\n    for (let i = startIndex; i < end; i++) {\n        if (string.charCodeAt(i) == 9)\n            n += tabSize - (n % tabSize);\n        else\n            n++;\n    }\n    return n;\n}\n/**\nEncapsulates a single line of input. Given to stream syntax code,\nwhich uses it to tokenize the content.\n*/\nclass StringStream {\n    /**\n    Create a stream.\n    */\n    constructor(\n    /**\n    The line.\n    */\n    string, tabSize, \n    /**\n    The current indent unit size.\n    */\n    indentUnit, overrideIndent) {\n        this.string = string;\n        this.tabSize = tabSize;\n        this.indentUnit = indentUnit;\n        this.overrideIndent = overrideIndent;\n        /**\n        The current position on the line.\n        */\n        this.pos = 0;\n        /**\n        The start position of the current token.\n        */\n        this.start = 0;\n        this.lastColumnPos = 0;\n        this.lastColumnValue = 0;\n    }\n    /**\n    True if we are at the end of the line.\n    */\n    eol() { return this.pos >= this.string.length; }\n    /**\n    True if we are at the start of the line.\n    */\n    sol() { return this.pos == 0; }\n    /**\n    Get the next code unit after the current position, or undefined\n    if we're at the end of the line.\n    */\n    peek() { return this.string.charAt(this.pos) || undefined; }\n    /**\n    Read the next code unit and advance `this.pos`.\n    */\n    next() {\n        if (this.pos < this.string.length)\n            return this.string.charAt(this.pos++);\n    }\n    /**\n    Match the next character against the given string, regular\n    expression, or predicate. Consume and return it if it matches.\n    */\n    eat(match) {\n        let ch = this.string.charAt(this.pos);\n        let ok;\n        if (typeof match == \"string\")\n            ok = ch == match;\n        else\n            ok = ch && (match instanceof RegExp ? match.test(ch) : match(ch));\n        if (ok) {\n            ++this.pos;\n            return ch;\n        }\n    }\n    /**\n    Continue matching characters that match the given string,\n    regular expression, or predicate function. Return true if any\n    characters were consumed.\n    */\n    eatWhile(match) {\n        let start = this.pos;\n        while (this.eat(match)) { }\n        return this.pos > start;\n    }\n    /**\n    Consume whitespace ahead of `this.pos`. Return true if any was\n    found.\n    */\n    eatSpace() {\n        let start = this.pos;\n        while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos)))\n            ++this.pos;\n        return this.pos > start;\n    }\n    /**\n    Move to the end of the line.\n    */\n    skipToEnd() { this.pos = this.string.length; }\n    /**\n    Move to directly before the given character, if found on the\n    current line.\n    */\n    skipTo(ch) {\n        let found = this.string.indexOf(ch, this.pos);\n        if (found > -1) {\n            this.pos = found;\n            return true;\n        }\n    }\n    /**\n    Move back `n` characters.\n    */\n    backUp(n) { this.pos -= n; }\n    /**\n    Get the column position at `this.pos`.\n    */\n    column() {\n        if (this.lastColumnPos < this.start) {\n            this.lastColumnValue = countCol(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n            this.lastColumnPos = this.start;\n        }\n        return this.lastColumnValue;\n    }\n    /**\n    Get the indentation column of the current line.\n    */\n    indentation() {\n        var _a;\n        return (_a = this.overrideIndent) !== null && _a !== void 0 ? _a : countCol(this.string, null, this.tabSize);\n    }\n    /**\n    Match the input against the given string or regular expression\n    (which should start with a `^`). Return true or the regexp match\n    if it matches.\n    \n    Unless `consume` is set to `false`, this will move `this.pos`\n    past the matched text.\n    \n    When matching a string `caseInsensitive` can be set to true to\n    make the match case-insensitive.\n    */\n    match(pattern, consume, caseInsensitive) {\n        if (typeof pattern == \"string\") {\n            let cased = (str) => caseInsensitive ? str.toLowerCase() : str;\n            let substr = this.string.substr(this.pos, pattern.length);\n            if (cased(substr) == cased(pattern)) {\n                if (consume !== false)\n                    this.pos += pattern.length;\n                return true;\n            }\n            else\n                return null;\n        }\n        else {\n            let match = this.string.slice(this.pos).match(pattern);\n            if (match && match.index > 0)\n                return null;\n            if (match && consume !== false)\n                this.pos += match[0].length;\n            return match;\n        }\n    }\n    /**\n    Get the current token.\n    */\n    current() { return this.string.slice(this.start, this.pos); }\n}\n\nfunction fullParser(spec) {\n    return {\n        name: spec.name || \"\",\n        token: spec.token,\n        blankLine: spec.blankLine || (() => { }),\n        startState: spec.startState || (() => true),\n        copyState: spec.copyState || defaultCopyState,\n        indent: spec.indent || (() => null),\n        languageData: spec.languageData || {},\n        tokenTable: spec.tokenTable || noTokens\n    };\n}\nfunction defaultCopyState(state) {\n    if (typeof state != \"object\")\n        return state;\n    let newState = {};\n    for (let prop in state) {\n        let val = state[prop];\n        newState[prop] = (val instanceof Array ? val.slice() : val);\n    }\n    return newState;\n}\nconst IndentedFrom = /*@__PURE__*/new WeakMap();\n/**\nA [language](https://codemirror.net/6/docs/ref/#language.Language) class based on a CodeMirror\n5-style [streaming parser](https://codemirror.net/6/docs/ref/#language.StreamParser).\n*/\nclass StreamLanguage extends Language {\n    constructor(parser) {\n        let data = defineLanguageFacet(parser.languageData);\n        let p = fullParser(parser), self;\n        let impl = new class extends Parser {\n            createParse(input, fragments, ranges) {\n                return new Parse(self, input, fragments, ranges);\n            }\n        };\n        super(data, impl, [indentService.of((cx, pos) => this.getIndent(cx, pos))], parser.name);\n        this.topNode = docID(data);\n        self = this;\n        this.streamParser = p;\n        this.stateAfter = new NodeProp({ perNode: true });\n        this.tokenTable = parser.tokenTable ? new TokenTable(p.tokenTable) : defaultTokenTable;\n    }\n    /**\n    Define a stream language.\n    */\n    static define(spec) { return new StreamLanguage(spec); }\n    getIndent(cx, pos) {\n        let tree = syntaxTree(cx.state), at = tree.resolve(pos);\n        while (at && at.type != this.topNode)\n            at = at.parent;\n        if (!at)\n            return null;\n        let from = undefined;\n        let { overrideIndentation } = cx.options;\n        if (overrideIndentation) {\n            from = IndentedFrom.get(cx.state);\n            if (from != null && from < pos - 1e4)\n                from = undefined;\n        }\n        let start = findState(this, tree, 0, at.from, from !== null && from !== void 0 ? from : pos), statePos, state;\n        if (start) {\n            state = start.state;\n            statePos = start.pos + 1;\n        }\n        else {\n            state = this.streamParser.startState(cx.unit);\n            statePos = 0;\n        }\n        if (pos - statePos > 10000 /* C.MaxIndentScanDist */)\n            return null;\n        while (statePos < pos) {\n            let line = cx.state.doc.lineAt(statePos), end = Math.min(pos, line.to);\n            if (line.length) {\n                let indentation = overrideIndentation ? overrideIndentation(line.from) : -1;\n                let stream = new StringStream(line.text, cx.state.tabSize, cx.unit, indentation < 0 ? undefined : indentation);\n                while (stream.pos < end - line.from)\n                    readToken(this.streamParser.token, stream, state);\n            }\n            else {\n                this.streamParser.blankLine(state, cx.unit);\n            }\n            if (end == pos)\n                break;\n            statePos = line.to + 1;\n        }\n        let line = cx.lineAt(pos);\n        if (overrideIndentation && from == null)\n            IndentedFrom.set(cx.state, line.from);\n        return this.streamParser.indent(state, /^\\s*(.*)/.exec(line.text)[1], cx);\n    }\n    get allowsNesting() { return false; }\n}\nfunction findState(lang, tree, off, startPos, before) {\n    let state = off >= startPos && off + tree.length <= before && tree.prop(lang.stateAfter);\n    if (state)\n        return { state: lang.streamParser.copyState(state), pos: off + tree.length };\n    for (let i = tree.children.length - 1; i >= 0; i--) {\n        let child = tree.children[i], pos = off + tree.positions[i];\n        let found = child instanceof Tree && pos < before && findState(lang, child, pos, startPos, before);\n        if (found)\n            return found;\n    }\n    return null;\n}\nfunction cutTree(lang, tree, from, to, inside) {\n    if (inside && from <= 0 && to >= tree.length)\n        return tree;\n    if (!inside && tree.type == lang.topNode)\n        inside = true;\n    for (let i = tree.children.length - 1; i >= 0; i--) {\n        let pos = tree.positions[i], child = tree.children[i], inner;\n        if (pos < to && child instanceof Tree) {\n            if (!(inner = cutTree(lang, child, from - pos, to - pos, inside)))\n                break;\n            return !inside ? inner\n                : new Tree(tree.type, tree.children.slice(0, i).concat(inner), tree.positions.slice(0, i + 1), pos + inner.length);\n        }\n    }\n    return null;\n}\nfunction findStartInFragments(lang, fragments, startPos, editorState) {\n    for (let f of fragments) {\n        let from = f.from + (f.openStart ? 25 : 0), to = f.to - (f.openEnd ? 25 : 0);\n        let found = from <= startPos && to > startPos && findState(lang, f.tree, 0 - f.offset, startPos, to), tree;\n        if (found && (tree = cutTree(lang, f.tree, startPos + f.offset, found.pos + f.offset, false)))\n            return { state: found.state, tree };\n    }\n    return { state: lang.streamParser.startState(editorState ? getIndentUnit(editorState) : 4), tree: Tree.empty };\n}\nclass Parse {\n    constructor(lang, input, fragments, ranges) {\n        this.lang = lang;\n        this.input = input;\n        this.fragments = fragments;\n        this.ranges = ranges;\n        this.stoppedAt = null;\n        this.chunks = [];\n        this.chunkPos = [];\n        this.chunk = [];\n        this.chunkReused = undefined;\n        this.rangeIndex = 0;\n        this.to = ranges[ranges.length - 1].to;\n        let context = ParseContext.get(), from = ranges[0].from;\n        let { state, tree } = findStartInFragments(lang, fragments, from, context === null || context === void 0 ? void 0 : context.state);\n        this.state = state;\n        this.parsedPos = this.chunkStart = from + tree.length;\n        for (let i = 0; i < tree.children.length; i++) {\n            this.chunks.push(tree.children[i]);\n            this.chunkPos.push(tree.positions[i]);\n        }\n        if (context && this.parsedPos < context.viewport.from - 100000 /* C.MaxDistanceBeforeViewport */) {\n            this.state = this.lang.streamParser.startState(getIndentUnit(context.state));\n            context.skipUntilInView(this.parsedPos, context.viewport.from);\n            this.parsedPos = context.viewport.from;\n        }\n        this.moveRangeIndex();\n    }\n    advance() {\n        let context = ParseContext.get();\n        let parseEnd = this.stoppedAt == null ? this.to : Math.min(this.to, this.stoppedAt);\n        let end = Math.min(parseEnd, this.chunkStart + 2048 /* C.ChunkSize */);\n        if (context)\n            end = Math.min(end, context.viewport.to);\n        while (this.parsedPos < end)\n            this.parseLine(context);\n        if (this.chunkStart < this.parsedPos)\n            this.finishChunk();\n        if (this.parsedPos >= parseEnd)\n            return this.finish();\n        if (context && this.parsedPos >= context.viewport.to) {\n            context.skipUntilInView(this.parsedPos, parseEnd);\n            return this.finish();\n        }\n        return null;\n    }\n    stopAt(pos) {\n        this.stoppedAt = pos;\n    }\n    lineAfter(pos) {\n        let chunk = this.input.chunk(pos);\n        if (!this.input.lineChunks) {\n            let eol = chunk.indexOf(\"\\n\");\n            if (eol > -1)\n                chunk = chunk.slice(0, eol);\n        }\n        else if (chunk == \"\\n\") {\n            chunk = \"\";\n        }\n        return pos + chunk.length <= this.to ? chunk : chunk.slice(0, this.to - pos);\n    }\n    nextLine() {\n        let from = this.parsedPos, line = this.lineAfter(from), end = from + line.length;\n        for (let index = this.rangeIndex;;) {\n            let rangeEnd = this.ranges[index].to;\n            if (rangeEnd >= end)\n                break;\n            line = line.slice(0, rangeEnd - (end - line.length));\n            index++;\n            if (index == this.ranges.length)\n                break;\n            let rangeStart = this.ranges[index].from;\n            let after = this.lineAfter(rangeStart);\n            line += after;\n            end = rangeStart + after.length;\n        }\n        return { line, end };\n    }\n    skipGapsTo(pos, offset, side) {\n        for (;;) {\n            let end = this.ranges[this.rangeIndex].to, offPos = pos + offset;\n            if (side > 0 ? end > offPos : end >= offPos)\n                break;\n            let start = this.ranges[++this.rangeIndex].from;\n            offset += start - end;\n        }\n        return offset;\n    }\n    moveRangeIndex() {\n        while (this.ranges[this.rangeIndex].to < this.parsedPos)\n            this.rangeIndex++;\n    }\n    emitToken(id, from, to, size, offset) {\n        if (this.ranges.length > 1) {\n            offset = this.skipGapsTo(from, offset, 1);\n            from += offset;\n            let len0 = this.chunk.length;\n            offset = this.skipGapsTo(to, offset, -1);\n            to += offset;\n            size += this.chunk.length - len0;\n        }\n        this.chunk.push(id, from, to, size);\n        return offset;\n    }\n    parseLine(context) {\n        let { line, end } = this.nextLine(), offset = 0, { streamParser } = this.lang;\n        let stream = new StringStream(line, context ? context.state.tabSize : 4, context ? getIndentUnit(context.state) : 2);\n        if (stream.eol()) {\n            streamParser.blankLine(this.state, stream.indentUnit);\n        }\n        else {\n            while (!stream.eol()) {\n                let token = readToken(streamParser.token, stream, this.state);\n                if (token)\n                    offset = this.emitToken(this.lang.tokenTable.resolve(token), this.parsedPos + stream.start, this.parsedPos + stream.pos, 4, offset);\n                if (stream.start > 10000 /* C.MaxLineLength */)\n                    break;\n            }\n        }\n        this.parsedPos = end;\n        this.moveRangeIndex();\n        if (this.parsedPos < this.to)\n            this.parsedPos++;\n    }\n    finishChunk() {\n        let tree = Tree.build({\n            buffer: this.chunk,\n            start: this.chunkStart,\n            length: this.parsedPos - this.chunkStart,\n            nodeSet,\n            topID: 0,\n            maxBufferLength: 2048 /* C.ChunkSize */,\n            reused: this.chunkReused\n        });\n        tree = new Tree(tree.type, tree.children, tree.positions, tree.length, [[this.lang.stateAfter, this.lang.streamParser.copyState(this.state)]]);\n        this.chunks.push(tree);\n        this.chunkPos.push(this.chunkStart - this.ranges[0].from);\n        this.chunk = [];\n        this.chunkReused = undefined;\n        this.chunkStart = this.parsedPos;\n    }\n    finish() {\n        return new Tree(this.lang.topNode, this.chunks, this.chunkPos, this.parsedPos - this.ranges[0].from).balance();\n    }\n}\nfunction readToken(token, stream, state) {\n    stream.start = stream.pos;\n    for (let i = 0; i < 10; i++) {\n        let result = token(stream, state);\n        if (stream.pos > stream.start)\n            return result;\n    }\n    throw new Error(\"Stream parser failed to advance stream.\");\n}\nconst noTokens = /*@__PURE__*/Object.create(null);\nconst typeArray = [NodeType.none];\nconst nodeSet = /*@__PURE__*/new NodeSet(typeArray);\nconst warned = [];\n// Cache of node types by name and tags\nconst byTag = /*@__PURE__*/Object.create(null);\nconst defaultTable = /*@__PURE__*/Object.create(null);\nfor (let [legacyName, name] of [\n    [\"variable\", \"variableName\"],\n    [\"variable-2\", \"variableName.special\"],\n    [\"string-2\", \"string.special\"],\n    [\"def\", \"variableName.definition\"],\n    [\"tag\", \"tagName\"],\n    [\"attribute\", \"attributeName\"],\n    [\"type\", \"typeName\"],\n    [\"builtin\", \"variableName.standard\"],\n    [\"qualifier\", \"modifier\"],\n    [\"error\", \"invalid\"],\n    [\"header\", \"heading\"],\n    [\"property\", \"propertyName\"]\n])\n    defaultTable[legacyName] = /*@__PURE__*/createTokenType(noTokens, name);\nclass TokenTable {\n    constructor(extra) {\n        this.extra = extra;\n        this.table = Object.assign(Object.create(null), defaultTable);\n    }\n    resolve(tag) {\n        return !tag ? 0 : this.table[tag] || (this.table[tag] = createTokenType(this.extra, tag));\n    }\n}\nconst defaultTokenTable = /*@__PURE__*/new TokenTable(noTokens);\nfunction warnForPart(part, msg) {\n    if (warned.indexOf(part) > -1)\n        return;\n    warned.push(part);\n    console.warn(msg);\n}\nfunction createTokenType(extra, tagStr) {\n    let tags$1 = [];\n    for (let name of tagStr.split(\" \")) {\n        let found = [];\n        for (let part of name.split(\".\")) {\n            let value = (extra[part] || tags[part]);\n            if (!value) {\n                warnForPart(part, `Unknown highlighting tag ${part}`);\n            }\n            else if (typeof value == \"function\") {\n                if (!found.length)\n                    warnForPart(part, `Modifier ${part} used at start of tag`);\n                else\n                    found = found.map(value);\n            }\n            else {\n                if (found.length)\n                    warnForPart(part, `Tag ${part} used as modifier`);\n                else\n                    found = Array.isArray(value) ? value : [value];\n            }\n        }\n        for (let tag of found)\n            tags$1.push(tag);\n    }\n    if (!tags$1.length)\n        return 0;\n    let name = tagStr.replace(/ /g, \"_\"), key = name + \" \" + tags$1.map(t => t.id);\n    let known = byTag[key];\n    if (known)\n        return known.id;\n    let type = byTag[key] = NodeType.define({\n        id: typeArray.length,\n        name,\n        props: [styleTags({ [name]: tags$1 })]\n    });\n    typeArray.push(type);\n    return type.id;\n}\nfunction docID(data) {\n    let type = NodeType.define({ id: typeArray.length, name: \"Document\", props: [languageDataProp.add(() => data)], top: true });\n    typeArray.push(type);\n    return type;\n}\n\nfunction buildForLine(line) {\n    return line.length <= 4096 && /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\ufb50-\\ufdff]/.test(line);\n}\nfunction textHasRTL(text) {\n    for (let i = text.iter(); !i.next().done;)\n        if (buildForLine(i.value))\n            return true;\n    return false;\n}\nfunction changeAddsRTL(change) {\n    let added = false;\n    change.iterChanges((fA, tA, fB, tB, ins) => {\n        if (!added && textHasRTL(ins))\n            added = true;\n    });\n    return added;\n}\nconst alwaysIsolate = /*@__PURE__*/Facet.define({ combine: values => values.some(x => x) });\n/**\nMake sure nodes\n[marked](https://lezer.codemirror.net/docs/ref/#common.NodeProp^isolate)\nas isolating for bidirectional text are rendered in a way that\nisolates them from the surrounding text.\n*/\nfunction bidiIsolates(options = {}) {\n    let extensions = [isolateMarks];\n    if (options.alwaysIsolate)\n        extensions.push(alwaysIsolate.of(true));\n    return extensions;\n}\nconst isolateMarks = /*@__PURE__*/ViewPlugin.fromClass(class {\n    constructor(view) {\n        this.always = view.state.facet(alwaysIsolate) ||\n            view.textDirection != Direction.LTR ||\n            view.state.facet(EditorView.perLineTextDirection);\n        this.hasRTL = !this.always && textHasRTL(view.state.doc);\n        this.tree = syntaxTree(view.state);\n        this.decorations = this.always || this.hasRTL ? buildDeco(view, this.tree, this.always) : Decoration.none;\n    }\n    update(update) {\n        let always = update.state.facet(alwaysIsolate) ||\n            update.view.textDirection != Direction.LTR ||\n            update.state.facet(EditorView.perLineTextDirection);\n        if (!always && !this.hasRTL && changeAddsRTL(update.changes))\n            this.hasRTL = true;\n        if (!always && !this.hasRTL)\n            return;\n        let tree = syntaxTree(update.state);\n        if (always != this.always || tree != this.tree || update.docChanged || update.viewportChanged) {\n            this.tree = tree;\n            this.always = always;\n            this.decorations = buildDeco(update.view, tree, always);\n        }\n    }\n}, {\n    provide: plugin => {\n        function access(view) {\n            var _a, _b;\n            return (_b = (_a = view.plugin(plugin)) === null || _a === void 0 ? void 0 : _a.decorations) !== null && _b !== void 0 ? _b : Decoration.none;\n        }\n        return [EditorView.outerDecorations.of(access),\n            Prec.lowest(EditorView.bidiIsolatedRanges.of(access))];\n    }\n});\nfunction buildDeco(view, tree, always) {\n    let deco = new RangeSetBuilder();\n    let ranges = view.visibleRanges;\n    if (!always)\n        ranges = clipRTLLines(ranges, view.state.doc);\n    for (let { from, to } of ranges) {\n        tree.iterate({\n            enter: node => {\n                let iso = node.type.prop(NodeProp.isolate);\n                if (iso)\n                    deco.add(node.from, node.to, marks[iso]);\n            },\n            from, to\n        });\n    }\n    return deco.finish();\n}\nfunction clipRTLLines(ranges, doc) {\n    let cur = doc.iter(), pos = 0, result = [], last = null;\n    for (let { from, to } of ranges) {\n        if (from != pos) {\n            if (pos < from)\n                cur.next(from - pos);\n            pos = from;\n        }\n        for (;;) {\n            let start = pos, end = pos + cur.value.length;\n            if (!cur.lineBreak && buildForLine(cur.value)) {\n                if (last && last.to > start - 10)\n                    last.to = Math.min(to, end);\n                else\n                    result.push(last = { from: start, to: Math.min(to, end) });\n            }\n            if (pos >= to)\n                break;\n            pos = end;\n            cur.next();\n        }\n    }\n    return result;\n}\nconst marks = {\n    rtl: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"rtl\" }, bidiIsolate: Direction.RTL }),\n    ltr: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"ltr\" }, bidiIsolate: Direction.LTR }),\n    auto: /*@__PURE__*/Decoration.mark({ class: \"cm-iso\", inclusive: true, attributes: { dir: \"auto\" }, bidiIsolate: null })\n};\n\nexport { DocInput, HighlightStyle, IndentContext, LRLanguage, Language, LanguageDescription, LanguageSupport, ParseContext, StreamLanguage, StringStream, TreeIndentContext, bidiIsolates, bracketMatching, bracketMatchingHandle, codeFolding, continuedIndent, defaultHighlightStyle, defineLanguageFacet, delimitedIndent, ensureSyntaxTree, flatIndent, foldAll, foldCode, foldEffect, foldGutter, foldInside, foldKeymap, foldNodeProp, foldService, foldState, foldable, foldedRanges, forceParsing, getIndentUnit, getIndentation, highlightingFor, indentNodeProp, indentOnInput, indentRange, indentService, indentString, indentUnit, language, languageDataProp, matchBrackets, sublanguageProp, syntaxHighlighting, syntaxParserRunning, syntaxTree, syntaxTreeAvailable, toggleFold, unfoldAll, unfoldCode, unfoldEffect };\n","import { Annotation, Facet, combineConfig, StateField, Transaction, ChangeSet, ChangeDesc, EditorSelection, StateEffect, Text, findClusterBreak, countColumn, CharCategory } from '@codemirror/state';\nimport { EditorView, Direction } from '@codemirror/view';\nimport { IndentContext, getIndentation, indentString, matchBrackets, syntaxTree, getIndentUnit, indentUnit } from '@codemirror/language';\nimport { NodeProp } from '@lezer/common';\n\n/**\nComment or uncomment the current selection. Will use line comments\nif available, otherwise falling back to block comments.\n*/\nconst toggleComment = target => {\n    let { state } = target, line = state.doc.lineAt(state.selection.main.from), config = getConfig(target.state, line.from);\n    return config.line ? toggleLineComment(target) : config.block ? toggleBlockCommentByLine(target) : false;\n};\nfunction command(f, option) {\n    return ({ state, dispatch }) => {\n        if (state.readOnly)\n            return false;\n        let tr = f(option, state);\n        if (!tr)\n            return false;\n        dispatch(state.update(tr));\n        return true;\n    };\n}\n/**\nComment or uncomment the current selection using line comments.\nThe line comment syntax is taken from the\n[`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).\n*/\nconst toggleLineComment = /*@__PURE__*/command(changeLineComment, 0 /* CommentOption.Toggle */);\n/**\nComment the current selection using line comments.\n*/\nconst lineComment = /*@__PURE__*/command(changeLineComment, 1 /* CommentOption.Comment */);\n/**\nUncomment the current selection using line comments.\n*/\nconst lineUncomment = /*@__PURE__*/command(changeLineComment, 2 /* CommentOption.Uncomment */);\n/**\nComment or uncomment the current selection using block comments.\nThe block comment syntax is taken from the\n[`commentTokens`](https://codemirror.net/6/docs/ref/#commands.CommentTokens) [language\ndata](https://codemirror.net/6/docs/ref/#state.EditorState.languageDataAt).\n*/\nconst toggleBlockComment = /*@__PURE__*/command(changeBlockComment, 0 /* CommentOption.Toggle */);\n/**\nComment the current selection using block comments.\n*/\nconst blockComment = /*@__PURE__*/command(changeBlockComment, 1 /* CommentOption.Comment */);\n/**\nUncomment the current selection using block comments.\n*/\nconst blockUncomment = /*@__PURE__*/command(changeBlockComment, 2 /* CommentOption.Uncomment */);\n/**\nComment or uncomment the lines around the current selection using\nblock comments.\n*/\nconst toggleBlockCommentByLine = /*@__PURE__*/command((o, s) => changeBlockComment(o, s, selectedLineRanges(s)), 0 /* CommentOption.Toggle */);\nfunction getConfig(state, pos) {\n    let data = state.languageDataAt(\"commentTokens\", pos);\n    return data.length ? data[0] : {};\n}\nconst SearchMargin = 50;\n/**\nDetermines if the given range is block-commented in the given\nstate.\n*/\nfunction findBlockComment(state, { open, close }, from, to) {\n    let textBefore = state.sliceDoc(from - SearchMargin, from);\n    let textAfter = state.sliceDoc(to, to + SearchMargin);\n    let spaceBefore = /\\s*$/.exec(textBefore)[0].length, spaceAfter = /^\\s*/.exec(textAfter)[0].length;\n    let beforeOff = textBefore.length - spaceBefore;\n    if (textBefore.slice(beforeOff - open.length, beforeOff) == open &&\n        textAfter.slice(spaceAfter, spaceAfter + close.length) == close) {\n        return { open: { pos: from - spaceBefore, margin: spaceBefore && 1 },\n            close: { pos: to + spaceAfter, margin: spaceAfter && 1 } };\n    }\n    let startText, endText;\n    if (to - from <= 2 * SearchMargin) {\n        startText = endText = state.sliceDoc(from, to);\n    }\n    else {\n        startText = state.sliceDoc(from, from + SearchMargin);\n        endText = state.sliceDoc(to - SearchMargin, to);\n    }\n    let startSpace = /^\\s*/.exec(startText)[0].length, endSpace = /\\s*$/.exec(endText)[0].length;\n    let endOff = endText.length - endSpace - close.length;\n    if (startText.slice(startSpace, startSpace + open.length) == open &&\n        endText.slice(endOff, endOff + close.length) == close) {\n        return { open: { pos: from + startSpace + open.length,\n                margin: /\\s/.test(startText.charAt(startSpace + open.length)) ? 1 : 0 },\n            close: { pos: to - endSpace - close.length,\n                margin: /\\s/.test(endText.charAt(endOff - 1)) ? 1 : 0 } };\n    }\n    return null;\n}\nfunction selectedLineRanges(state) {\n    let ranges = [];\n    for (let r of state.selection.ranges) {\n        let fromLine = state.doc.lineAt(r.from);\n        let toLine = r.to <= fromLine.to ? fromLine : state.doc.lineAt(r.to);\n        let last = ranges.length - 1;\n        if (last >= 0 && ranges[last].to > fromLine.from)\n            ranges[last].to = toLine.to;\n        else\n            ranges.push({ from: fromLine.from + /^\\s*/.exec(fromLine.text)[0].length, to: toLine.to });\n    }\n    return ranges;\n}\n// Performs toggle, comment and uncomment of block comments in\n// languages that support them.\nfunction changeBlockComment(option, state, ranges = state.selection.ranges) {\n    let tokens = ranges.map(r => getConfig(state, r.from).block);\n    if (!tokens.every(c => c))\n        return null;\n    let comments = ranges.map((r, i) => findBlockComment(state, tokens[i], r.from, r.to));\n    if (option != 2 /* CommentOption.Uncomment */ && !comments.every(c => c)) {\n        return { changes: state.changes(ranges.map((range, i) => {\n                if (comments[i])\n                    return [];\n                return [{ from: range.from, insert: tokens[i].open + \" \" }, { from: range.to, insert: \" \" + tokens[i].close }];\n            })) };\n    }\n    else if (option != 1 /* CommentOption.Comment */ && comments.some(c => c)) {\n        let changes = [];\n        for (let i = 0, comment; i < comments.length; i++)\n            if (comment = comments[i]) {\n                let token = tokens[i], { open, close } = comment;\n                changes.push({ from: open.pos - token.open.length, to: open.pos + open.margin }, { from: close.pos - close.margin, to: close.pos + token.close.length });\n            }\n        return { changes };\n    }\n    return null;\n}\n// Performs toggle, comment and uncomment of line comments.\nfunction changeLineComment(option, state, ranges = state.selection.ranges) {\n    let lines = [];\n    let prevLine = -1;\n    for (let { from, to } of ranges) {\n        let startI = lines.length, minIndent = 1e9;\n        let token = getConfig(state, from).line;\n        if (!token)\n            continue;\n        for (let pos = from; pos <= to;) {\n            let line = state.doc.lineAt(pos);\n            if (line.from > prevLine && (from == to || to > line.from)) {\n                prevLine = line.from;\n                let indent = /^\\s*/.exec(line.text)[0].length;\n                let empty = indent == line.length;\n                let comment = line.text.slice(indent, indent + token.length) == token ? indent : -1;\n                if (indent < line.text.length && indent < minIndent)\n                    minIndent = indent;\n                lines.push({ line, comment, token, indent, empty, single: false });\n            }\n            pos = line.to + 1;\n        }\n        if (minIndent < 1e9)\n            for (let i = startI; i < lines.length; i++)\n                if (lines[i].indent < lines[i].line.text.length)\n                    lines[i].indent = minIndent;\n        if (lines.length == startI + 1)\n            lines[startI].single = true;\n    }\n    if (option != 2 /* CommentOption.Uncomment */ && lines.some(l => l.comment < 0 && (!l.empty || l.single))) {\n        let changes = [];\n        for (let { line, token, indent, empty, single } of lines)\n            if (single || !empty)\n                changes.push({ from: line.from + indent, insert: token + \" \" });\n        let changeSet = state.changes(changes);\n        return { changes: changeSet, selection: state.selection.map(changeSet, 1) };\n    }\n    else if (option != 1 /* CommentOption.Comment */ && lines.some(l => l.comment >= 0)) {\n        let changes = [];\n        for (let { line, comment, token } of lines)\n            if (comment >= 0) {\n                let from = line.from + comment, to = from + token.length;\n                if (line.text[to - line.from] == \" \")\n                    to++;\n                changes.push({ from, to });\n            }\n        return { changes };\n    }\n    return null;\n}\n\nconst fromHistory = /*@__PURE__*/Annotation.define();\n/**\nTransaction annotation that will prevent that transaction from\nbeing combined with other transactions in the undo history. Given\n`\"before\"`, it'll prevent merging with previous transactions. With\n`\"after\"`, subsequent transactions won't be combined with this\none. With `\"full\"`, the transaction is isolated on both sides.\n*/\nconst isolateHistory = /*@__PURE__*/Annotation.define();\n/**\nThis facet provides a way to register functions that, given a\ntransaction, provide a set of effects that the history should\nstore when inverting the transaction. This can be used to\nintegrate some kinds of effects in the history, so that they can\nbe undone (and redone again).\n*/\nconst invertedEffects = /*@__PURE__*/Facet.define();\nconst historyConfig = /*@__PURE__*/Facet.define({\n    combine(configs) {\n        return combineConfig(configs, {\n            minDepth: 100,\n            newGroupDelay: 500,\n            joinToEvent: (_t, isAdjacent) => isAdjacent,\n        }, {\n            minDepth: Math.max,\n            newGroupDelay: Math.min,\n            joinToEvent: (a, b) => (tr, adj) => a(tr, adj) || b(tr, adj)\n        });\n    }\n});\nconst historyField_ = /*@__PURE__*/StateField.define({\n    create() {\n        return HistoryState.empty;\n    },\n    update(state, tr) {\n        let config = tr.state.facet(historyConfig);\n        let fromHist = tr.annotation(fromHistory);\n        if (fromHist) {\n            let item = HistEvent.fromTransaction(tr, fromHist.selection), from = fromHist.side;\n            let other = from == 0 /* BranchName.Done */ ? state.undone : state.done;\n            if (item)\n                other = updateBranch(other, other.length, config.minDepth, item);\n            else\n                other = addSelection(other, tr.startState.selection);\n            return new HistoryState(from == 0 /* BranchName.Done */ ? fromHist.rest : other, from == 0 /* BranchName.Done */ ? other : fromHist.rest);\n        }\n        let isolate = tr.annotation(isolateHistory);\n        if (isolate == \"full\" || isolate == \"before\")\n            state = state.isolate();\n        if (tr.annotation(Transaction.addToHistory) === false)\n            return !tr.changes.empty ? state.addMapping(tr.changes.desc) : state;\n        let event = HistEvent.fromTransaction(tr);\n        let time = tr.annotation(Transaction.time), userEvent = tr.annotation(Transaction.userEvent);\n        if (event)\n            state = state.addChanges(event, time, userEvent, config, tr);\n        else if (tr.selection)\n            state = state.addSelection(tr.startState.selection, time, userEvent, config.newGroupDelay);\n        if (isolate == \"full\" || isolate == \"after\")\n            state = state.isolate();\n        return state;\n    },\n    toJSON(value) {\n        return { done: value.done.map(e => e.toJSON()), undone: value.undone.map(e => e.toJSON()) };\n    },\n    fromJSON(json) {\n        return new HistoryState(json.done.map(HistEvent.fromJSON), json.undone.map(HistEvent.fromJSON));\n    }\n});\n/**\nCreate a history extension with the given configuration.\n*/\nfunction history(config = {}) {\n    return [\n        historyField_,\n        historyConfig.of(config),\n        EditorView.domEventHandlers({\n            beforeinput(e, view) {\n                let command = e.inputType == \"historyUndo\" ? undo : e.inputType == \"historyRedo\" ? redo : null;\n                if (!command)\n                    return false;\n                e.preventDefault();\n                return command(view);\n            }\n        })\n    ];\n}\n/**\nThe state field used to store the history data. Should probably\nonly be used when you want to\n[serialize](https://codemirror.net/6/docs/ref/#state.EditorState.toJSON) or\n[deserialize](https://codemirror.net/6/docs/ref/#state.EditorState^fromJSON) state objects in a way\nthat preserves history.\n*/\nconst historyField = historyField_;\nfunction cmd(side, selection) {\n    return function ({ state, dispatch }) {\n        if (!selection && state.readOnly)\n            return false;\n        let historyState = state.field(historyField_, false);\n        if (!historyState)\n            return false;\n        let tr = historyState.pop(side, state, selection);\n        if (!tr)\n            return false;\n        dispatch(tr);\n        return true;\n    };\n}\n/**\nUndo a single group of history events. Returns false if no group\nwas available.\n*/\nconst undo = /*@__PURE__*/cmd(0 /* BranchName.Done */, false);\n/**\nRedo a group of history events. Returns false if no group was\navailable.\n*/\nconst redo = /*@__PURE__*/cmd(1 /* BranchName.Undone */, false);\n/**\nUndo a change or selection change.\n*/\nconst undoSelection = /*@__PURE__*/cmd(0 /* BranchName.Done */, true);\n/**\nRedo a change or selection change.\n*/\nconst redoSelection = /*@__PURE__*/cmd(1 /* BranchName.Undone */, true);\nfunction depth(side) {\n    return function (state) {\n        let histState = state.field(historyField_, false);\n        if (!histState)\n            return 0;\n        let branch = side == 0 /* BranchName.Done */ ? histState.done : histState.undone;\n        return branch.length - (branch.length && !branch[0].changes ? 1 : 0);\n    };\n}\n/**\nThe amount of undoable change events available in a given state.\n*/\nconst undoDepth = /*@__PURE__*/depth(0 /* BranchName.Done */);\n/**\nThe amount of redoable change events available in a given state.\n*/\nconst redoDepth = /*@__PURE__*/depth(1 /* BranchName.Undone */);\n// History events store groups of changes or effects that need to be\n// undone/redone together.\nclass HistEvent {\n    constructor(\n    // The changes in this event. Normal events hold at least one\n    // change or effect. But it may be necessary to store selection\n    // events before the first change, in which case a special type of\n    // instance is created which doesn't hold any changes, with\n    // changes == startSelection == undefined\n    changes, \n    // The effects associated with this event\n    effects, \n    // Accumulated mapping (from addToHistory==false) that should be\n    // applied to events below this one.\n    mapped, \n    // The selection before this event\n    startSelection, \n    // Stores selection changes after this event, to be used for\n    // selection undo/redo.\n    selectionsAfter) {\n        this.changes = changes;\n        this.effects = effects;\n        this.mapped = mapped;\n        this.startSelection = startSelection;\n        this.selectionsAfter = selectionsAfter;\n    }\n    setSelAfter(after) {\n        return new HistEvent(this.changes, this.effects, this.mapped, this.startSelection, after);\n    }\n    toJSON() {\n        var _a, _b, _c;\n        return {\n            changes: (_a = this.changes) === null || _a === void 0 ? void 0 : _a.toJSON(),\n            mapped: (_b = this.mapped) === null || _b === void 0 ? void 0 : _b.toJSON(),\n            startSelection: (_c = this.startSelection) === null || _c === void 0 ? void 0 : _c.toJSON(),\n            selectionsAfter: this.selectionsAfter.map(s => s.toJSON())\n        };\n    }\n    static fromJSON(json) {\n        return new HistEvent(json.changes && ChangeSet.fromJSON(json.changes), [], json.mapped && ChangeDesc.fromJSON(json.mapped), json.startSelection && EditorSelection.fromJSON(json.startSelection), json.selectionsAfter.map(EditorSelection.fromJSON));\n    }\n    // This does not check `addToHistory` and such, it assumes the\n    // transaction needs to be converted to an item. Returns null when\n    // there are no changes or effects in the transaction.\n    static fromTransaction(tr, selection) {\n        let effects = none;\n        for (let invert of tr.startState.facet(invertedEffects)) {\n            let result = invert(tr);\n            if (result.length)\n                effects = effects.concat(result);\n        }\n        if (!effects.length && tr.changes.empty)\n            return null;\n        return new HistEvent(tr.changes.invert(tr.startState.doc), effects, undefined, selection || tr.startState.selection, none);\n    }\n    static selection(selections) {\n        return new HistEvent(undefined, none, undefined, undefined, selections);\n    }\n}\nfunction updateBranch(branch, to, maxLen, newEvent) {\n    let start = to + 1 > maxLen + 20 ? to - maxLen - 1 : 0;\n    let newBranch = branch.slice(start, to);\n    newBranch.push(newEvent);\n    return newBranch;\n}\nfunction isAdjacent(a, b) {\n    let ranges = [], isAdjacent = false;\n    a.iterChangedRanges((f, t) => ranges.push(f, t));\n    b.iterChangedRanges((_f, _t, f, t) => {\n        for (let i = 0; i < ranges.length;) {\n            let from = ranges[i++], to = ranges[i++];\n            if (t >= from && f <= to)\n                isAdjacent = true;\n        }\n    });\n    return isAdjacent;\n}\nfunction eqSelectionShape(a, b) {\n    return a.ranges.length == b.ranges.length &&\n        a.ranges.filter((r, i) => r.empty != b.ranges[i].empty).length === 0;\n}\nfunction conc(a, b) {\n    return !a.length ? b : !b.length ? a : a.concat(b);\n}\nconst none = [];\nconst MaxSelectionsPerEvent = 200;\nfunction addSelection(branch, selection) {\n    if (!branch.length) {\n        return [HistEvent.selection([selection])];\n    }\n    else {\n        let lastEvent = branch[branch.length - 1];\n        let sels = lastEvent.selectionsAfter.slice(Math.max(0, lastEvent.selectionsAfter.length - MaxSelectionsPerEvent));\n        if (sels.length && sels[sels.length - 1].eq(selection))\n            return branch;\n        sels.push(selection);\n        return updateBranch(branch, branch.length - 1, 1e9, lastEvent.setSelAfter(sels));\n    }\n}\n// Assumes the top item has one or more selectionAfter values\nfunction popSelection(branch) {\n    let last = branch[branch.length - 1];\n    let newBranch = branch.slice();\n    newBranch[branch.length - 1] = last.setSelAfter(last.selectionsAfter.slice(0, last.selectionsAfter.length - 1));\n    return newBranch;\n}\n// Add a mapping to the top event in the given branch. If this maps\n// away all the changes and effects in that item, drop it and\n// propagate the mapping to the next item.\nfunction addMappingToBranch(branch, mapping) {\n    if (!branch.length)\n        return branch;\n    let length = branch.length, selections = none;\n    while (length) {\n        let event = mapEvent(branch[length - 1], mapping, selections);\n        if (event.changes && !event.changes.empty || event.effects.length) { // Event survived mapping\n            let result = branch.slice(0, length);\n            result[length - 1] = event;\n            return result;\n        }\n        else { // Drop this event, since there's no changes or effects left\n            mapping = event.mapped;\n            length--;\n            selections = event.selectionsAfter;\n        }\n    }\n    return selections.length ? [HistEvent.selection(selections)] : none;\n}\nfunction mapEvent(event, mapping, extraSelections) {\n    let selections = conc(event.selectionsAfter.length ? event.selectionsAfter.map(s => s.map(mapping)) : none, extraSelections);\n    // Change-less events don't store mappings (they are always the last event in a branch)\n    if (!event.changes)\n        return HistEvent.selection(selections);\n    let mappedChanges = event.changes.map(mapping), before = mapping.mapDesc(event.changes, true);\n    let fullMapping = event.mapped ? event.mapped.composeDesc(before) : before;\n    return new HistEvent(mappedChanges, StateEffect.mapEffects(event.effects, mapping), fullMapping, event.startSelection.map(before), selections);\n}\nconst joinableUserEvent = /^(input\\.type|delete)($|\\.)/;\nclass HistoryState {\n    constructor(done, undone, prevTime = 0, prevUserEvent = undefined) {\n        this.done = done;\n        this.undone = undone;\n        this.prevTime = prevTime;\n        this.prevUserEvent = prevUserEvent;\n    }\n    isolate() {\n        return this.prevTime ? new HistoryState(this.done, this.undone) : this;\n    }\n    addChanges(event, time, userEvent, config, tr) {\n        let done = this.done, lastEvent = done[done.length - 1];\n        if (lastEvent && lastEvent.changes && !lastEvent.changes.empty && event.changes &&\n            (!userEvent || joinableUserEvent.test(userEvent)) &&\n            ((!lastEvent.selectionsAfter.length &&\n                time - this.prevTime < config.newGroupDelay &&\n                config.joinToEvent(tr, isAdjacent(lastEvent.changes, event.changes))) ||\n                // For compose (but not compose.start) events, always join with previous event\n                userEvent == \"input.type.compose\")) {\n            done = updateBranch(done, done.length - 1, config.minDepth, new HistEvent(event.changes.compose(lastEvent.changes), conc(event.effects, lastEvent.effects), lastEvent.mapped, lastEvent.startSelection, none));\n        }\n        else {\n            done = updateBranch(done, done.length, config.minDepth, event);\n        }\n        return new HistoryState(done, none, time, userEvent);\n    }\n    addSelection(selection, time, userEvent, newGroupDelay) {\n        let last = this.done.length ? this.done[this.done.length - 1].selectionsAfter : none;\n        if (last.length > 0 &&\n            time - this.prevTime < newGroupDelay &&\n            userEvent == this.prevUserEvent && userEvent && /^select($|\\.)/.test(userEvent) &&\n            eqSelectionShape(last[last.length - 1], selection))\n            return this;\n        return new HistoryState(addSelection(this.done, selection), this.undone, time, userEvent);\n    }\n    addMapping(mapping) {\n        return new HistoryState(addMappingToBranch(this.done, mapping), addMappingToBranch(this.undone, mapping), this.prevTime, this.prevUserEvent);\n    }\n    pop(side, state, onlySelection) {\n        let branch = side == 0 /* BranchName.Done */ ? this.done : this.undone;\n        if (branch.length == 0)\n            return null;\n        let event = branch[branch.length - 1], selection = event.selectionsAfter[0] || state.selection;\n        if (onlySelection && event.selectionsAfter.length) {\n            return state.update({\n                selection: event.selectionsAfter[event.selectionsAfter.length - 1],\n                annotations: fromHistory.of({ side, rest: popSelection(branch), selection }),\n                userEvent: side == 0 /* BranchName.Done */ ? \"select.undo\" : \"select.redo\",\n                scrollIntoView: true\n            });\n        }\n        else if (!event.changes) {\n            return null;\n        }\n        else {\n            let rest = branch.length == 1 ? none : branch.slice(0, branch.length - 1);\n            if (event.mapped)\n                rest = addMappingToBranch(rest, event.mapped);\n            return state.update({\n                changes: event.changes,\n                selection: event.startSelection,\n                effects: event.effects,\n                annotations: fromHistory.of({ side, rest, selection }),\n                filter: false,\n                userEvent: side == 0 /* BranchName.Done */ ? \"undo\" : \"redo\",\n                scrollIntoView: true\n            });\n        }\n    }\n}\nHistoryState.empty = /*@__PURE__*/new HistoryState(none, none);\n/**\nDefault key bindings for the undo history.\n\n- Mod-z: [`undo`](https://codemirror.net/6/docs/ref/#commands.undo).\n- Mod-y (Mod-Shift-z on macOS) + Ctrl-Shift-z on Linux: [`redo`](https://codemirror.net/6/docs/ref/#commands.redo).\n- Mod-u: [`undoSelection`](https://codemirror.net/6/docs/ref/#commands.undoSelection).\n- Alt-u (Mod-Shift-u on macOS): [`redoSelection`](https://codemirror.net/6/docs/ref/#commands.redoSelection).\n*/\nconst historyKeymap = [\n    { key: \"Mod-z\", run: undo, preventDefault: true },\n    { key: \"Mod-y\", mac: \"Mod-Shift-z\", run: redo, preventDefault: true },\n    { linux: \"Ctrl-Shift-z\", run: redo, preventDefault: true },\n    { key: \"Mod-u\", run: undoSelection, preventDefault: true },\n    { key: \"Alt-u\", mac: \"Mod-Shift-u\", run: redoSelection, preventDefault: true }\n];\n\nfunction updateSel(sel, by) {\n    return EditorSelection.create(sel.ranges.map(by), sel.mainIndex);\n}\nfunction setSel(state, selection) {\n    return state.update({ selection, scrollIntoView: true, userEvent: \"select\" });\n}\nfunction moveSel({ state, dispatch }, how) {\n    let selection = updateSel(state.selection, how);\n    if (selection.eq(state.selection, true))\n        return false;\n    dispatch(setSel(state, selection));\n    return true;\n}\nfunction rangeEnd(range, forward) {\n    return EditorSelection.cursor(forward ? range.to : range.from);\n}\nfunction cursorByChar(view, forward) {\n    return moveSel(view, range => range.empty ? view.moveByChar(range, forward) : rangeEnd(range, forward));\n}\nfunction ltrAtCursor(view) {\n    return view.textDirectionAt(view.state.selection.main.head) == Direction.LTR;\n}\n/**\nMove the selection one character to the left (which is backward in\nleft-to-right text, forward in right-to-left text).\n*/\nconst cursorCharLeft = view => cursorByChar(view, !ltrAtCursor(view));\n/**\nMove the selection one character to the right.\n*/\nconst cursorCharRight = view => cursorByChar(view, ltrAtCursor(view));\n/**\nMove the selection one character forward.\n*/\nconst cursorCharForward = view => cursorByChar(view, true);\n/**\nMove the selection one character backward.\n*/\nconst cursorCharBackward = view => cursorByChar(view, false);\nfunction cursorByGroup(view, forward) {\n    return moveSel(view, range => range.empty ? view.moveByGroup(range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection to the left across one group of word or\nnon-word (but also non-space) characters.\n*/\nconst cursorGroupLeft = view => cursorByGroup(view, !ltrAtCursor(view));\n/**\nMove the selection one group to the right.\n*/\nconst cursorGroupRight = view => cursorByGroup(view, ltrAtCursor(view));\n/**\nMove the selection one group forward.\n*/\nconst cursorGroupForward = view => cursorByGroup(view, true);\n/**\nMove the selection one group backward.\n*/\nconst cursorGroupBackward = view => cursorByGroup(view, false);\nconst segmenter = typeof Intl != \"undefined\" && Intl.Segmenter ?\n    /*@__PURE__*/new (Intl.Segmenter)(undefined, { granularity: \"word\" }) : null;\nfunction moveBySubword(view, range, forward) {\n    let categorize = view.state.charCategorizer(range.from);\n    let cat = CharCategory.Space, pos = range.from, steps = 0;\n    let done = false, sawUpper = false, sawLower = false;\n    let step = (next) => {\n        if (done)\n            return false;\n        pos += forward ? next.length : -next.length;\n        let nextCat = categorize(next), ahead;\n        if (nextCat == CharCategory.Word && next.charCodeAt(0) < 128 && /[\\W_]/.test(next))\n            nextCat = -1; // Treat word punctuation specially\n        if (cat == CharCategory.Space)\n            cat = nextCat;\n        if (cat != nextCat)\n            return false;\n        if (cat == CharCategory.Word) {\n            if (next.toLowerCase() == next) {\n                if (!forward && sawUpper)\n                    return false;\n                sawLower = true;\n            }\n            else if (sawLower) {\n                if (forward)\n                    return false;\n                done = true;\n            }\n            else {\n                if (sawUpper && forward && categorize(ahead = view.state.sliceDoc(pos, pos + 1)) == CharCategory.Word &&\n                    ahead.toLowerCase() == ahead)\n                    return false;\n                sawUpper = true;\n            }\n        }\n        steps++;\n        return true;\n    };\n    let end = view.moveByChar(range, forward, start => {\n        step(start);\n        return step;\n    });\n    if (segmenter && cat == CharCategory.Word && end.from == range.from + steps * (forward ? 1 : -1)) {\n        let from = Math.min(range.head, end.head), to = Math.max(range.head, end.head);\n        let skipped = view.state.sliceDoc(from, to);\n        if (skipped.length > 1 && /[\\u4E00-\\uffff]/.test(skipped)) {\n            let segments = Array.from(segmenter.segment(skipped));\n            if (segments.length > 1) {\n                if (forward)\n                    return EditorSelection.cursor(range.head + segments[1].index, -1);\n                return EditorSelection.cursor(end.head + segments[segments.length - 1].index, 1);\n            }\n        }\n    }\n    return end;\n}\nfunction cursorBySubword(view, forward) {\n    return moveSel(view, range => range.empty ? moveBySubword(view, range, forward) : rangeEnd(range, forward));\n}\n/**\nMove the selection one group or camel-case subword forward.\n*/\nconst cursorSubwordForward = view => cursorBySubword(view, true);\n/**\nMove the selection one group or camel-case subword backward.\n*/\nconst cursorSubwordBackward = view => cursorBySubword(view, false);\nfunction interestingNode(state, node, bracketProp) {\n    if (node.type.prop(bracketProp))\n        return true;\n    let len = node.to - node.from;\n    return len && (len > 2 || /[^\\s,.;:]/.test(state.sliceDoc(node.from, node.to))) || node.firstChild;\n}\nfunction moveBySyntax(state, start, forward) {\n    let pos = syntaxTree(state).resolveInner(start.head);\n    let bracketProp = forward ? NodeProp.closedBy : NodeProp.openedBy;\n    // Scan forward through child nodes to see if there's an interesting\n    // node ahead.\n    for (let at = start.head;;) {\n        let next = forward ? pos.childAfter(at) : pos.childBefore(at);\n        if (!next)\n            break;\n        if (interestingNode(state, next, bracketProp))\n            pos = next;\n        else\n            at = forward ? next.to : next.from;\n    }\n    let bracket = pos.type.prop(bracketProp), match, newPos;\n    if (bracket && (match = forward ? matchBrackets(state, pos.from, 1) : matchBrackets(state, pos.to, -1)) && match.matched)\n        newPos = forward ? match.end.to : match.end.from;\n    else\n        newPos = forward ? pos.to : pos.from;\n    return EditorSelection.cursor(newPos, forward ? -1 : 1);\n}\n/**\nMove the cursor over the next syntactic element to the left.\n*/\nconst cursorSyntaxLeft = view => moveSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));\n/**\nMove the cursor over the next syntactic element to the right.\n*/\nconst cursorSyntaxRight = view => moveSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));\nfunction cursorByLine(view, forward) {\n    return moveSel(view, range => {\n        if (!range.empty)\n            return rangeEnd(range, forward);\n        let moved = view.moveVertically(range, forward);\n        return moved.head != range.head ? moved : view.moveToLineBoundary(range, forward);\n    });\n}\n/**\nMove the selection one line up.\n*/\nconst cursorLineUp = view => cursorByLine(view, false);\n/**\nMove the selection one line down.\n*/\nconst cursorLineDown = view => cursorByLine(view, true);\nfunction pageInfo(view) {\n    let selfScroll = view.scrollDOM.clientHeight < view.scrollDOM.scrollHeight - 2;\n    let marginTop = 0, marginBottom = 0, height;\n    if (selfScroll) {\n        for (let source of view.state.facet(EditorView.scrollMargins)) {\n            let margins = source(view);\n            if (margins === null || margins === void 0 ? void 0 : margins.top)\n                marginTop = Math.max(margins === null || margins === void 0 ? void 0 : margins.top, marginTop);\n            if (margins === null || margins === void 0 ? void 0 : margins.bottom)\n                marginBottom = Math.max(margins === null || margins === void 0 ? void 0 : margins.bottom, marginBottom);\n        }\n        height = view.scrollDOM.clientHeight - marginTop - marginBottom;\n    }\n    else {\n        height = (view.dom.ownerDocument.defaultView || window).innerHeight;\n    }\n    return { marginTop, marginBottom, selfScroll,\n        height: Math.max(view.defaultLineHeight, height - 5) };\n}\nfunction cursorByPage(view, forward) {\n    let page = pageInfo(view);\n    let { state } = view, selection = updateSel(state.selection, range => {\n        return range.empty ? view.moveVertically(range, forward, page.height)\n            : rangeEnd(range, forward);\n    });\n    if (selection.eq(state.selection))\n        return false;\n    let effect;\n    if (page.selfScroll) {\n        let startPos = view.coordsAtPos(state.selection.main.head);\n        let scrollRect = view.scrollDOM.getBoundingClientRect();\n        let scrollTop = scrollRect.top + page.marginTop, scrollBottom = scrollRect.bottom - page.marginBottom;\n        if (startPos && startPos.top > scrollTop && startPos.bottom < scrollBottom)\n            effect = EditorView.scrollIntoView(selection.main.head, { y: \"start\", yMargin: startPos.top - scrollTop });\n    }\n    view.dispatch(setSel(state, selection), { effects: effect });\n    return true;\n}\n/**\nMove the selection one page up.\n*/\nconst cursorPageUp = view => cursorByPage(view, false);\n/**\nMove the selection one page down.\n*/\nconst cursorPageDown = view => cursorByPage(view, true);\nfunction moveByLineBoundary(view, start, forward) {\n    let line = view.lineBlockAt(start.head), moved = view.moveToLineBoundary(start, forward);\n    if (moved.head == start.head && moved.head != (forward ? line.to : line.from))\n        moved = view.moveToLineBoundary(start, forward, false);\n    if (!forward && moved.head == line.from && line.length) {\n        let space = /^\\s*/.exec(view.state.sliceDoc(line.from, Math.min(line.from + 100, line.to)))[0].length;\n        if (space && start.head != line.from + space)\n            moved = EditorSelection.cursor(line.from + space);\n    }\n    return moved;\n}\n/**\nMove the selection to the next line wrap point, or to the end of\nthe line if there isn't one left on this line.\n*/\nconst cursorLineBoundaryForward = view => moveSel(view, range => moveByLineBoundary(view, range, true));\n/**\nMove the selection to previous line wrap point, or failing that to\nthe start of the line. If the line is indented, and the cursor\nisn't already at the end of the indentation, this will move to the\nend of the indentation instead of the start of the line.\n*/\nconst cursorLineBoundaryBackward = view => moveSel(view, range => moveByLineBoundary(view, range, false));\n/**\nMove the selection one line wrap point to the left.\n*/\nconst cursorLineBoundaryLeft = view => moveSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));\n/**\nMove the selection one line wrap point to the right.\n*/\nconst cursorLineBoundaryRight = view => moveSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));\n/**\nMove the selection to the start of the line.\n*/\nconst cursorLineStart = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from, 1));\n/**\nMove the selection to the end of the line.\n*/\nconst cursorLineEnd = view => moveSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to, -1));\nfunction toMatchingBracket(state, dispatch, extend) {\n    let found = false, selection = updateSel(state.selection, range => {\n        let matching = matchBrackets(state, range.head, -1)\n            || matchBrackets(state, range.head, 1)\n            || (range.head > 0 && matchBrackets(state, range.head - 1, 1))\n            || (range.head < state.doc.length && matchBrackets(state, range.head + 1, -1));\n        if (!matching || !matching.end)\n            return range;\n        found = true;\n        let head = matching.start.from == range.head ? matching.end.to : matching.end.from;\n        return extend ? EditorSelection.range(range.anchor, head) : EditorSelection.cursor(head);\n    });\n    if (!found)\n        return false;\n    dispatch(setSel(state, selection));\n    return true;\n}\n/**\nMove the selection to the bracket matching the one it is currently\non, if any.\n*/\nconst cursorMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, false);\n/**\nExtend the selection to the bracket matching the one the selection\nhead is currently on, if any.\n*/\nconst selectMatchingBracket = ({ state, dispatch }) => toMatchingBracket(state, dispatch, true);\nfunction extendSel(view, how) {\n    let selection = updateSel(view.state.selection, range => {\n        let head = how(range);\n        return EditorSelection.range(range.anchor, head.head, head.goalColumn, head.bidiLevel || undefined);\n    });\n    if (selection.eq(view.state.selection))\n        return false;\n    view.dispatch(setSel(view.state, selection));\n    return true;\n}\nfunction selectByChar(view, forward) {\n    return extendSel(view, range => view.moveByChar(range, forward));\n}\n/**\nMove the selection head one character to the left, while leaving\nthe anchor in place.\n*/\nconst selectCharLeft = view => selectByChar(view, !ltrAtCursor(view));\n/**\nMove the selection head one character to the right.\n*/\nconst selectCharRight = view => selectByChar(view, ltrAtCursor(view));\n/**\nMove the selection head one character forward.\n*/\nconst selectCharForward = view => selectByChar(view, true);\n/**\nMove the selection head one character backward.\n*/\nconst selectCharBackward = view => selectByChar(view, false);\nfunction selectByGroup(view, forward) {\n    return extendSel(view, range => view.moveByGroup(range, forward));\n}\n/**\nMove the selection head one [group](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) to\nthe left.\n*/\nconst selectGroupLeft = view => selectByGroup(view, !ltrAtCursor(view));\n/**\nMove the selection head one group to the right.\n*/\nconst selectGroupRight = view => selectByGroup(view, ltrAtCursor(view));\n/**\nMove the selection head one group forward.\n*/\nconst selectGroupForward = view => selectByGroup(view, true);\n/**\nMove the selection head one group backward.\n*/\nconst selectGroupBackward = view => selectByGroup(view, false);\nfunction selectBySubword(view, forward) {\n    return extendSel(view, range => moveBySubword(view, range, forward));\n}\n/**\nMove the selection head one group or camel-case subword forward.\n*/\nconst selectSubwordForward = view => selectBySubword(view, true);\n/**\nMove the selection head one group or subword backward.\n*/\nconst selectSubwordBackward = view => selectBySubword(view, false);\n/**\nMove the selection head over the next syntactic element to the left.\n*/\nconst selectSyntaxLeft = view => extendSel(view, range => moveBySyntax(view.state, range, !ltrAtCursor(view)));\n/**\nMove the selection head over the next syntactic element to the right.\n*/\nconst selectSyntaxRight = view => extendSel(view, range => moveBySyntax(view.state, range, ltrAtCursor(view)));\nfunction selectByLine(view, forward) {\n    return extendSel(view, range => view.moveVertically(range, forward));\n}\n/**\nMove the selection head one line up.\n*/\nconst selectLineUp = view => selectByLine(view, false);\n/**\nMove the selection head one line down.\n*/\nconst selectLineDown = view => selectByLine(view, true);\nfunction selectByPage(view, forward) {\n    return extendSel(view, range => view.moveVertically(range, forward, pageInfo(view).height));\n}\n/**\nMove the selection head one page up.\n*/\nconst selectPageUp = view => selectByPage(view, false);\n/**\nMove the selection head one page down.\n*/\nconst selectPageDown = view => selectByPage(view, true);\n/**\nMove the selection head to the next line boundary.\n*/\nconst selectLineBoundaryForward = view => extendSel(view, range => moveByLineBoundary(view, range, true));\n/**\nMove the selection head to the previous line boundary.\n*/\nconst selectLineBoundaryBackward = view => extendSel(view, range => moveByLineBoundary(view, range, false));\n/**\nMove the selection head one line boundary to the left.\n*/\nconst selectLineBoundaryLeft = view => extendSel(view, range => moveByLineBoundary(view, range, !ltrAtCursor(view)));\n/**\nMove the selection head one line boundary to the right.\n*/\nconst selectLineBoundaryRight = view => extendSel(view, range => moveByLineBoundary(view, range, ltrAtCursor(view)));\n/**\nMove the selection head to the start of the line.\n*/\nconst selectLineStart = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).from));\n/**\nMove the selection head to the end of the line.\n*/\nconst selectLineEnd = view => extendSel(view, range => EditorSelection.cursor(view.lineBlockAt(range.head).to));\n/**\nMove the selection to the start of the document.\n*/\nconst cursorDocStart = ({ state, dispatch }) => {\n    dispatch(setSel(state, { anchor: 0 }));\n    return true;\n};\n/**\nMove the selection to the end of the document.\n*/\nconst cursorDocEnd = ({ state, dispatch }) => {\n    dispatch(setSel(state, { anchor: state.doc.length }));\n    return true;\n};\n/**\nMove the selection head to the start of the document.\n*/\nconst selectDocStart = ({ state, dispatch }) => {\n    dispatch(setSel(state, { anchor: state.selection.main.anchor, head: 0 }));\n    return true;\n};\n/**\nMove the selection head to the end of the document.\n*/\nconst selectDocEnd = ({ state, dispatch }) => {\n    dispatch(setSel(state, { anchor: state.selection.main.anchor, head: state.doc.length }));\n    return true;\n};\n/**\nSelect the entire document.\n*/\nconst selectAll = ({ state, dispatch }) => {\n    dispatch(state.update({ selection: { anchor: 0, head: state.doc.length }, userEvent: \"select\" }));\n    return true;\n};\n/**\nExpand the selection to cover entire lines.\n*/\nconst selectLine = ({ state, dispatch }) => {\n    let ranges = selectedLineBlocks(state).map(({ from, to }) => EditorSelection.range(from, Math.min(to + 1, state.doc.length)));\n    dispatch(state.update({ selection: EditorSelection.create(ranges), userEvent: \"select\" }));\n    return true;\n};\n/**\nSelect the next syntactic construct that is larger than the\nselection. Note that this will only work insofar as the language\n[provider](https://codemirror.net/6/docs/ref/#language.language) you use builds up a full\nsyntax tree.\n*/\nconst selectParentSyntax = ({ state, dispatch }) => {\n    let selection = updateSel(state.selection, range => {\n        var _a;\n        let stack = syntaxTree(state).resolveStack(range.from, 1);\n        for (let cur = stack; cur; cur = cur.next) {\n            let { node } = cur;\n            if (((node.from < range.from && node.to >= range.to) ||\n                (node.to > range.to && node.from <= range.from)) &&\n                ((_a = node.parent) === null || _a === void 0 ? void 0 : _a.parent))\n                return EditorSelection.range(node.to, node.from);\n        }\n        return range;\n    });\n    dispatch(setSel(state, selection));\n    return true;\n};\n/**\nSimplify the current selection. When multiple ranges are selected,\nreduce it to its main range. Otherwise, if the selection is\nnon-empty, convert it to a cursor selection.\n*/\nconst simplifySelection = ({ state, dispatch }) => {\n    let cur = state.selection, selection = null;\n    if (cur.ranges.length > 1)\n        selection = EditorSelection.create([cur.main]);\n    else if (!cur.main.empty)\n        selection = EditorSelection.create([EditorSelection.cursor(cur.main.head)]);\n    if (!selection)\n        return false;\n    dispatch(setSel(state, selection));\n    return true;\n};\nfunction deleteBy(target, by) {\n    if (target.state.readOnly)\n        return false;\n    let event = \"delete.selection\", { state } = target;\n    let changes = state.changeByRange(range => {\n        let { from, to } = range;\n        if (from == to) {\n            let towards = by(range);\n            if (towards < from) {\n                event = \"delete.backward\";\n                towards = skipAtomic(target, towards, false);\n            }\n            else if (towards > from) {\n                event = \"delete.forward\";\n                towards = skipAtomic(target, towards, true);\n            }\n            from = Math.min(from, towards);\n            to = Math.max(to, towards);\n        }\n        else {\n            from = skipAtomic(target, from, false);\n            to = skipAtomic(target, to, true);\n        }\n        return from == to ? { range } : { changes: { from, to }, range: EditorSelection.cursor(from, from < range.head ? -1 : 1) };\n    });\n    if (changes.changes.empty)\n        return false;\n    target.dispatch(state.update(changes, {\n        scrollIntoView: true,\n        userEvent: event,\n        effects: event == \"delete.selection\" ? EditorView.announce.of(state.phrase(\"Selection deleted\")) : undefined\n    }));\n    return true;\n}\nfunction skipAtomic(target, pos, forward) {\n    if (target instanceof EditorView)\n        for (let ranges of target.state.facet(EditorView.atomicRanges).map(f => f(target)))\n            ranges.between(pos, pos, (from, to) => {\n                if (from < pos && to > pos)\n                    pos = forward ? to : from;\n            });\n    return pos;\n}\nconst deleteByChar = (target, forward) => deleteBy(target, range => {\n    let pos = range.from, { state } = target, line = state.doc.lineAt(pos), before, targetPos;\n    if (!forward && pos > line.from && pos < line.from + 200 &&\n        !/[^ \\t]/.test(before = line.text.slice(0, pos - line.from))) {\n        if (before[before.length - 1] == \"\\t\")\n            return pos - 1;\n        let col = countColumn(before, state.tabSize), drop = col % getIndentUnit(state) || getIndentUnit(state);\n        for (let i = 0; i < drop && before[before.length - 1 - i] == \" \"; i++)\n            pos--;\n        targetPos = pos;\n    }\n    else {\n        targetPos = findClusterBreak(line.text, pos - line.from, forward, forward) + line.from;\n        if (targetPos == pos && line.number != (forward ? state.doc.lines : 1))\n            targetPos += forward ? 1 : -1;\n        else if (!forward && /[\\ufe00-\\ufe0f]/.test(line.text.slice(targetPos - line.from, pos - line.from)))\n            targetPos = findClusterBreak(line.text, targetPos - line.from, false, false) + line.from;\n    }\n    return targetPos;\n});\n/**\nDelete the selection, or, for cursor selections, the character\nbefore the cursor.\n*/\nconst deleteCharBackward = view => deleteByChar(view, false);\n/**\nDelete the selection or the character after the cursor.\n*/\nconst deleteCharForward = view => deleteByChar(view, true);\nconst deleteByGroup = (target, forward) => deleteBy(target, range => {\n    let pos = range.head, { state } = target, line = state.doc.lineAt(pos);\n    let categorize = state.charCategorizer(pos);\n    for (let cat = null;;) {\n        if (pos == (forward ? line.to : line.from)) {\n            if (pos == range.head && line.number != (forward ? state.doc.lines : 1))\n                pos += forward ? 1 : -1;\n            break;\n        }\n        let next = findClusterBreak(line.text, pos - line.from, forward) + line.from;\n        let nextChar = line.text.slice(Math.min(pos, next) - line.from, Math.max(pos, next) - line.from);\n        let nextCat = categorize(nextChar);\n        if (cat != null && nextCat != cat)\n            break;\n        if (nextChar != \" \" || pos != range.head)\n            cat = nextCat;\n        pos = next;\n    }\n    return pos;\n});\n/**\nDelete the selection or backward until the end of the next\n[group](https://codemirror.net/6/docs/ref/#view.EditorView.moveByGroup), only skipping groups of\nwhitespace when they consist of a single space.\n*/\nconst deleteGroupBackward = target => deleteByGroup(target, false);\n/**\nDelete the selection or forward until the end of the next group.\n*/\nconst deleteGroupForward = target => deleteByGroup(target, true);\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe end of the line. If the cursor is directly at the end of the\nline, delete the line break after it.\n*/\nconst deleteToLineEnd = view => deleteBy(view, range => {\n    let lineEnd = view.lineBlockAt(range.head).to;\n    return range.head < lineEnd ? lineEnd : Math.min(view.state.doc.length, range.head + 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe start of the line. If the cursor is directly at the start of the\nline, delete the line break before it.\n*/\nconst deleteToLineStart = view => deleteBy(view, range => {\n    let lineStart = view.lineBlockAt(range.head).from;\n    return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe start of the line or the next line wrap before the cursor.\n*/\nconst deleteLineBoundaryBackward = view => deleteBy(view, range => {\n    let lineStart = view.moveToLineBoundary(range, false).head;\n    return range.head > lineStart ? lineStart : Math.max(0, range.head - 1);\n});\n/**\nDelete the selection, or, if it is a cursor selection, delete to\nthe end of the line or the next line wrap after the cursor.\n*/\nconst deleteLineBoundaryForward = view => deleteBy(view, range => {\n    let lineStart = view.moveToLineBoundary(range, true).head;\n    return range.head < lineStart ? lineStart : Math.min(view.state.doc.length, range.head + 1);\n});\n/**\nDelete all whitespace directly before a line end from the\ndocument.\n*/\nconst deleteTrailingWhitespace = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let changes = [];\n    for (let pos = 0, prev = \"\", iter = state.doc.iter();;) {\n        iter.next();\n        if (iter.lineBreak || iter.done) {\n            let trailing = prev.search(/\\s+$/);\n            if (trailing > -1)\n                changes.push({ from: pos - (prev.length - trailing), to: pos });\n            if (iter.done)\n                break;\n            prev = \"\";\n        }\n        else {\n            prev = iter.value;\n        }\n        pos += iter.value.length;\n    }\n    if (!changes.length)\n        return false;\n    dispatch(state.update({ changes, userEvent: \"delete\" }));\n    return true;\n};\n/**\nReplace each selection range with a line break, leaving the cursor\non the line before the break.\n*/\nconst splitLine = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let changes = state.changeByRange(range => {\n        return { changes: { from: range.from, to: range.to, insert: Text.of([\"\", \"\"]) },\n            range: EditorSelection.cursor(range.from) };\n    });\n    dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n    return true;\n};\n/**\nFlip the characters before and after the cursor(s).\n*/\nconst transposeChars = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let changes = state.changeByRange(range => {\n        if (!range.empty || range.from == 0 || range.from == state.doc.length)\n            return { range };\n        let pos = range.from, line = state.doc.lineAt(pos);\n        let from = pos == line.from ? pos - 1 : findClusterBreak(line.text, pos - line.from, false) + line.from;\n        let to = pos == line.to ? pos + 1 : findClusterBreak(line.text, pos - line.from, true) + line.from;\n        return { changes: { from, to, insert: state.doc.slice(pos, to).append(state.doc.slice(from, pos)) },\n            range: EditorSelection.cursor(to) };\n    });\n    if (changes.changes.empty)\n        return false;\n    dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"move.character\" }));\n    return true;\n};\nfunction selectedLineBlocks(state) {\n    let blocks = [], upto = -1;\n    for (let range of state.selection.ranges) {\n        let startLine = state.doc.lineAt(range.from), endLine = state.doc.lineAt(range.to);\n        if (!range.empty && range.to == endLine.from)\n            endLine = state.doc.lineAt(range.to - 1);\n        if (upto >= startLine.number) {\n            let prev = blocks[blocks.length - 1];\n            prev.to = endLine.to;\n            prev.ranges.push(range);\n        }\n        else {\n            blocks.push({ from: startLine.from, to: endLine.to, ranges: [range] });\n        }\n        upto = endLine.number + 1;\n    }\n    return blocks;\n}\nfunction moveLine(state, dispatch, forward) {\n    if (state.readOnly)\n        return false;\n    let changes = [], ranges = [];\n    for (let block of selectedLineBlocks(state)) {\n        if (forward ? block.to == state.doc.length : block.from == 0)\n            continue;\n        let nextLine = state.doc.lineAt(forward ? block.to + 1 : block.from - 1);\n        let size = nextLine.length + 1;\n        if (forward) {\n            changes.push({ from: block.to, to: nextLine.to }, { from: block.from, insert: nextLine.text + state.lineBreak });\n            for (let r of block.ranges)\n                ranges.push(EditorSelection.range(Math.min(state.doc.length, r.anchor + size), Math.min(state.doc.length, r.head + size)));\n        }\n        else {\n            changes.push({ from: nextLine.from, to: block.from }, { from: block.to, insert: state.lineBreak + nextLine.text });\n            for (let r of block.ranges)\n                ranges.push(EditorSelection.range(r.anchor - size, r.head - size));\n        }\n    }\n    if (!changes.length)\n        return false;\n    dispatch(state.update({\n        changes,\n        scrollIntoView: true,\n        selection: EditorSelection.create(ranges, state.selection.mainIndex),\n        userEvent: \"move.line\"\n    }));\n    return true;\n}\n/**\nMove the selected lines up one line.\n*/\nconst moveLineUp = ({ state, dispatch }) => moveLine(state, dispatch, false);\n/**\nMove the selected lines down one line.\n*/\nconst moveLineDown = ({ state, dispatch }) => moveLine(state, dispatch, true);\nfunction copyLine(state, dispatch, forward) {\n    if (state.readOnly)\n        return false;\n    let changes = [];\n    for (let block of selectedLineBlocks(state)) {\n        if (forward)\n            changes.push({ from: block.from, insert: state.doc.slice(block.from, block.to) + state.lineBreak });\n        else\n            changes.push({ from: block.to, insert: state.lineBreak + state.doc.slice(block.from, block.to) });\n    }\n    dispatch(state.update({ changes, scrollIntoView: true, userEvent: \"input.copyline\" }));\n    return true;\n}\n/**\nCreate a copy of the selected lines. Keep the selection in the top copy.\n*/\nconst copyLineUp = ({ state, dispatch }) => copyLine(state, dispatch, false);\n/**\nCreate a copy of the selected lines. Keep the selection in the bottom copy.\n*/\nconst copyLineDown = ({ state, dispatch }) => copyLine(state, dispatch, true);\n/**\nDelete selected lines.\n*/\nconst deleteLine = view => {\n    if (view.state.readOnly)\n        return false;\n    let { state } = view, changes = state.changes(selectedLineBlocks(state).map(({ from, to }) => {\n        if (from > 0)\n            from--;\n        else if (to < state.doc.length)\n            to++;\n        return { from, to };\n    }));\n    let selection = updateSel(state.selection, range => view.moveVertically(range, true)).map(changes);\n    view.dispatch({ changes, selection, scrollIntoView: true, userEvent: \"delete.line\" });\n    return true;\n};\n/**\nReplace the selection with a newline.\n*/\nconst insertNewline = ({ state, dispatch }) => {\n    dispatch(state.update(state.replaceSelection(state.lineBreak), { scrollIntoView: true, userEvent: \"input\" }));\n    return true;\n};\nfunction isBetweenBrackets(state, pos) {\n    if (/\\(\\)|\\[\\]|\\{\\}/.test(state.sliceDoc(pos - 1, pos + 1)))\n        return { from: pos, to: pos };\n    let context = syntaxTree(state).resolveInner(pos);\n    let before = context.childBefore(pos), after = context.childAfter(pos), closedBy;\n    if (before && after && before.to <= pos && after.from >= pos &&\n        (closedBy = before.type.prop(NodeProp.closedBy)) && closedBy.indexOf(after.name) > -1 &&\n        state.doc.lineAt(before.to).from == state.doc.lineAt(after.from).from &&\n        !/\\S/.test(state.sliceDoc(before.to, after.from)))\n        return { from: before.to, to: after.from };\n    return null;\n}\n/**\nReplace the selection with a newline and indent the newly created\nline(s). If the current line consists only of whitespace, this\nwill also delete that whitespace. When the cursor is between\nmatching brackets, an additional newline will be inserted after\nthe cursor.\n*/\nconst insertNewlineAndIndent = /*@__PURE__*/newlineAndIndent(false);\n/**\nCreate a blank, indented line below the current line.\n*/\nconst insertBlankLine = /*@__PURE__*/newlineAndIndent(true);\nfunction newlineAndIndent(atEof) {\n    return ({ state, dispatch }) => {\n        if (state.readOnly)\n            return false;\n        let changes = state.changeByRange(range => {\n            let { from, to } = range, line = state.doc.lineAt(from);\n            let explode = !atEof && from == to && isBetweenBrackets(state, from);\n            if (atEof)\n                from = to = (to <= line.to ? line : state.doc.lineAt(to)).to;\n            let cx = new IndentContext(state, { simulateBreak: from, simulateDoubleBreak: !!explode });\n            let indent = getIndentation(cx, from);\n            if (indent == null)\n                indent = countColumn(/^\\s*/.exec(state.doc.lineAt(from).text)[0], state.tabSize);\n            while (to < line.to && /\\s/.test(line.text[to - line.from]))\n                to++;\n            if (explode)\n                ({ from, to } = explode);\n            else if (from > line.from && from < line.from + 100 && !/\\S/.test(line.text.slice(0, from)))\n                from = line.from;\n            let insert = [\"\", indentString(state, indent)];\n            if (explode)\n                insert.push(indentString(state, cx.lineIndent(line.from, -1)));\n            return { changes: { from, to, insert: Text.of(insert) },\n                range: EditorSelection.cursor(from + 1 + insert[1].length) };\n        });\n        dispatch(state.update(changes, { scrollIntoView: true, userEvent: \"input\" }));\n        return true;\n    };\n}\nfunction changeBySelectedLine(state, f) {\n    let atLine = -1;\n    return state.changeByRange(range => {\n        let changes = [];\n        for (let pos = range.from; pos <= range.to;) {\n            let line = state.doc.lineAt(pos);\n            if (line.number > atLine && (range.empty || range.to > line.from)) {\n                f(line, changes, range);\n                atLine = line.number;\n            }\n            pos = line.to + 1;\n        }\n        let changeSet = state.changes(changes);\n        return { changes,\n            range: EditorSelection.range(changeSet.mapPos(range.anchor, 1), changeSet.mapPos(range.head, 1)) };\n    });\n}\n/**\nAuto-indent the selected lines. This uses the [indentation service\nfacet](https://codemirror.net/6/docs/ref/#language.indentService) as source for auto-indent\ninformation.\n*/\nconst indentSelection = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    let updated = Object.create(null);\n    let context = new IndentContext(state, { overrideIndentation: start => {\n            let found = updated[start];\n            return found == null ? -1 : found;\n        } });\n    let changes = changeBySelectedLine(state, (line, changes, range) => {\n        let indent = getIndentation(context, line.from);\n        if (indent == null)\n            return;\n        if (!/\\S/.test(line.text))\n            indent = 0;\n        let cur = /^\\s*/.exec(line.text)[0];\n        let norm = indentString(state, indent);\n        if (cur != norm || range.from < line.from + cur.length) {\n            updated[line.from] = indent;\n            changes.push({ from: line.from, to: line.from + cur.length, insert: norm });\n        }\n    });\n    if (!changes.changes.empty)\n        dispatch(state.update(changes, { userEvent: \"indent\" }));\n    return true;\n};\n/**\nAdd a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation to all selected\nlines.\n*/\nconst indentMore = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    dispatch(state.update(changeBySelectedLine(state, (line, changes) => {\n        changes.push({ from: line.from, insert: state.facet(indentUnit) });\n    }), { userEvent: \"input.indent\" }));\n    return true;\n};\n/**\nRemove a [unit](https://codemirror.net/6/docs/ref/#language.indentUnit) of indentation from all\nselected lines.\n*/\nconst indentLess = ({ state, dispatch }) => {\n    if (state.readOnly)\n        return false;\n    dispatch(state.update(changeBySelectedLine(state, (line, changes) => {\n        let space = /^\\s*/.exec(line.text)[0];\n        if (!space)\n            return;\n        let col = countColumn(space, state.tabSize), keep = 0;\n        let insert = indentString(state, Math.max(0, col - getIndentUnit(state)));\n        while (keep < space.length && keep < insert.length && space.charCodeAt(keep) == insert.charCodeAt(keep))\n            keep++;\n        changes.push({ from: line.from + keep, to: line.from + space.length, insert: insert.slice(keep) });\n    }), { userEvent: \"delete.dedent\" }));\n    return true;\n};\n/**\nInsert a tab character at the cursor or, if something is selected,\nuse [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) to indent the entire\nselection.\n*/\nconst insertTab = ({ state, dispatch }) => {\n    if (state.selection.ranges.some(r => !r.empty))\n        return indentMore({ state, dispatch });\n    dispatch(state.update(state.replaceSelection(\"\\t\"), { scrollIntoView: true, userEvent: \"input\" }));\n    return true;\n};\n/**\nArray of key bindings containing the Emacs-style bindings that are\navailable on macOS by default.\n\n - Ctrl-b: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)\n - Ctrl-f: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)\n - Ctrl-p: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)\n - Ctrl-n: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)\n - Ctrl-a: [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)\n - Ctrl-e: [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)\n - Ctrl-d: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)\n - Ctrl-h: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)\n - Ctrl-k: [`deleteToLineEnd`](https://codemirror.net/6/docs/ref/#commands.deleteToLineEnd)\n - Ctrl-Alt-h: [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)\n - Ctrl-o: [`splitLine`](https://codemirror.net/6/docs/ref/#commands.splitLine)\n - Ctrl-t: [`transposeChars`](https://codemirror.net/6/docs/ref/#commands.transposeChars)\n - Ctrl-v: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown)\n - Alt-v: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp)\n*/\nconst emacsStyleKeymap = [\n    { key: \"Ctrl-b\", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },\n    { key: \"Ctrl-f\", run: cursorCharRight, shift: selectCharRight },\n    { key: \"Ctrl-p\", run: cursorLineUp, shift: selectLineUp },\n    { key: \"Ctrl-n\", run: cursorLineDown, shift: selectLineDown },\n    { key: \"Ctrl-a\", run: cursorLineStart, shift: selectLineStart },\n    { key: \"Ctrl-e\", run: cursorLineEnd, shift: selectLineEnd },\n    { key: \"Ctrl-d\", run: deleteCharForward },\n    { key: \"Ctrl-h\", run: deleteCharBackward },\n    { key: \"Ctrl-k\", run: deleteToLineEnd },\n    { key: \"Ctrl-Alt-h\", run: deleteGroupBackward },\n    { key: \"Ctrl-o\", run: splitLine },\n    { key: \"Ctrl-t\", run: transposeChars },\n    { key: \"Ctrl-v\", run: cursorPageDown },\n];\n/**\nAn array of key bindings closely sticking to platform-standard or\nwidely used bindings. (This includes the bindings from\n[`emacsStyleKeymap`](https://codemirror.net/6/docs/ref/#commands.emacsStyleKeymap), with their `key`\nproperty changed to `mac`.)\n\n - ArrowLeft: [`cursorCharLeft`](https://codemirror.net/6/docs/ref/#commands.cursorCharLeft) ([`selectCharLeft`](https://codemirror.net/6/docs/ref/#commands.selectCharLeft) with Shift)\n - ArrowRight: [`cursorCharRight`](https://codemirror.net/6/docs/ref/#commands.cursorCharRight) ([`selectCharRight`](https://codemirror.net/6/docs/ref/#commands.selectCharRight) with Shift)\n - Ctrl-ArrowLeft (Alt-ArrowLeft on macOS): [`cursorGroupLeft`](https://codemirror.net/6/docs/ref/#commands.cursorGroupLeft) ([`selectGroupLeft`](https://codemirror.net/6/docs/ref/#commands.selectGroupLeft) with Shift)\n - Ctrl-ArrowRight (Alt-ArrowRight on macOS): [`cursorGroupRight`](https://codemirror.net/6/docs/ref/#commands.cursorGroupRight) ([`selectGroupRight`](https://codemirror.net/6/docs/ref/#commands.selectGroupRight) with Shift)\n - Cmd-ArrowLeft (on macOS): [`cursorLineStart`](https://codemirror.net/6/docs/ref/#commands.cursorLineStart) ([`selectLineStart`](https://codemirror.net/6/docs/ref/#commands.selectLineStart) with Shift)\n - Cmd-ArrowRight (on macOS): [`cursorLineEnd`](https://codemirror.net/6/docs/ref/#commands.cursorLineEnd) ([`selectLineEnd`](https://codemirror.net/6/docs/ref/#commands.selectLineEnd) with Shift)\n - ArrowUp: [`cursorLineUp`](https://codemirror.net/6/docs/ref/#commands.cursorLineUp) ([`selectLineUp`](https://codemirror.net/6/docs/ref/#commands.selectLineUp) with Shift)\n - ArrowDown: [`cursorLineDown`](https://codemirror.net/6/docs/ref/#commands.cursorLineDown) ([`selectLineDown`](https://codemirror.net/6/docs/ref/#commands.selectLineDown) with Shift)\n - Cmd-ArrowUp (on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)\n - Cmd-ArrowDown (on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)\n - Ctrl-ArrowUp (on macOS): [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)\n - Ctrl-ArrowDown (on macOS): [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)\n - PageUp: [`cursorPageUp`](https://codemirror.net/6/docs/ref/#commands.cursorPageUp) ([`selectPageUp`](https://codemirror.net/6/docs/ref/#commands.selectPageUp) with Shift)\n - PageDown: [`cursorPageDown`](https://codemirror.net/6/docs/ref/#commands.cursorPageDown) ([`selectPageDown`](https://codemirror.net/6/docs/ref/#commands.selectPageDown) with Shift)\n - Home: [`cursorLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryBackward) ([`selectLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryBackward) with Shift)\n - End: [`cursorLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.cursorLineBoundaryForward) ([`selectLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.selectLineBoundaryForward) with Shift)\n - Ctrl-Home (Cmd-Home on macOS): [`cursorDocStart`](https://codemirror.net/6/docs/ref/#commands.cursorDocStart) ([`selectDocStart`](https://codemirror.net/6/docs/ref/#commands.selectDocStart) with Shift)\n - Ctrl-End (Cmd-Home on macOS): [`cursorDocEnd`](https://codemirror.net/6/docs/ref/#commands.cursorDocEnd) ([`selectDocEnd`](https://codemirror.net/6/docs/ref/#commands.selectDocEnd) with Shift)\n - Enter: [`insertNewlineAndIndent`](https://codemirror.net/6/docs/ref/#commands.insertNewlineAndIndent)\n - Ctrl-a (Cmd-a on macOS): [`selectAll`](https://codemirror.net/6/docs/ref/#commands.selectAll)\n - Backspace: [`deleteCharBackward`](https://codemirror.net/6/docs/ref/#commands.deleteCharBackward)\n - Delete: [`deleteCharForward`](https://codemirror.net/6/docs/ref/#commands.deleteCharForward)\n - Ctrl-Backspace (Alt-Backspace on macOS): [`deleteGroupBackward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupBackward)\n - Ctrl-Delete (Alt-Delete on macOS): [`deleteGroupForward`](https://codemirror.net/6/docs/ref/#commands.deleteGroupForward)\n - Cmd-Backspace (macOS): [`deleteLineBoundaryBackward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryBackward).\n - Cmd-Delete (macOS): [`deleteLineBoundaryForward`](https://codemirror.net/6/docs/ref/#commands.deleteLineBoundaryForward).\n*/\nconst standardKeymap = /*@__PURE__*/[\n    { key: \"ArrowLeft\", run: cursorCharLeft, shift: selectCharLeft, preventDefault: true },\n    { key: \"Mod-ArrowLeft\", mac: \"Alt-ArrowLeft\", run: cursorGroupLeft, shift: selectGroupLeft, preventDefault: true },\n    { mac: \"Cmd-ArrowLeft\", run: cursorLineBoundaryLeft, shift: selectLineBoundaryLeft, preventDefault: true },\n    { key: \"ArrowRight\", run: cursorCharRight, shift: selectCharRight, preventDefault: true },\n    { key: \"Mod-ArrowRight\", mac: \"Alt-ArrowRight\", run: cursorGroupRight, shift: selectGroupRight, preventDefault: true },\n    { mac: \"Cmd-ArrowRight\", run: cursorLineBoundaryRight, shift: selectLineBoundaryRight, preventDefault: true },\n    { key: \"ArrowUp\", run: cursorLineUp, shift: selectLineUp, preventDefault: true },\n    { mac: \"Cmd-ArrowUp\", run: cursorDocStart, shift: selectDocStart },\n    { mac: \"Ctrl-ArrowUp\", run: cursorPageUp, shift: selectPageUp },\n    { key: \"ArrowDown\", run: cursorLineDown, shift: selectLineDown, preventDefault: true },\n    { mac: \"Cmd-ArrowDown\", run: cursorDocEnd, shift: selectDocEnd },\n    { mac: \"Ctrl-ArrowDown\", run: cursorPageDown, shift: selectPageDown },\n    { key: \"PageUp\", run: cursorPageUp, shift: selectPageUp },\n    { key: \"PageDown\", run: cursorPageDown, shift: selectPageDown },\n    { key: \"Home\", run: cursorLineBoundaryBackward, shift: selectLineBoundaryBackward, preventDefault: true },\n    { key: \"Mod-Home\", run: cursorDocStart, shift: selectDocStart },\n    { key: \"End\", run: cursorLineBoundaryForward, shift: selectLineBoundaryForward, preventDefault: true },\n    { key: \"Mod-End\", run: cursorDocEnd, shift: selectDocEnd },\n    { key: \"Enter\", run: insertNewlineAndIndent },\n    { key: \"Mod-a\", run: selectAll },\n    { key: \"Backspace\", run: deleteCharBackward, shift: deleteCharBackward },\n    { key: \"Delete\", run: deleteCharForward },\n    { key: \"Mod-Backspace\", mac: \"Alt-Backspace\", run: deleteGroupBackward },\n    { key: \"Mod-Delete\", mac: \"Alt-Delete\", run: deleteGroupForward },\n    { mac: \"Mod-Backspace\", run: deleteLineBoundaryBackward },\n    { mac: \"Mod-Delete\", run: deleteLineBoundaryForward }\n].concat(/*@__PURE__*/emacsStyleKeymap.map(b => ({ mac: b.key, run: b.run, shift: b.shift })));\n/**\nThe default keymap. Includes all bindings from\n[`standardKeymap`](https://codemirror.net/6/docs/ref/#commands.standardKeymap) plus the following:\n\n- Alt-ArrowLeft (Ctrl-ArrowLeft on macOS): [`cursorSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxLeft) ([`selectSyntaxLeft`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxLeft) with Shift)\n- Alt-ArrowRight (Ctrl-ArrowRight on macOS): [`cursorSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.cursorSyntaxRight) ([`selectSyntaxRight`](https://codemirror.net/6/docs/ref/#commands.selectSyntaxRight) with Shift)\n- Alt-ArrowUp: [`moveLineUp`](https://codemirror.net/6/docs/ref/#commands.moveLineUp)\n- Alt-ArrowDown: [`moveLineDown`](https://codemirror.net/6/docs/ref/#commands.moveLineDown)\n- Shift-Alt-ArrowUp: [`copyLineUp`](https://codemirror.net/6/docs/ref/#commands.copyLineUp)\n- Shift-Alt-ArrowDown: [`copyLineDown`](https://codemirror.net/6/docs/ref/#commands.copyLineDown)\n- Escape: [`simplifySelection`](https://codemirror.net/6/docs/ref/#commands.simplifySelection)\n- Ctrl-Enter (Cmd-Enter on macOS): [`insertBlankLine`](https://codemirror.net/6/docs/ref/#commands.insertBlankLine)\n- Alt-l (Ctrl-l on macOS): [`selectLine`](https://codemirror.net/6/docs/ref/#commands.selectLine)\n- Ctrl-i (Cmd-i on macOS): [`selectParentSyntax`](https://codemirror.net/6/docs/ref/#commands.selectParentSyntax)\n- Ctrl-[ (Cmd-[ on macOS): [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess)\n- Ctrl-] (Cmd-] on macOS): [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore)\n- Ctrl-Alt-\\\\ (Cmd-Alt-\\\\ on macOS): [`indentSelection`](https://codemirror.net/6/docs/ref/#commands.indentSelection)\n- Shift-Ctrl-k (Shift-Cmd-k on macOS): [`deleteLine`](https://codemirror.net/6/docs/ref/#commands.deleteLine)\n- Shift-Ctrl-\\\\ (Shift-Cmd-\\\\ on macOS): [`cursorMatchingBracket`](https://codemirror.net/6/docs/ref/#commands.cursorMatchingBracket)\n- Ctrl-/ (Cmd-/ on macOS): [`toggleComment`](https://codemirror.net/6/docs/ref/#commands.toggleComment).\n- Shift-Alt-a: [`toggleBlockComment`](https://codemirror.net/6/docs/ref/#commands.toggleBlockComment).\n*/\nconst defaultKeymap = /*@__PURE__*/[\n    { key: \"Alt-ArrowLeft\", mac: \"Ctrl-ArrowLeft\", run: cursorSyntaxLeft, shift: selectSyntaxLeft },\n    { key: \"Alt-ArrowRight\", mac: \"Ctrl-ArrowRight\", run: cursorSyntaxRight, shift: selectSyntaxRight },\n    { key: \"Alt-ArrowUp\", run: moveLineUp },\n    { key: \"Shift-Alt-ArrowUp\", run: copyLineUp },\n    { key: \"Alt-ArrowDown\", run: moveLineDown },\n    { key: \"Shift-Alt-ArrowDown\", run: copyLineDown },\n    { key: \"Escape\", run: simplifySelection },\n    { key: \"Mod-Enter\", run: insertBlankLine },\n    { key: \"Alt-l\", mac: \"Ctrl-l\", run: selectLine },\n    { key: \"Mod-i\", run: selectParentSyntax, preventDefault: true },\n    { key: \"Mod-[\", run: indentLess },\n    { key: \"Mod-]\", run: indentMore },\n    { key: \"Mod-Alt-\\\\\", run: indentSelection },\n    { key: \"Shift-Mod-k\", run: deleteLine },\n    { key: \"Shift-Mod-\\\\\", run: cursorMatchingBracket },\n    { key: \"Mod-/\", run: toggleComment },\n    { key: \"Alt-A\", run: toggleBlockComment }\n].concat(standardKeymap);\n/**\nA binding that binds Tab to [`indentMore`](https://codemirror.net/6/docs/ref/#commands.indentMore) and\nShift-Tab to [`indentLess`](https://codemirror.net/6/docs/ref/#commands.indentLess).\nPlease see the [Tab example](../../examples/tab/) before using\nthis.\n*/\nconst indentWithTab = { key: \"Tab\", run: indentMore, shift: indentLess };\n\nexport { blockComment, blockUncomment, copyLineDown, copyLineUp, cursorCharBackward, cursorCharForward, cursorCharLeft, cursorCharRight, cursorDocEnd, cursorDocStart, cursorGroupBackward, cursorGroupForward, cursorGroupLeft, cursorGroupRight, cursorLineBoundaryBackward, cursorLineBoundaryForward, cursorLineBoundaryLeft, cursorLineBoundaryRight, cursorLineDown, cursorLineEnd, cursorLineStart, cursorLineUp, cursorMatchingBracket, cursorPageDown, cursorPageUp, cursorSubwordBackward, cursorSubwordForward, cursorSyntaxLeft, cursorSyntaxRight, defaultKeymap, deleteCharBackward, deleteCharForward, deleteGroupBackward, deleteGroupForward, deleteLine, deleteLineBoundaryBackward, deleteLineBoundaryForward, deleteToLineEnd, deleteToLineStart, deleteTrailingWhitespace, emacsStyleKeymap, history, historyField, historyKeymap, indentLess, indentMore, indentSelection, indentWithTab, insertBlankLine, insertNewline, insertNewlineAndIndent, insertTab, invertedEffects, isolateHistory, lineComment, lineUncomment, moveLineDown, moveLineUp, redo, redoDepth, redoSelection, selectAll, selectCharBackward, selectCharForward, selectCharLeft, selectCharRight, selectDocEnd, selectDocStart, selectGroupBackward, selectGroupForward, selectGroupLeft, selectGroupRight, selectLine, selectLineBoundaryBackward, selectLineBoundaryForward, selectLineBoundaryLeft, selectLineBoundaryRight, selectLineDown, selectLineEnd, selectLineStart, selectLineUp, selectMatchingBracket, selectPageDown, selectPageUp, selectParentSyntax, selectSubwordBackward, selectSubwordForward, selectSyntaxLeft, selectSyntaxRight, simplifySelection, splitLine, standardKeymap, toggleBlockComment, toggleBlockCommentByLine, toggleComment, toggleLineComment, transposeChars, undo, undoDepth, undoSelection };\n","import { lineNumbers, highlightActiveLineGutter, highlightSpecialChars, drawSelection, dropCursor, rectangularSelection, crosshairCursor, highlightActiveLine, keymap } from '@codemirror/view';\nexport { EditorView } from '@codemirror/view';\nimport { EditorState } from '@codemirror/state';\nimport { foldGutter, indentOnInput, syntaxHighlighting, defaultHighlightStyle, bracketMatching, foldKeymap } from '@codemirror/language';\nimport { history, defaultKeymap, historyKeymap } from '@codemirror/commands';\nimport { highlightSelectionMatches, searchKeymap } from '@codemirror/search';\nimport { closeBrackets, autocompletion, closeBracketsKeymap, completionKeymap } from '@codemirror/autocomplete';\nimport { lintKeymap } from '@codemirror/lint';\n\n// (The superfluous function calls around the list of extensions work\n// around current limitations in tree-shaking software.)\n/**\nThis is an extension value that just pulls together a number of\nextensions that you might want in a basic editor. It is meant as a\nconvenient helper to quickly set up CodeMirror without installing\nand importing a lot of separate packages.\n\nSpecifically, it includes...\n\n - [the default command bindings](https://codemirror.net/6/docs/ref/#commands.defaultKeymap)\n - [line numbers](https://codemirror.net/6/docs/ref/#view.lineNumbers)\n - [special character highlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars)\n - [the undo history](https://codemirror.net/6/docs/ref/#commands.history)\n - [a fold gutter](https://codemirror.net/6/docs/ref/#language.foldGutter)\n - [custom selection drawing](https://codemirror.net/6/docs/ref/#view.drawSelection)\n - [drop cursor](https://codemirror.net/6/docs/ref/#view.dropCursor)\n - [multiple selections](https://codemirror.net/6/docs/ref/#state.EditorState^allowMultipleSelections)\n - [reindentation on input](https://codemirror.net/6/docs/ref/#language.indentOnInput)\n - [the default highlight style](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle) (as fallback)\n - [bracket matching](https://codemirror.net/6/docs/ref/#language.bracketMatching)\n - [bracket closing](https://codemirror.net/6/docs/ref/#autocomplete.closeBrackets)\n - [autocompletion](https://codemirror.net/6/docs/ref/#autocomplete.autocompletion)\n - [rectangular selection](https://codemirror.net/6/docs/ref/#view.rectangularSelection) and [crosshair cursor](https://codemirror.net/6/docs/ref/#view.crosshairCursor)\n - [active line highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLine)\n - [active line gutter highlighting](https://codemirror.net/6/docs/ref/#view.highlightActiveLineGutter)\n - [selection match highlighting](https://codemirror.net/6/docs/ref/#search.highlightSelectionMatches)\n - [search](https://codemirror.net/6/docs/ref/#search.searchKeymap)\n - [linting](https://codemirror.net/6/docs/ref/#lint.lintKeymap)\n\n(You'll probably want to add some language package to your setup\ntoo.)\n\nThis extension does not allow customization. The idea is that,\nonce you decide you want to configure your editor more precisely,\nyou take this package's source (which is just a bunch of imports\nand an array literal), copy it into your own code, and adjust it\nas desired.\n*/\nconst basicSetup = /*@__PURE__*/(() => [\n    lineNumbers(),\n    highlightActiveLineGutter(),\n    highlightSpecialChars(),\n    history(),\n    foldGutter(),\n    drawSelection(),\n    dropCursor(),\n    EditorState.allowMultipleSelections.of(true),\n    indentOnInput(),\n    syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n    bracketMatching(),\n    closeBrackets(),\n    autocompletion(),\n    rectangularSelection(),\n    crosshairCursor(),\n    highlightActiveLine(),\n    highlightSelectionMatches(),\n    keymap.of([\n        ...closeBracketsKeymap,\n        ...defaultKeymap,\n        ...searchKeymap,\n        ...historyKeymap,\n        ...foldKeymap,\n        ...completionKeymap,\n        ...lintKeymap\n    ])\n])();\n/**\nA minimal set of extensions to create a functional editor. Only\nincludes [the default keymap](https://codemirror.net/6/docs/ref/#commands.defaultKeymap), [undo\nhistory](https://codemirror.net/6/docs/ref/#commands.history), [special character\nhighlighting](https://codemirror.net/6/docs/ref/#view.highlightSpecialChars), [custom selection\ndrawing](https://codemirror.net/6/docs/ref/#view.drawSelection), and [default highlight\nstyle](https://codemirror.net/6/docs/ref/#language.defaultHighlightStyle).\n*/\nconst minimalSetup = /*@__PURE__*/(() => [\n    highlightSpecialChars(),\n    history(),\n    drawSelection(),\n    syntaxHighlighting(defaultHighlightStyle, { fallback: true }),\n    keymap.of([\n        ...defaultKeymap,\n        ...historyKeymap,\n    ])\n])();\n\nexport { basicSetup, minimalSetup };\n","import React, { RefObject, useEffect, useMemo, useRef } from 'react';\nimport { minimalSetup } from 'codemirror';\nimport { Compartment, EditorState, Prec } from '@codemirror/state';\nimport { EditorView, ViewUpdate, keymap, KeyBinding } from '@codemirror/view';\nimport { Direction, styled, useTheme } from '@mui/material';\nimport {\n  tolgeeSyntax,\n  PlaceholderPlugin,\n  TolgeeHighlight,\n  generatePlaceholdersStyle,\n} from '@tginternal/editor';\n\nimport { editorTheme } from './editorTheme';\n\nconst editorSyntaxColors = {\n  function: '#007300',\n  other: '#002bff',\n  main: '#2C3C52',\n};\n\nconst StyledEditor = styled('div')`\n  font-size: 14px;\n  display: grid;\n\n  & .cm-editor {\n    outline: none !important;\n  }\n\n  & .cm-line {\n    font-size: 15px !important;\n    font-family: ${({ theme }) => theme.typography.fontFamily} !important;\n    padding: 0px 1px !important;\n  }\n\n  & .cm-content {\n    padding: 0px !important;\n  }\n\n  & .cm-cursor {\n    border-color: ${({ theme }) => theme.palette.text.primary} !important;\n  }\n`;\n\nexport type EditorProps = {\n  value: string;\n  onChange?: (val: string) => void;\n  background?: string;\n  mode: 'placeholders' | 'syntax' | 'plain';\n  direction?: Direction;\n  autofocus?: boolean;\n  minHeight?: number | string;\n  onBlur?: () => void;\n  onFocus?: () => void;\n  shortcuts?: KeyBinding[];\n  autoScrollIntoView?: boolean;\n  locale?: string;\n  editorRef?: any;\n  examplePluralNum?: number;\n  nested?: boolean;\n  disabled?: boolean;\n};\n\nfunction useRefGroup<T>(value: T): RefObject<T> {\n  const refObject = useRef(value);\n  refObject.current = value;\n  return refObject;\n}\n\nexport const Editor: React.FC<EditorProps> = ({\n  value,\n  onChange,\n  onFocus,\n  onBlur,\n  mode,\n  direction,\n  autofocus,\n  shortcuts,\n  minHeight,\n  locale,\n  editorRef,\n  examplePluralNum,\n  nested,\n  disabled,\n}) => {\n  const ref = useRef<HTMLDivElement>(null);\n  const editor = useRef<EditorView>();\n  const placeholders = useRef<Compartment>(new Compartment());\n  const isolates = useRef<Compartment>(new Compartment());\n  const disabledCompartment = useRef<Compartment>(new Compartment());\n  const keyBindings = useRef(shortcuts);\n  const theme = useTheme();\n  const callbacksRef = useRefGroup({\n    onChange,\n    onFocus,\n    onBlur,\n  });\n  const languageCompartment = useRef<Compartment>(new Compartment());\n\n  const StyledEditorWrapper = useMemo(() => {\n    return generatePlaceholdersStyle({\n      styled,\n\n      colors: editorTheme,\n      component: StyledEditor,\n    });\n  }, []);\n\n  keyBindings.current = shortcuts;\n\n  useEffect(() => {\n    const shortcutsUptoDate = shortcuts?.map((value, i) => {\n      return {\n        ...value,\n        run: (val: EditorView) => keyBindings.current?.[i].run?.(val) ?? false,\n      };\n    });\n\n    const instance = new EditorView({\n      parent: ref.current!,\n      state: EditorState.create({\n        doc: value,\n        extensions: [\n          minimalSetup,\n          Prec.highest(keymap.of(shortcutsUptoDate ?? [])),\n          EditorView.lineWrapping,\n          EditorView.updateListener.of((v: ViewUpdate) => {\n            if (v.focusChanged) {\n              if (v.view.hasFocus) {\n                callbacksRef.current?.onFocus?.();\n              } else {\n                callbacksRef.current?.onBlur?.();\n              }\n            }\n            if (v.docChanged) {\n              callbacksRef.current?.onChange?.(v.state.doc.toString());\n            }\n          }),\n          EditorView.contentAttributes.of({\n            spellcheck: 'true',\n            lang: locale || '',\n          }),\n          TolgeeHighlight(editorSyntaxColors),\n          languageCompartment.current.of([]),\n          placeholders.current.of([]),\n          isolates.current.of([]),\n          disabledCompartment.current.of([]),\n        ],\n      }),\n    });\n\n    if (autofocus) {\n      instance.focus();\n    }\n\n    editor.current = instance;\n  }, [theme.palette.mode]);\n\n  useEffect(() => {\n    const placholderPlugins =\n      mode === 'placeholders'\n        ? [\n            PlaceholderPlugin({\n              examplePluralNum,\n              nested: Boolean(nested),\n              tooltips: true,\n            }),\n          ]\n        : [];\n    const syntaxPlugins =\n      mode === 'plain' ? [] : [tolgeeSyntax(Boolean(nested))];\n    editor.current?.dispatch({\n      selection: editor.current.state.selection,\n      effects: [\n        placeholders.current?.reconfigure(placholderPlugins),\n        languageCompartment.current.reconfigure(syntaxPlugins),\n      ],\n    });\n  }, [mode, nested, examplePluralNum]);\n\n  useEffect(() => {\n    const state = editor.current?.state;\n    const editorValue = state?.doc.toString();\n    if (state && editorValue !== value) {\n      const transaction = state.update({\n        changes: { from: 0, to: state.doc.length, insert: value || '' },\n      });\n      editor.current?.update([transaction]);\n    }\n  }, [value]);\n\n  useEffect(() => {\n    // set cursor to the end of document\n    const length = editor.current!.state.doc.length;\n    editor.current!.dispatch({ selection: { anchor: length } });\n\n    return () => {\n      editor.current!.destroy();\n    };\n  }, []);\n\n  useEffect(() => {\n    editor.current?.dispatch({\n      effects: disabledCompartment.current.reconfigure(\n        EditorState.readOnly.of(Boolean(disabled))\n      ),\n    });\n  }, [disabled]);\n\n  useEffect(() => {\n    if (editorRef) {\n      // @ts-ignore\n      editorRef.current = editor.current;\n    }\n  });\n\n  return (\n    <StyledEditorWrapper\n      data-cy=\"global-editor\"\n      ref={ref}\n      disabled={disabled}\n      dir={direction}\n      style={{\n        minHeight,\n        direction,\n      }}\n    />\n  );\n};\n","import { EditorView } from 'codemirror';\nimport { TolgeeFormat } from '@tginternal/editor';\nimport { getLanguageDirection } from '@tginternal/editor';\nimport { RefObject } from 'react';\n\nimport { TranslationPlurals } from './TranslationPlurals';\nimport { EditorWrapper } from './EditorWrapper';\nimport { Editor, EditorProps } from './Editor';\nimport { useDialogContext } from '../dialogContext';\n\ntype Props = {\n  locale: string;\n  value: TolgeeFormat;\n  onChange?: (value: TolgeeFormat) => void;\n  activeVariant?: string;\n  onActiveVariantChange?: (variant: string) => void;\n  editorProps?: Partial<EditorProps>;\n  autofocus?: boolean;\n  activeEditorRef?: RefObject<EditorView | null>;\n  mode: 'placeholders' | 'syntax' | 'plain';\n};\n\nexport const PluralEditor = ({\n  locale,\n  value,\n  onChange,\n  activeVariant,\n  onActiveVariantChange,\n  autofocus,\n  activeEditorRef,\n  editorProps,\n  mode,\n}: Props) => {\n  function handleChange(text: string, variant: string) {\n    onChange?.({ ...value, variants: { ...value.variants, [variant]: text } });\n  }\n\n  const icuPlaceholders = useDialogContext((c) => c.icuPlaceholders);\n\n  const editorMode = icuPlaceholders ? mode : 'plain';\n\n  return (\n    <TranslationPlurals\n      value={value}\n      locale={locale}\n      showEmpty\n      activeVariant={activeVariant}\n      variantPaddingTop=\"8px\"\n      render={({ content, variant, exampleValue }) => {\n        const variantOrOther = variant || 'other';\n        return (\n          <EditorWrapper data-cy=\"translation-editor\" data-cy-variant={variant}>\n            <Editor\n              mode={editorMode}\n              value={content}\n              onChange={(value) => handleChange(value, variantOrOther)}\n              onFocus={() => onActiveVariantChange?.(variantOrOther)}\n              direction={getLanguageDirection(locale)}\n              autofocus={variantOrOther === activeVariant ? autofocus : false}\n              minHeight={value.parameter ? 'unset' : '50px'}\n              locale={locale}\n              editorRef={\n                variantOrOther === activeVariant ? activeEditorRef : undefined\n              }\n              examplePluralNum={exampleValue}\n              nested={Boolean(variant)}\n              {...editorProps}\n            />\n          </EditorWrapper>\n        );\n      }}\n    />\n  );\n};\n","import { styled } from '@mui/material';\nimport { HTMLFactory } from 'react';\n\nexport const ScFieldTitle = styled('div')`\n  display: flex;\n  margin-top: 16px;\n  margin-bottom: 4px;\n  font-size: 16px;\n  color: rgba(0, 0, 0, 0.65);\n  color: ${({ theme }) => theme.palette.text.secondary};\n  justify-content: space-between;\n` as unknown as HTMLFactory<HTMLDivElement>;\n","import { TolgeeFormat } from '@tginternal/editor';\n\nexport function isTranslationEmpty(\n  value: TolgeeFormat | undefined,\n  isPlural: boolean\n) {\n  if (!value) {\n    return true;\n  }\n  if (isPlural) {\n    return !Object.values(value.variants).join('');\n  } else {\n    return !value.variants.other;\n  }\n}\n","import { useRef, useState } from 'react';\nimport clsx from 'clsx';\nimport { styled } from '@mui/material';\nimport { TolgeeFormat } from '@tginternal/editor';\n\nimport { components } from '../client/apiSchema.generated';\nimport { TRANSLATION_STATES } from './State/translationStates';\n\nimport { PluralEditor } from './editor/PluralEditor';\nimport { ControlsEditorSmall } from './editor/ControlsEditorSmall';\nimport { ScFieldTitle } from '../common/FieldTitle';\nimport { useDialogContext } from './dialogContext';\nimport { isTranslationEmpty } from '../tools/isTranslationEmpty';\nimport { Tooltip } from '../common/Tooltip';\n\ntype State = components['schemas']['TranslationModel']['state'];\ntype LanguageModel = components['schemas']['LanguageModel'];\n\nconst StyledContainer = styled('div')`\n  display: grid;\n  grid-template-columns: auto 1fr;\n  gap: 12px;\n  position: relative;\n\n  &.disabled {\n    opacity: 0.5;\n  }\n\n  &.disabled .cm-cursor {\n    display: none !important;\n  }\n\n  &.notPlural {\n    grid-template-columns: 1fr;\n  }\n`;\n\nconst StyledStateIndicator = styled('div')`\n  margin-top: 4px;\n  width: 5px;\n\n  &.notPlural {\n    position: absolute;\n    top: 1px;\n    left: 1px;\n    bottom: 1px;\n    border-radius: 3px 0px 0px 3px;\n  }\n`;\n\ntype Props = {\n  disabled?: boolean;\n  language: LanguageModel | undefined;\n  value: TolgeeFormat | undefined;\n  onChange: (val: TolgeeFormat) => void;\n  state?: State;\n  onStateChange: (value: State) => void;\n  stateChangePermitted?: boolean;\n};\n\nexport const TranslationTextField = ({\n  disabled,\n  language,\n  value,\n  state,\n  stateChangePermitted,\n  onChange,\n  onStateChange,\n}: Props) => {\n  const textFieldRef = useRef<HTMLDivElement>(null);\n  const parameter = useDialogContext((c) => c.pluralArgName);\n  const icuPlaceholders = useDialogContext((c) => c.icuPlaceholders);\n  const notPlural = !parameter;\n  const normalized = state === 'UNTRANSLATED' ? undefined : state;\n  const fallbackedState = isTranslationEmpty(value, !notPlural)\n    ? 'UNTRANSLATED'\n    : normalized ?? 'TRANSLATED';\n  const [mode, setMode] = useState<'placeholders' | 'syntax'>('placeholders');\n  return (\n    <>\n      <ScFieldTitle>\n        <div>{language?.name || language?.tag}</div>\n      </ScFieldTitle>\n      <StyledContainer\n        className={clsx({ disabled, notPlural })}\n        data-cy=\"translation-field\"\n        data-cy-language={language?.tag}\n      >\n        {/* <Tooltip title={TRANSLATION_STATES[fallbackedState]?.name}>\n          <StyledStateIndicator\n            className={clsx({ notPlural })}\n            style={{\n              background: TRANSLATION_STATES[fallbackedState]?.color,\n            }}\n            onClick={() => {\n              textFieldRef.current?.focus();\n            }}\n          />\n        </Tooltip> */}\n        <PluralEditor\n          mode={mode}\n          value={value ? { ...value, parameter } : { variants: { other: '' } }}\n          onChange={onChange}\n          locale={language?.tag || 'en'}\n          editorProps={{ direction: 'ltr', disabled }}\n        />\n      </StyledContainer>\n    </>\n  );\n};\n","import React, { FunctionComponent } from 'react';\nimport { styled } from '@mui/material';\nimport { keyframes } from '@mui/styled-engine';\n\nimport { useDialogContext, useDialogActions } from './dialogContext';\nimport { getPreferredLanguages } from './dialogContext/tools';\nimport { TranslationTextField } from './TranslationTextField';\n\nconst inputLoading = keyframes`\n  0%   { background-position: 0%; }\n  100% { background-position: 100%; }\n`;\n\nconst LoadingTextArea = styled('div')`\n  margin-top: 10px;\n  padding: 5px;\n  border: 1px solid #ccc;\n  width: 100%;\n  border-radius: 5px;\n  font-style: inherit;\n  font-family: inherit;\n  box-sizing: border-box;\n  display: block;\n  height: 42px;\n  background: linear-gradient(\n    90deg,\n    rgba(0, 0, 0, 0),\n    rgba(0, 0, 0, 0),\n    rgba(0, 0, 0, 0.1),\n    rgba(0, 0, 0, 0),\n    rgba(0, 0, 0, 0)\n  );\n  background-size: 500% 500%;\n  animation: ${inputLoading} 1.5s linear infinite alternate;\n`;\n\nexport const TranslationFields: FunctionComponent = () => {\n  const { onInputChange, onStateChange } = useDialogActions();\n\n  const permissions = useDialogContext((c) => c.permissions);\n  const selectedLanguages = useDialogContext((c) => c.selectedLanguages);\n  const langFields = selectedLanguages.length\n    ? selectedLanguages\n    : getPreferredLanguages();\n  const availableLanguages = useDialogContext((c) => c.availableLanguages);\n  const translationsForm = useDialogContext((c) => c.translationsForm);\n  const formDisabled = useDialogContext((c) => c.formDisabled);\n  const loading = useDialogContext((c) => c.loading);\n\n  const keyData = useDialogContext((c) => c.keyData);\n\n  const Loading = () => (\n    <>\n      {langFields.map((lang) => (\n        <LoadingTextArea key={lang} />\n      ))}\n    </>\n  );\n\n  return (\n    <>\n      {loading ? (\n        <Loading />\n      ) : (\n        selectedLanguages.map((key) => {\n          const lang = availableLanguages?.find((l) => l.tag === key);\n\n          const editPermitted = permissions.canEditTranslation(key);\n          const stateChangePermitted = permissions.canEditState(key);\n\n          const translation = keyData?.translations[key];\n          const formValue = translationsForm[key];\n\n          return (\n            <React.Fragment key={key}>\n              <TranslationTextField\n                disabled={\n                  formDisabled ||\n                  !editPermitted ||\n                  translation?.state === 'DISABLED'\n                }\n                language={lang}\n                value={formValue?.value}\n                onChange={(value) => onInputChange(key, value)}\n                onStateChange={(value) => onStateChange(key, value)}\n                state={formValue?.state}\n                stateChangePermitted={stateChangePermitted}\n              />\n            </React.Fragment>\n          );\n        })\n      )}\n    </>\n  );\n};\n","import React from 'react';\nimport {\n  Select,\n  selectClasses,\n  MenuItem,\n  Checkbox,\n  ListItemText,\n  OutlinedInput,\n  FormControl,\n  styled,\n} from '@mui/material';\n\nimport { DEVTOOLS_Z_INDEX } from '../../constants';\nimport { useDialogContext, useDialogActions } from './dialogContext';\n\nconst StyledFormControl = styled(FormControl)`\n  min-width: 200px;\n`;\n\nconst Drowpdown = () => (\n  <div style={{ position: 'absolute', right: '12px' }}>\n    <svg\n      width=\"10\"\n      height=\"7\"\n      viewBox=\"0 0 10 7\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n    >\n      <path\n        d=\"M5.00019 6.50019C4.86858 6.50095 4.73812 6.47572 4.61628 6.42596C4.49444 6.37619 4.38363 6.30287 4.29019 6.21019L0.290185 2.21019C0.101882 2.02188 -0.00390625 1.76649 -0.00390625 1.50019C-0.00390625 1.23388 0.101882 0.978489 0.290185 0.790185C0.478489 0.601881 0.733884 0.496094 1.00019 0.496094C1.26649 0.496094 1.52188 0.601881 1.71019 0.790185L5.00019 4.09019L8.29019 0.790185C8.47849 0.601881 8.73388 0.496094 9.00019 0.496094C9.26649 0.496094 9.52188 0.601881 9.71018 0.790185C9.89849 0.978489 10.0043 1.23388 10.0043 1.50019C10.0043 1.76649 9.89849 2.02188 9.71018 2.21019L5.71019 6.21019C5.61675 6.30287 5.50593 6.37619 5.38409 6.42596C5.26225 6.47572 5.13179 6.50095 5.00019 6.50019Z\"\n        fill=\"black\"\n        fill-opacity=\"0.65\"\n      />\n    </svg>\n  </div>\n);\nconst StyledSelect = styled(Select<string[]>)`\n  & .${selectClasses.icon} {\n    width: 24px;\n    height: 24px;\n    top: calc(50% - 12px);\n  }\n`;\n\nexport const LanguageSelect: React.FC = () => {\n  const { onSelectedLanguagesChange } = useDialogActions();\n  const availableLanguages = useDialogContext((c) => c.availableLanguages);\n  const selectedLanguages = useDialogContext((c) => c.selectedLanguages);\n\n  const options = availableLanguages\n    ? [...availableLanguages].map((lang) => ({\n        label: lang.name,\n        value: lang.tag,\n      }))\n    : [];\n\n  const selected = options.filter((o) => selectedLanguages.includes(o.value!));\n  const onChange = (value: string | string[]) => {\n    const languages = typeof value === 'string' ? value.split(',') : value;\n    onSelectedLanguagesChange(languages);\n  };\n\n  return (\n    <>\n      {availableLanguages && (\n        <StyledFormControl\n          variant=\"outlined\"\n          size=\"small\"\n          style={{ maxWidth: 250 }}\n        >\n          <StyledSelect\n            multiple\n            value={selected.map((o) => o.value)}\n            IconComponent={Drowpdown}\n            onChange={(e) => onChange(e.target.value as string | string[])}\n            input={<OutlinedInput />}\n            sx={{ borderRadius: '8px' }}\n            renderValue={(selected) => selected.join(', ')}\n            MenuProps={{\n              style: { zIndex: DEVTOOLS_Z_INDEX },\n              disablePortal: true,\n            }}\n          >\n            {options.map((option) => (\n              <MenuItem key={option.value} value={option.value} dense>\n                <Checkbox\n                  size=\"small\"\n                  checked={Boolean(\n                    selected.find((o) => o.value === option.value)\n                  )}\n                />\n                <ListItemText>{option.label}</ListItemText>\n              </MenuItem>\n            ))}\n          </StyledSelect>\n        </StyledFormControl>\n      )}\n    </>\n  );\n};\n","import React from 'react';\n\nimport { styled, Button, ButtonProps, CircularProgress } from '@mui/material';\n\nconst StyledButton = styled(Button)`\n  position: 'relative';\n`;\n\nconst LoadingWrapper = styled('div')`\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  right: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n`;\n\ntype Props = ButtonProps & {\n  loading?: boolean;\n};\n\nexport const LoadingButton: React.FC<Props> = ({\n  children,\n  loading,\n  disabled,\n  ...props\n}) => {\n  const isDisabled = loading || disabled;\n\n  return (\n    <StyledButton {...props} disabled={isDisabled}>\n      {loading && (\n        <LoadingWrapper>\n          <CircularProgress size={25} />\n        </LoadingWrapper>\n      )}\n      {children}\n    </StyledButton>\n  );\n};\n","import React from 'react';\nimport {\n  FormControl,\n  MenuItem,\n  OutlinedInput,\n  Select,\n  ListItemText,\n} from '@mui/material';\n\nimport { DEVTOOLS_Z_INDEX } from '../../constants';\nimport { ScFieldTitle } from '../../ui/common/FieldTitle';\n\nconst getNsName = (ns: string) => {\n  if (!ns) {\n    return '<default>';\n  }\n  return ns;\n};\n\ntype Props = {\n  options: string[];\n  value: string;\n  onChange: (value: string) => void;\n};\n\nexport const NsSelect: React.FC<Props> = ({ onChange, options, value }) => {\n  const namespaces = options;\n  const namespaceOne = namespaces.length === 1;\n  const namespaceEmpty = namespaceOne && namespaces[0] === '';\n\n  return (\n    <>\n      {!namespaceEmpty && (\n        <>\n          <ScFieldTitle>Namespace</ScFieldTitle>\n          {namespaceOne ? (\n            getNsName(namespaces[0])\n          ) : (\n            <FormControl\n              variant=\"outlined\"\n              size=\"small\"\n              style={{ maxWidth: 250 }}\n            >\n              <Select\n                displayEmpty\n                value={value}\n                onChange={(e) => onChange(e.target.value)}\n                input={<OutlinedInput />}\n                renderValue={(value) => getNsName(value)}\n                MenuProps={{\n                  style: { zIndex: DEVTOOLS_Z_INDEX },\n                  disablePortal: true,\n                }}\n              >\n                {namespaces.map((ns) => (\n                  <MenuItem key={ns} value={ns} dense>\n                    <ListItemText>{getNsName(ns)}</ListItemText>\n                  </MenuItem>\n                ))}\n              </Select>\n            </FormControl>\n          )}\n        </>\n      )}\n    </>\n  );\n};\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n  d: \"M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3z\"\n}), 'OpenInNew');","import React from 'react';\nimport { styled } from '@mui/material';\nimport clsx from 'clsx';\n\nconst StyledWrapper = styled('div')`\n  display: flex;\n  outline: 0;\n  cursor: default;\n  padding: 4px 4px;\n  border-radius: 12px;\n  align-items: center;\n  height: 24px;\n  font-size: 14px;\n  background: ${({ theme }) => theme.palette.grey[200]};\n  border: 1px solid transparent;\n  max-width: 100%;\n  box-sizing: border-box;\n\n  & input {\n    color: ${({ theme }) => theme.palette.text.primary};\n  }\n\n  &.preview {\n    background: ${({ theme }) => theme.palette.background.default};\n    border: 1px solid ${({ theme }) => theme.palette.text.secondary};\n    color: ${({ theme }) => theme.palette.text.secondary};\n  }\n\n  &.hover {\n    &:focus-within,\n    &:hover {\n      border: 1px solid ${({ theme }) => theme.palette.primary.main};\n      color: ${({ theme }) => theme.palette.primary.main};\n    }\n  }\n\n  &.clickable {\n    cursor: pointer;\n  }\n`;\n\ntype Props = {\n  role?: 'input' | 'add';\n  onClick?: () => void;\n  className?: string;\n};\n\nexport const Wrapper = ({\n  children,\n  role,\n  onClick,\n  className,\n}: React.PropsWithChildren<Props>) => {\n  switch (role) {\n    case 'add':\n      return (\n        <StyledWrapper\n          as=\"button\"\n          data-cy=\"translations-tag-add\"\n          className={clsx('preview', 'clickable', 'hover', className)}\n          onClick={onClick}\n        >\n          {children}\n        </StyledWrapper>\n      );\n    case 'input':\n      return (\n        <StyledWrapper\n          data-cy=\"translations-tag-input\"\n          className={clsx('preview', 'hover', className)}\n          onClick={onClick}\n        >\n          {children}\n        </StyledWrapper>\n      );\n    default:\n      return (\n        <StyledWrapper\n          data-cy=\"translations-tag\"\n          className={clsx({\n            hover: Boolean(onClick),\n            clickable: Boolean(onClick),\n            [className || '']: true,\n          })}\n          onClick={onClick}\n        >\n          {children}\n        </StyledWrapper>\n      );\n  }\n};\n","import React from 'react';\nimport { styled } from '@mui/material';\nimport { Close } from '@mui/icons-material';\n\nimport { Wrapper } from './Wrapper';\nimport clsx from 'clsx';\n\ntype Props = {\n  name: string;\n  onDelete?: React.MouseEventHandler<SVGElement>;\n  onClick?: (name: string) => void;\n  selected?: boolean;\n};\n\nconst StyledTag = styled('div')`\n  margin-left: 6px;\n  margin-right: 6px;\n  margin-top: -1px;\n  flex-shrink: 1;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n`;\n\nconst StyledCloseIcon = styled(Close)`\n  margin-left: -6px;\n  padding: 1px;\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  color: white;\n`;\n\nconst StyledWrapper = styled(Wrapper)`\n  margin: 2px;\n\n  background: #8f005d;\n  color: white;\n  &.selected {\n    border-width: 1px;\n  }\n`;\n\nexport const Tag: React.FC<Props> = ({ name, onDelete, onClick, selected }) => {\n  return (\n    <StyledWrapper\n      onClick={onClick ? () => onClick?.(name) : undefined}\n      className={clsx({ selected })}\n    >\n      <StyledTag>{name}</StyledTag>\n      {onDelete && (\n        <StyledCloseIcon\n          role=\"button\"\n          data-cy=\"translations-tag-close\"\n          onClick={onDelete}\n        />\n      )}\n    </StyledWrapper>\n  );\n};\n","import{useRef as r,useEffect as n,useMemo as t,useReducer as e,useCallback as u}from\"react\";function c(e,u,c){var i=this,a=r(null),o=r(0),f=r(null),l=r([]),v=r(),m=r(),d=r(e),g=r(!0);d.current=e;var p=\"undefined\"!=typeof window,w=!u&&0!==u&&p;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");u=+u||0;var s=!!(c=c||{}).leading,x=!(\"trailing\"in c)||!!c.trailing,h=\"maxWait\"in c,y=\"debounceOnServer\"in c&&!!c.debounceOnServer,F=h?Math.max(+c.maxWait||0,u):null;n(function(){return g.current=!0,function(){g.current=!1}},[]);var A=t(function(){var r=function(r){var n=l.current,t=v.current;return l.current=v.current=null,o.current=r,m.current=d.current.apply(t,n)},n=function(r,n){w&&cancelAnimationFrame(f.current),f.current=w?requestAnimationFrame(r):setTimeout(r,n)},t=function(r){if(!g.current)return!1;var n=r-a.current;return!a.current||n>=u||n<0||h&&r-o.current>=F},e=function(n){return f.current=null,x&&l.current?r(n):(l.current=v.current=null,m.current)},c=function r(){var c=Date.now();if(t(c))return e(c);if(g.current){var i=u-(c-a.current),f=h?Math.min(i,F-(c-o.current)):i;n(r,f)}},A=function(){if(p||y){var e=Date.now(),d=t(e);if(l.current=[].slice.call(arguments),v.current=i,a.current=e,d){if(!f.current&&g.current)return o.current=a.current,n(c,u),s?r(a.current):m.current;if(h)return n(c,u),r(a.current)}return f.current||n(c,u),m.current}};return A.cancel=function(){f.current&&(w?cancelAnimationFrame(f.current):clearTimeout(f.current)),o.current=0,l.current=a.current=v.current=f.current=null},A.isPending=function(){return!!f.current},A.flush=function(){return f.current?e(Date.now()):m.current},A},[s,h,u,F,x,w,p,y]);return A}function i(r,n){return r===n}function a(r,n){return n}function o(n,t,o){var f=o&&o.equalityFn||i,l=e(a,n),v=l[0],m=l[1],d=c(u(function(r){return m(r)},[m]),t,o),g=r(n);return f(g.current,n)||(d(n),g.current=n),[v,d]}function f(r,n,t){var e=void 0===t?{}:t,u=e.leading,i=e.trailing;return c(r,n,{maxWait:n,leading:void 0===u||u,trailing:void 0===i||i})}export{o as useDebounce,c as useDebouncedCallback,f as useThrottledCallback};\n//# sourceMappingURL=index.module.js.map\n","import React from 'react';\nimport { styled } from '@mui/material';\nimport { Close } from '@mui/icons-material';\n\nconst StyledCloseIcon = styled(Close)`\n  font-size: 20px;\n  cursor: pointer;\n  padding: 2px;\n`;\n\ntype Props = {\n  onClick?: React.MouseEventHandler<SVGElement>;\n};\n\nexport const CloseButton: React.FC<Props> = ({ onClick }) => {\n  return (\n    <StyledCloseIcon\n      role=\"button\"\n      data-cy=\"translations-tag-close\"\n      onClick={onClick}\n    />\n  );\n};\n","import React from 'react';\nimport { Popper } from '@mui/material';\n\ntype Props = React.ComponentProps<typeof Popper>;\n\nexport const CustomPopper: React.FC<Props> = ({ children, ...props }) => {\n  return (\n    // override width, so it can be wider than ref element\n    <Popper\n      {...props}\n      disablePortal\n      style={{ minWidth: props.style?.width }}\n      placement=\"bottom-start\"\n      modifiers={[\n        {\n          name: 'offset',\n          options: {\n            offset: () => {\n              // offset from top\n              return [0, 3];\n            },\n          },\n        },\n      ]}\n    >\n      {children}\n    </Popper>\n  );\n};\n","import React, { useState } from 'react';\nimport { useDebounce } from 'use-debounce';\nimport { Autocomplete, Input, MenuItem, styled } from '@mui/material';\n\nimport { Wrapper } from './Wrapper';\nimport { CloseButton } from './CloseButton';\nimport { CustomPopper } from './CustomPopper';\nimport { useApiQuery } from '../../client/useQueryApi';\n\nconst StyledWrapper = styled(Wrapper)`\n  height: 48px;\n  border-color: rgba(0, 0, 0, 0.35) !important;\n  & .autocomplete {\n    display: flex;\n    height: 100%;\n    align-items: center;\n    width: 100%;\n    overflow: hidden;\n  }\n\n  & .MuiAutocomplete-noOptions,\n  & .MuiAutocomplete-loading,\n  & .MuiAutocomplete-option {\n    padding: 6px 16px;\n  }\n`;\n\nconst StyledInput = styled('input')`\n  display: flex;\n  border: 0px;\n  background: transparent;\n\n  padding: 0px 4px;\n  outline: 0px;\n  min-width: 0px;\n  width: 100%;\n  font-size: 15px;\n  flex-shrink: 1;\n`;\n\nconst StyledOption = styled('span')`\n  white-space: nowrap;\n  overflow: hidden;\n`;\n\ntype Props = {\n  onClose?: () => void;\n  onAdd: (name: string) => void;\n  className?: string;\n  autoFocus?: boolean;\n  existing?: string[];\n  placeholder?: string;\n};\n\nexport const TagInput: React.FC<Props> = ({\n  onClose,\n  onAdd,\n  className,\n  autoFocus,\n  existing,\n  placeholder,\n}) => {\n  const [value, setValue] = useState('');\n  const [search] = useDebounce(value, 500);\n\n  const tags = useApiQuery({\n    url: '/v2/projects/tags',\n    method: 'get',\n    query: {\n      search,\n    },\n    options: {\n      cacheTime: 0,\n      keepPreviousData: true,\n    },\n  });\n\n  const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'Escape') {\n      onClose?.();\n    }\n  };\n\n  const options = (tags.data?._embedded?.tags?.map(({ name }) => name) || [])\n    .filter((value, index, self) => {\n      return self.indexOf(value) === index;\n    })\n    .map((tag) => ({\n      label: tag,\n      value: tag,\n      isAdd: false,\n    }));\n\n  return (\n    <StyledWrapper role=\"input\" className={className}>\n      <span style={{ position: 'relative' }}>\n        <Autocomplete\n          className=\"autocomplete\"\n          loading={tags.isFetching}\n          autoHighlight\n          sx={{ paddingLeft: '24px' }}\n          noOptionsText=\"Nothing found\"\n          PopperComponent={CustomPopper}\n          options={options}\n          filterOptions={(options) => {\n            const filtered = options.filter((o) =>\n              o.value.toLowerCase().startsWith(search.toLowerCase())\n            );\n            if (\n              search !== '' &&\n              !options.find((item) => item.value === search)\n            ) {\n              filtered.push({\n                value: search,\n                label: '',\n                isAdd: true,\n              });\n            }\n            return filtered.filter((o) => !existing?.includes(o.value));\n          }}\n          inputValue={value}\n          onInputChange={(_, value) => {\n            setValue(value);\n          }}\n          onChange={(_, newValue) => {\n            if (typeof newValue !== 'string') {\n              onAdd(newValue.value);\n            }\n          }}\n          getOptionLabel={() => ''}\n          isOptionEqualToValue={() => true}\n          renderOption={(attrs, option) => {\n            return (\n              <MenuItem {...attrs}>\n                <StyledOption data-cy=\"tag-autocomplete-option\">\n                  {option.isAdd ? `Add \"${search}\"` : option.label}\n                </StyledOption>\n              </MenuItem>\n            );\n          }}\n          ListboxProps={{ style: { padding: 0 } }}\n          renderInput={(params) => (\n            <div className=\"autocomplete\" ref={params.InputProps.ref}>\n              <StyledInput\n                {...params.inputProps}\n                data-cy=\"tag-autocomplete-input\"\n                size={0}\n                onKeyUp={handleKeyUp}\n                autoFocus={autoFocus}\n                placeholder={placeholder}\n              />\n              {onClose && <CloseButton onClick={onClose} />}\n            </div>\n          )}\n        />\n        <span style={{ position: 'absolute', paddingLeft: '4px', top: '0' }}>\n          <svg\n            width=\"19\"\n            height=\"20\"\n            viewBox=\"0 0 19 20\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M7.00403 0.500007C8.30231 0.501395 9.57464 0.863814 10.6788 1.54676C11.7829 2.2297 12.6754 3.20625 13.2564 4.36727C13.8374 5.52829 14.0841 6.82801 13.9689 8.12118C13.8537 9.41434 13.3811 10.65 12.604 11.69L18.714 17.79C18.8078 17.883 18.8822 17.9936 18.9329 18.1154C18.9837 18.2373 19.0098 18.368 19.0098 18.5C19.0098 18.632 18.9837 18.7627 18.9329 18.8846C18.8822 19.0064 18.8078 19.117 18.714 19.21C18.6211 19.3037 18.5105 19.3781 18.3886 19.4289C18.2667 19.4797 18.136 19.5058 18.004 19.5058C17.872 19.5058 17.7413 19.4797 17.6195 19.4289C17.4976 19.3781 17.387 19.3037 17.294 19.21L11.194 13.1C10.3064 13.7658 9.27314 14.2109 8.17959 14.3989C7.08603 14.5868 5.96347 14.5121 4.90447 14.1808C3.84548 13.8496 2.88039 13.2714 2.0888 12.4939C1.29721 11.7163 0.701805 10.7617 0.351675 9.70885C0.00154495 8.65595 -0.0932713 7.53491 0.0750427 6.43816C0.243357 5.34142 0.669979 4.3004 1.31973 3.40095C1.96948 2.5015 2.82374 1.7694 3.81206 1.26502C4.80038 0.760635 5.89444 0.498424 7.00403 0.500007ZM7.00403 12.5C7.99294 12.5 8.95963 12.2068 9.78188 11.6574C10.6041 11.1079 11.245 10.3271 11.6234 9.41342C12.0019 8.49979 12.1009 7.49446 11.908 6.52456C11.715 5.55465 11.2388 4.66374 10.5396 3.96447C9.8403 3.26521 8.94938 2.78901 7.97948 2.59608C7.00957 2.40315 6.00424 2.50217 5.09061 2.88061C4.17698 3.25905 3.39609 3.89991 2.84668 4.72216C2.29727 5.5444 2.00403 6.5111 2.00403 7.50001C2.00403 8.15662 2.13336 8.8068 2.38463 9.41342C2.6359 10.0201 3.0042 10.5712 3.46849 11.0355C3.93279 11.4998 4.48398 11.8681 5.09061 12.1194C5.69724 12.3707 6.34742 12.5 7.00403 12.5Z\"\n              fill=\"#B5B5B5\"\n            />\n          </svg>\n        </span>\n      </span>\n    </StyledWrapper>\n  );\n};\n","import { Box, styled } from '@mui/material';\n\nimport { Tag } from './Tag';\nimport { TagInput } from './TagInput';\nimport { useDialogActions, useDialogContext } from '../dialogContext';\n\nconst StyledTags = styled('div')`\n  flex-wrap: wrap;\n  align-items: flex-start;\n  position: relative;\n\n  & > * {\n    margin: 0px 3px 3px 0px;\n  }\n`;\n\nexport function Tags() {\n  const tags = useDialogContext((c) => c.tags);\n  const canEditTags = useDialogContext((c) => c.permissions.canEditTags);\n  const { setTags } = useDialogActions();\n\n  return (\n    <StyledTags>\n      <Box display=\"flex\" flexWrap=\"wrap\" padding=\"8px 0\">\n        {tags.map((tag) => {\n          return (\n            <Tag\n              key={tag}\n              name={tag}\n              onDelete={\n                canEditTags\n                  ? () => setTags((tags) => tags.filter((t) => t !== tag))\n                  : undefined\n              }\n            />\n          );\n        })}\n      </Box>\n\n      {canEditTags && (\n        <TagInput\n          existing={tags}\n          onAdd={(name) =>\n            !tags.includes(name) && setTags((tags) => [...tags, name])\n          }\n          placeholder=\"Add tags\"\n        />\n      )}\n      {!tags.length && !canEditTags && 'No tags'}\n    </StyledTags>\n  );\n}\n","import { OpenInNew } from '@mui/icons-material';\nimport { styled } from '@mui/material';\n\ntype Props = {\n  href: string;\n  children: React.ReactNode;\n};\n\nconst StyledLink = styled('a')``;\n\nconst StyledIcon = styled(OpenInNew)`\n  width: 17px;\n  height: 17px;\n  position: relative;\n  top: 3px;\n  margin-left: 1px;\n`;\n\nexport const NewTabLink = ({ href, children }: Props) => {\n  return (\n    <StyledLink href={href} target=\"_blank\" rel=\"noreferrer noopener\">\n      {children}\n      <StyledIcon />\n    </StyledLink>\n  );\n};\n","import { Alert, AlertTitle } from '@mui/material';\nimport { HttpError } from '../client/HttpError';\nimport { useDialogContext } from './dialogContext';\nimport { NewTabLink } from './Link';\n\ntype Props = {\n  error: HttpError | Error;\n  severity?: 'error' | 'info';\n};\n\nexport const ErrorAlert = ({ error, severity = 'error' }: Props) => {\n  const apiUrl = useDialogContext((c) => c.uiProps.apiUrl);\n\n  return (\n    <Alert sx={{ mt: 2 }} severity={severity}>\n      {error instanceof HttpError\n        ? getErrorContent(error, apiUrl)\n        : error.message}\n    </Alert>\n  );\n};\n\nfunction DocsInContext() {\n  return (\n    <NewTabLink href=\"https://developer.sit.translate.jio/docs/\">\n      Learn more in Docs\n    </NewTabLink>\n  );\n}\n\nfunction DocsAPIKeys() {\n  return (\n    <NewTabLink href=\"https://developer.sit.translate.jio/docs/\">\n      Learn more in Docs\n    </NewTabLink>\n  );\n}\n\nfunction getErrorContent({ code, params, message }: HttpError, apiUrl: string) {\n  switch (code) {\n    case 'operation_not_permitted':\n      return (\n        <>\n          <AlertTitle>Operation not permitted</AlertTitle>\n          {Boolean(params?.length) && 'Missing scopes: ' + params?.join(', ')}\n        </>\n      );\n\n    case 'invalid_project_api_key':\n      return (\n        <>\n          <AlertTitle>Invalid API key</AlertTitle>\n          Check it in the code or in the chrome plugin. <DocsInContext />\n        </>\n      );\n\n    case 'api_url_not_specified':\n      return (\n        <>\n          <AlertTitle>Oops... I miss the API url</AlertTitle>\n          Add it in the code or via the chrome plugin. <DocsInContext />\n        </>\n      );\n\n    case 'api_url_not_valid':\n      return (\n        <>\n          <AlertTitle>API url is not correct ({apiUrl})</AlertTitle>\n          Check it in the code or in the chrome plugin. <DocsInContext />\n        </>\n      );\n\n    case 'api_key_not_specified':\n      return (\n        <>\n          <AlertTitle>Oops... I miss the API key</AlertTitle>\n          Add it in the code or via the chrome plugin. <DocsInContext />\n        </>\n      );\n\n    case 'permissions_not_sufficient_to_edit':\n      return (\n        <>\n          <AlertTitle>\n            Sorry, you don't have permissions to make changes\n          </AlertTitle>\n          Update your API key or ask admin for more permissions <DocsAPIKeys />\n        </>\n      );\n\n    case 'fetch_error':\n      return `Failed to fetch (${apiUrl})`;\n\n    default:\n      return message;\n  }\n}\n","import { IconButton, Button, styled, useTheme, Link } from '@mui/material';\nimport { OpenInNew } from '@mui/icons-material';\n\nimport { TranslationFields } from './TranslationFields';\nimport { LanguageSelect } from './LanguageSelect';\nimport { LoadingButton } from '../common/LoadingButton';\nimport { ScreenshotGallery } from './ScreenshotGallery/ScreenshotGallery';\nimport { ScFieldTitle } from '../common/FieldTitle';\nimport { useDialogContext, useDialogActions } from './dialogContext';\nimport { NsSelect } from './NsSelect';\nimport { TOLGEE_RESTRICT_ATTRIBUTE } from '../../constants';\nimport { Tags } from './Tags/Tags';\nimport { PluralFormCheckbox } from './PluralFormCheckbox';\nimport { ErrorAlert } from './ErrorAlert';\nimport { HttpError } from '../client/HttpError';\nimport { Tooltip } from '../common/Tooltip';\n\nconst ScContainer = styled('div')`\n  font-family: Rubik, Roboto, Arial;\n  padding: 70px 40px 20px;\n\n  box-sizing: border-box;\n  max-width: 100%;\n  width: 700px;\n  background: white;\n  display: flex;\n  flex-direction: column;\n`;\n\nconst ScHeading = styled('div')`\n  display: flex;\n  align-items: center;\n  gap: 5px;\n`;\n\nconst ScHeadingTitle = styled('div')`\n  display: flex;\n  margin: 0px;\n  color: #141414;\n  font-weight: 900;\n  font-size: 24px;\n`;\n\nconst ScHeadingRight = styled('div')`\n  display: flex;\n  justify-content: flex-end;\n  align-items: center;\n  flex-grow: 1;\n`;\n\nconst ScKey = styled('p')`\n  margin: 0px;\n  font-size: 16px;\n  color: rgba(0, 0, 0, 0.65);\n`;\n\nconst ScKeyHint = styled('span')`\n  color: rgba(0, 0, 0, 0.35);\n`;\n\nconst ScFieldsWrapper = styled('div')`\n  margin-top: 20px;\n`;\n\nconst ScTagsWrapper = styled('div')`\n  margin-top: 5px;\n`;\n\nconst ScGalleryWrapper = styled('div')`\n  margin-top: 10px;\n`;\n\nconst ScControls = styled('div')`\n  display: flex;\n  justify-content: flex-end;\n  margin-top: 20px;\n  min-height: 36px;\n`;\n\nconst ScKeyTitle = styled(ScFieldTitle)`\n  justify-content: start;\n  font-size: 16px;\n  color: rgba(0, 0, 0, 0.65);\n  gap: 4px;\n  align-items: center;\n`;\n\nconst ScLinkIcon = styled(Link)`\n  display: grid;\n  font-size: 16px;\n  margin: 0px 0px;\n`;\n\nexport const KeyForm = () => {\n  const theme = useTheme();\n  const { setUseBrowserWindow, onClose, onSave, setSelectedNs } =\n    useDialogActions();\n\n  const pluralsSupported = useDialogContext((c) => c.pluralsSupported);\n  const linkToPlatform = useDialogContext((c) => c.linkToPlatform);\n  const useBrowserWindow = useDialogContext((c) => c.useBrowserWindow);\n  const input = useDialogContext((c) => c.input);\n  const keyData = useDialogContext((c) => c.keyData);\n  const formDisabled = useDialogContext((c) => c.formDisabled);\n  const loading = useDialogContext((c) => c.loading);\n  const error = useDialogContext((c) => c.error);\n  const submitError = useDialogContext((c) => c.submitError);\n  const saving = useDialogContext((c) => c.saving);\n  const success = useDialogContext((c) => c.success);\n  const keyExists = useDialogContext((c) => c.keyExists);\n  const fallbackNamespaces = useDialogContext((c) => c.fallbackNamespaces);\n  const selectedNs = useDialogContext((c) => c.selectedNs);\n  const permissions = useDialogContext((c) => c.permissions);\n\n  const screenshotsView = permissions.canViewScreenshots;\n  const viewPluralCheckbox = permissions.canEditPlural && pluralsSupported;\n  const ready = !loading && !error;\n\n  const generalError = error || submitError;\n\n  return (\n    <ScContainer {...{ [TOLGEE_RESTRICT_ATTRIBUTE]: 'true' }}>\n      <IconButton\n        sx={{ position: 'absolute', top: '18px', right: '18px' }}\n        onClick={onClose}\n      >\n        <svg\n          width=\"16\"\n          height=\"17\"\n          viewBox=\"0 0 16 17\"\n          fill=\"none\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n        >\n          <path\n            d=\"M9.40994 8.49994L15.7099 2.20994C15.8982 2.02164 16.004 1.76624 16.004 1.49994C16.004 1.23364 15.8982 0.978245 15.7099 0.789941C15.5216 0.601638 15.2662 0.49585 14.9999 0.49585C14.7336 0.49585 14.4782 0.601638 14.2899 0.789941L7.99994 7.08994L1.70994 0.789941C1.52164 0.601638 1.26624 0.49585 0.999939 0.49585C0.733637 0.49585 0.478243 0.601638 0.289939 0.789941C0.101635 0.978245 -0.00415253 1.23364 -0.00415254 1.49994C-0.00415254 1.76624 0.101635 2.02164 0.289939 2.20994L6.58994 8.49994L0.289939 14.7899C0.196211 14.8829 0.121816 14.9935 0.0710478 15.1154C0.0202791 15.2372 -0.00585938 15.3679 -0.00585938 15.4999C-0.00585938 15.632 0.0202791 15.7627 0.0710478 15.8845C0.121816 16.0064 0.196211 16.117 0.289939 16.2099C0.382902 16.3037 0.493503 16.3781 0.615362 16.4288C0.737221 16.4796 0.867927 16.5057 0.999939 16.5057C1.13195 16.5057 1.26266 16.4796 1.38452 16.4288C1.50638 16.3781 1.61698 16.3037 1.70994 16.2099L7.99994 9.90994L14.2899 16.2099C14.3829 16.3037 14.4935 16.3781 14.6154 16.4288C14.7372 16.4796 14.8679 16.5057 14.9999 16.5057C15.132 16.5057 15.2627 16.4796 15.3845 16.4288C15.5064 16.3781 15.617 16.3037 15.7099 16.2099C15.8037 16.117 15.8781 16.0064 15.9288 15.8845C15.9796 15.7627 16.0057 15.632 16.0057 15.4999C16.0057 15.3679 15.9796 15.2372 15.9288 15.1154C15.8781 14.9935 15.8037 14.8829 15.7099 14.7899L9.40994 8.49994Z\"\n            fill=\"#8F005D\"\n          />\n        </svg>\n      </IconButton>\n      <ScHeading>\n        <ScHeadingTitle>Quick translation</ScHeadingTitle>\n\n        <ScHeadingRight>{!loading && <LanguageSelect />}</ScHeadingRight>\n      </ScHeading>\n      <ScKeyTitle>Key</ScKeyTitle>\n      <ScKey>\n        {input}\n        <ScKeyHint>\n          {!keyExists && ready && \" (key doesn't exist yet)\"}\n        </ScKeyHint>\n      </ScKey>\n      <NsSelect\n        options={fallbackNamespaces}\n        value={selectedNs}\n        onChange={setSelectedNs}\n      />\n      {ready && (\n        <ScTagsWrapper>\n          <ScFieldTitle>Tags</ScFieldTitle>\n          <Tags />\n        </ScTagsWrapper>\n      )}\n      {/* {ready && viewPluralCheckbox && <PluralFormCheckbox />} */}\n      {!error && (\n        <ScFieldsWrapper>\n          <TranslationFields />\n        </ScFieldsWrapper>\n      )}\n      {/* {screenshotsView && ready && (\n        <ScGalleryWrapper>\n          <ScreenshotGallery />\n        </ScGalleryWrapper>\n      )} */}\n      {formDisabled && ready && (\n        <ErrorAlert\n          error={new HttpError('permissions_not_sufficient_to_edit')}\n          severity=\"info\"\n        />\n      )}\n      {generalError && <ErrorAlert error={generalError} />}\n      <ScControls>\n        <Button\n          onClick={onClose}\n          color=\"primary\"\n          variant=\"outlined\"\n          sx={{\n            textTransform: 'none',\n            fontWeight: '900',\n            fontSize: '16px',\n            padding: '8px 25px',\n            borderRadius: '24px',\n          }}\n        >\n          {useBrowserWindow ? 'Close' : 'Cancel'}\n        </Button>\n        <LoadingButton\n          loading={saving}\n          disabled={saving || formDisabled}\n          onClick={onSave}\n          color=\"primary\"\n          sx={{\n            textTransform: 'none',\n            fontWeight: '900',\n            fontSize: '16px',\n            padding: '8px 25px',\n            borderRadius: '24px',\n          }}\n          variant=\"contained\"\n          style={{ marginLeft: '10px' }}\n        >\n          {success\n            ? 'Saved! ✓'\n            : keyData?.keyId === undefined\n              ? 'Create'\n              : 'Update'}\n        </LoadingButton>\n      </ScControls>\n    </ScContainer>\n  );\n};\n","import { DEVTOOLS_ID } from '../constants';\n\nexport function getRootElement() {\n  let outerElement = document.getElementById(DEVTOOLS_ID);\n  if (!outerElement?.isConnected) {\n    outerElement = document.createElement('div');\n    outerElement.id = DEVTOOLS_ID;\n    outerElement.style.height = '0px';\n    outerElement.style.overflow = 'hidden';\n    document.body.appendChild(outerElement);\n  }\n\n  let shadowRoot = outerElement.shadowRoot;\n  if (!shadowRoot) {\n    outerElement.attachShadow({ mode: 'open' });\n    shadowRoot = outerElement.shadowRoot;\n  }\n\n  let rootElement = shadowRoot.firstElementChild;\n\n  if (!rootElement) {\n    rootElement = document.createElement('div');\n    shadowRoot.appendChild(rootElement);\n  }\n  return rootElement as HTMLElement;\n}\n","import React, { useRef } from 'react';\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\nimport {\n  createTheme,\n  css,\n  ThemeProvider as MuiThemeProvider,\n  GlobalStyles,\n} from '@mui/material';\n\nimport { DEVTOOLS_Z_INDEX } from '../constants';\nimport { getRootElement } from './getRootElement';\n\nlet theme = createTheme({\n  typography: {\n    fontFamily:\n      '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n    htmlFontSize: 0,\n  },\n  palette: {\n    primary: {\n      main: '#8F005D',\n    },\n    secondary: {\n      main: '#2B5582',\n    },\n    text: {\n      secondary: 'rgba(0,0,0,0.65)',\n    },\n    background: {\n      default: 'rgb(255, 255, 255)',\n    },\n  },\n  zIndex: {\n    modal: DEVTOOLS_Z_INDEX,\n  },\n});\n\ntheme = createTheme(theme, {\n  components: {\n    MuiButton: {\n      styleOverrides: {\n        root: {\n          whiteSpace: 'nowrap',\n        },\n      },\n    },\n    MuiTooltip: {\n      styleOverrides: {\n        tooltip: {\n          fontSize: 12,\n          boxShadow: '1px 1px 6px rgba(0, 0, 0, 0.25)',\n          borderRadius: '11px',\n          color: 'black',\n          backgroundColor: 'white',\n        },\n      },\n    },\n    MuiSvgIcon: {\n      styleOverrides: {\n        fontSizeSmall: {\n          width: '19px',\n          height: '19px',\n        },\n      },\n    },\n  },\n});\n\nconst globalStyles = css`\n  :host > * {\n    all: initial;\n  }\n`;\n\nexport function ThemeProvider({ children }: React.PropsWithChildren) {\n  const cache: any = useRef(\n    createCache({\n      key: 'jiotranslate-dev-tools',\n      prepend: true,\n      container: getRootElement(),\n    })\n  );\n\n  return (\n    <CacheProvider value={cache.current!}>\n      <GlobalStyles styles={globalStyles} />\n      <MuiThemeProvider theme={theme}>{children}</MuiThemeProvider>\n    </CacheProvider>\n  );\n}\n","import { TranslationDialogWrapper } from './TranslationDialogWrapper';\nimport { KeyForm } from './KeyForm';\nimport { ThemeProvider } from '../ThemeProvider';\n\nexport const TranslationDialog = () => {\n  return (\n    <ThemeProvider>\n      <TranslationDialogWrapper>\n        <KeyForm />\n      </TranslationDialogWrapper>\n    </ThemeProvider>\n  );\n};\n","import type { UiProps } from '@jiotranslate/core-beta';\n\nimport { useEffect, useState } from 'react';\nimport { QueryProvider } from '../client/QueryProvider';\nimport { DialogProvider } from './dialogContext';\nimport { TranslationDialog } from './TranslationDialog';\n\nexport type ComponentDependencies = UiProps;\n\nexport type KeyData = {\n  key: null | string;\n  defaultValue: undefined | string;\n  fallbackNamespaces: string[];\n  namespace: string;\n};\n\nexport type Props = {\n  uiProps: UiProps;\n  keyData: KeyData;\n};\n\nexport const KeyDialog = ({ uiProps, keyData }: Props) => {\n  const [open, setOpen] = useState(true);\n  useEffect(() => {\n    setOpen(true);\n  }, [keyData]);\n\n  function handleClose() {\n    setOpen(false);\n  }\n\n  return (\n    <QueryProvider\n      apiUrl={uiProps.apiUrl}\n      apiKey={uiProps.apiKey}\n      projectId={uiProps.projectId}\n    >\n      {open && (\n        <DialogProvider\n          uiProps={uiProps}\n          defaultValue={keyData.defaultValue || ''}\n          keyName={keyData.key!}\n          fallbackNamespaces={keyData.fallbackNamespaces}\n          namespace={keyData.namespace}\n          onClose={handleClose}\n        >\n          <TranslationDialog />\n        </DialogProvider>\n      )}\n    </QueryProvider>\n  );\n};\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n","import React from 'react';\nimport { Menu, MenuItem, styled } from '@mui/material';\n\nimport { DEVTOOLS_Z_INDEX } from '../../constants';\nimport { ThemeProvider } from '../ThemeProvider';\nimport { getRootElement } from '../getRootElement';\n\nconst ScMenuItem = styled(MenuItem)`\n  display: flex;\n  flex-direction: column;\n  height: 50px;\n  justify-content: center;\n  align-items: flex-start;\n`;\n\nconst ScTranslation = styled('div')`\n  display: flex;\n  padding: 3px;\n`;\n\nconst ScKey = styled('div')`\n  display: flex;\n  margin-top: -5px;\n  padding: 3px;\n  font-weight: bold;\n  font-size: 12px;\n  font-family: Monospace, 'Courier New', Courier;\n`;\n\nexport interface KeyContextMenuProps {\n  target: HTMLElement;\n  keys: Map<string, string | undefined>;\n  onSelect: (key: string | undefined) => void;\n}\n\nexport type KeyContextMenuState = Partial<KeyContextMenuProps> & {\n  opened: boolean;\n};\n\ntype Props = {\n  initialState: KeyContextMenuProps;\n};\n\nexport class KeyContextMenu extends React.Component<\n  Props,\n  KeyContextMenuState\n> {\n  state: KeyContextMenuState = {\n    opened: false,\n  };\n\n  constructor(props: Props) {\n    super(props);\n    this.state = { ...props.initialState, opened: true };\n  }\n\n  keyDown = (e: KeyboardEvent) => {\n    if (e.key === 'Escape') {\n      this.setState((s) => ({ ...s, opened: false }));\n      this.state.onSelect && this.state.onSelect(undefined);\n    }\n  };\n\n  componentDidMount() {\n    document.addEventListener('keydown', this.keyDown);\n  }\n\n  componentWillUnmount() {\n    document.removeEventListener('keydown', this.keyDown);\n  }\n\n  render() {\n    return (\n      <ThemeProvider>\n        {this.state.opened && (\n          <Menu\n            disablePortal\n            disableEnforceFocus\n            anchorEl={this.state.target}\n            anchorOrigin={{\n              vertical: 'bottom',\n              horizontal: 'center',\n            }}\n            open\n            onClose={() => {\n              this.setState({ opened: false });\n              this.state.onSelect?.(undefined);\n            }}\n            container={getRootElement()}\n            style={{ zIndex: DEVTOOLS_Z_INDEX }}\n          >\n            {Array.from(this.state.keys || []).map(\n              ([key, translation], index) => (\n                <ScMenuItem\n                  onClick={() => {\n                    this.state.onSelect?.(key);\n                    setTimeout(() => {\n                      this.setState({ opened: false });\n                    });\n                  }}\n                  key={index}\n                >\n                  <ScTranslation data-testid=\"key_context_menu_translation\">\n                    {translation}\n                  </ScTranslation>\n                  <ScKey data-testid=\"key_context_menu_key\">{key}</ScKey>\n                </ScMenuItem>\n              )\n            )}\n          </Menu>\n        )}\n      </ThemeProvider>\n    );\n  }\n}\n","import type { UiProps, UiKeyOption } from '@jiotranslate/core-beta';\n\nimport { KeyData, KeyDialog } from './KeyDialog/KeyDialog';\nimport { getRootElement } from './getRootElement';\nimport { Root, createRoot } from 'react-dom/client';\nimport { KeyContextMenu } from './KeyContextMenu/KeyContextMenu';\n\nexport const InContextUi = (props: UiProps) => {\n  let rootElement: Element | undefined;\n  let tolgeeModalRoot: Root;\n  let contextMenuRoot: Root;\n\n  function checkInitialization() {\n    const newRoot = getRootElement();\n    if (rootElement !== newRoot) {\n      rootElement = newRoot;\n\n      const tolgeeModalContainer = document.createElement('div');\n      rootElement.appendChild(tolgeeModalContainer);\n      tolgeeModalRoot = createRoot(tolgeeModalContainer);\n\n      const contextMenuContainer = document.createElement('div');\n      rootElement.appendChild(contextMenuContainer);\n      contextMenuRoot = createRoot(contextMenuContainer);\n    }\n  }\n\n  const self = {\n    openKeyDialog(keyData: KeyData) {\n      checkInitialization();\n      tolgeeModalRoot.render(<KeyDialog uiProps={props} keyData={keyData} />);\n    },\n\n    async getKey(props: {\n      keys: Map<string, string | undefined>;\n      target: HTMLElement;\n    }): Promise<string | undefined> {\n      return await new Promise<string | undefined>((resolve) => {\n        checkInitialization();\n        contextMenuRoot.render(\n          <KeyContextMenu\n            // reset element state every time\n            key={Math.random()}\n            initialState={{\n              ...props,\n              onSelect(key) {\n                resolve(key);\n              },\n            }}\n          />\n        );\n      });\n    },\n\n    async handleElementClick(\n      keysAndDefaults: UiKeyOption[],\n      target: HTMLElement\n    ) {\n      checkInitialization();\n      let key = keysAndDefaults[0].key as string | undefined;\n      const keysMap = new Map(\n        keysAndDefaults.map(({ key, translation, defaultValue }) => [\n          key,\n          translation || defaultValue,\n        ])\n      );\n      if (keysMap.size > 1) {\n        key = await self.getKey({\n          keys: keysMap,\n          target,\n        });\n      }\n      if (key) {\n        const value = keysAndDefaults.find((val) => val.key === key)!;\n        self.openKeyDialog({\n          key,\n          namespace: value.namespace,\n          defaultValue: value.defaultValue,\n          fallbackNamespaces: value.fallbackNamespaces,\n        });\n      }\n    },\n  };\n  return self;\n};\n","import { JioTranslatePlugin, UiMiddleware } from '@jiotranslate/core-beta';\nimport { isSSR } from './tools/isSSR';\nimport { InContextUi } from './ui/InContextUi';\n\nexport const ContextUi = (): JioTranslatePlugin => (jiotranslate, tools) => {\n  let ui: UiMiddleware | undefined = undefined;\n\n  if (!isSSR()) {\n    ui = (props) => InContextUi(props);\n  }\n  tools.setUi(ui);\n  return jiotranslate;\n};\n","import { ContextUi } from './ContextUi';\nimport { DevBackend } from './DevBackend';\nimport { InContextOptions } from './types';\nimport { ObserverPlugin } from './ObserverPlugin';\nimport { JioTranslatePlugin } from '@jiotranslate/core-beta';\nexport const InContextTools =\n  (props?: InContextOptions): JioTranslatePlugin =>\n  (jiotranslate, tools) => {\n    const { credentials } = props || {};\n    jiotranslate.addPlugin(DevBackend());\n    if (!tools.hasUi()) {\n      jiotranslate.addPlugin(ContextUi());\n    }\n    if (!tools.hasObserver()) {\n      jiotranslate.addPlugin(ObserverPlugin());\n    }\n    if (credentials) {\n      jiotranslate.overrideCredentials(credentials);\n    }\n    return jiotranslate;\n  };\n","/* eslint-disable @typescript-eslint/no-var-requires */\nexport * from './entry-production';\nimport { InContextTools } from './InContextTools';\n\nexport const DevTools = InContextTools;\n"],"names":["language","getErrorMessage","fetchFn","handlers","i","ns","self","cache","_a","t","p","formatter","ui","result","options","code","char","isSSR","node","shape","meta","position","JioTranslateElement","_","m","a","r","o","c","x","A","v","U","E","global","this","character","values","string","name","match","start","length","prefix","fetch","data","BrowserExtensionPlugin","getConfig","InContextTools","tolgee","credentials","DEFAULT_OPTIONS","getPath","q","C","G","H","L","M","P","Q","b","V","W","X","reactModule","require$$0","jsxRuntimeModule","_setPrototypeOf","_inheritsLoose","setPrototypeOf","Subscribable","_extends","noop","asArray","isPlainObject","copy","sleep","FocusManager","listener","OnlineManager","CancelledError","Retryer","config","resolve","reject","pause","run","cancelFn","NotifyManager","logger","Query","isStale","getDefaultState","reducer","QueryCache","client","remove","find","Mutation","MutationCache","buildNewPages","param","fetchPage","manual","promise","_loop","QueryClient","QueryObserver","trackProp","MutationObserver","exports","schedulerModule","require$$1","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Qe","Re","Ue","Ve","We","Xe","Ye","Ze","$e","d","e","g","h","k","f","l","n","ai","bi","ci","di","ei","fi","gi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","Y","reactDomModule","React","useQueryClient","queryClient","QueryClientProvider","useQueryErrorResetBoundary","createContext","jsx","from","end","line","offset","prev","top","next","number","MapMode","doc","process","insert","left","main","combine","compare","sameArray","tr","prec","content","base","effect","scrollIntoView","none","CharCategory","require","at","Range","cursor","layer","spec","keyframes","getSelection","contains","getScale","rect","flatten","view","pos","BlockType","margin","height","dist","decorations","Direction","order","replace","type","right","bottom","cView","viewport","width","vs","inside","passive","style","event","extend","read","QueryType","gap","to","theme","key","observers","shift","is","command","cmd","pieces","_t","deco","styles","arrow","Se","As","Te","K","Os","Ht","ht","Gs","Mt","se","Es","Ns","ms","Nt","useEffect","useLayoutEffect","unstable_runWithPriority","unstable_NormalPriority","createProvider","useRef","useState","unstable_batchedUpdates","createElement","createContext$1","useContext$1","useReducer","createRegularContext","useMemo","useContext","useCallback","screenshots","tags","selectedLanguages","_b","isPlural","_c","getTolgeeFormat","_d","_e","_i","tolgeeFormatGenerateIcu","formatMuiErrorMessage","_objectWithoutPropertiesLoose","memoize","StyleSheet","hash","reference","characters","comment","identifierWithPointTracking","toRules","getRules","compat","removeLabel","prefixer","createCache","stylis","registerStyles","isStringTag","insertStyles","isCustomProperty","isProcessableValue","processStyleValue","unitless","serializeStyles","hashString","syncFallback","React.useLayoutEffect","React.createContext","withEmotionCache","forwardRef","ThemeContext","React.useContext","React.useRef","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","shouldForwardProp","Insertion","createStyled","React.createElement","React.Fragment","_jsx","isEmpty","GlobalStyles","defaultTheme","globalStyles","styled","emStyled","deepmerge","_excluded","capitalize","_formatMuiErrorMessage","getStyleValue","abs","breakpointsValues","getValue","styleFunctionSx","defaultSxConfig","css","applyStyles","createTheme","isObjectEmpty","useTheme","systemDefaultTheme","useThemeWithoutDefault","MuiGlobalStyles","Box","React.forwardRef","generateUtilityClass","generateUtilityClasses","reactIsModule","getDisplayName","ForwardRef","Memo","defaultProps","useThemeProps","React.useEffect","clamp","min","max","debounce","React.isValidElement","React.useState","React.useCallback","React.useMemo","ThemeProvider","usePrivateTheme","MuiThemeProvider","StyledEngineThemeContext","_interopRequireDefault","module","color","backgroundColor","common","lighten","darken","blue","purple","red","lightBlue","green","orange","getContrastRatio","grey","round","systemCreateTheme","zIndex","useThemeSystem","systemUseThemeProps","createStyled_1","require$$2","_styledEngine","_interopRequireWildcard","require$$3","_excluded2","_excluded3","_getRequireWildcardCache","rootShouldForwardProp","slotShouldForwardProp","overridesResolver","SystemThemeProvider","useUtilityClasses","SvgIcon","_jsxs","React.memo","Transition","mapper","isValidElement","Children","cloneElement","TransitionGroup","easing","alpha","Paper","joinedClasses","mergedStyle","props","_t2","_t3","_t4","touchRippleClasses","TouchRipple","pulsate","React.useImperativeHandle","buttonBaseClasses","ButtonBase","handleKeyDown","iconButtonClasses","IconButton","alertClasses","Alert","CloseIcon","colorTransformations","transformDeprecatedColors","Typography","AlertTitle","React.cloneElement","getContainer","Portal","ReactDOM.createPortal","fixedElements","getTransitionProps","ownerDocument","isHTMLElement","getComputedStyle","window","mathMax","mathMin","toPaddingObject","padding","popperOffsets","popper","clippingParents","allPlacements","placements","placement","checks","maxOffset","modifiers","merged","defaultModifiers","createPopper","state","noopFn","computeStyles","flip","preventOverflow","hide","resolveAnchorEl","PopperTooltip","Popper","TextareaAutosize","boxSizing","border","stringify","trim","value","readOnly","BasePopper","ListSubheader","chipClasses","Chip","FormControlContext","SystemGlobalStyles","inputBaseClasses","light","InputBase","Input","autocompleteClasses","inputClasses","outlinedInputClasses","filledInputClasses","Autocomplete","_createElement","Fade","Backdrop","boxClasses","buttonClasses","Button","ButtonGroupContext","ButtonGroupButtonContext","SwitchBase","checkboxClasses","Checkbox","CircularProgress","Modal","maxWidth","dialogClasses","Dialog","DialogContext","inputBaseRootOverridesResolver","InputBaseInput","inputBaseInputOverridesResolver","FilledInput","FormControl","React.Children","Grow","duration","linkClasses","Link","List","ListContext","listItemTextClasses","ListItemText","MenuList","PaperBase","Popover","Menu","menuItemClasses","dividerClasses","listItemIconClasses","MenuItem","nativeSelectClasses","NativeSelectInput","_span","NotchedOutlineRoot","borderColor","OutlinedInput","selectClasses","SelectInput","open","StyledInput","Select","createPortal","Fragment","StyledContainer","getPluralVariants","getVariantExample","jsxs","IterMode","types","children","positions","buffer","lookAhead","nodeSize","parse","Tag","hasChild","ts","token","bracket","tags$1","isAdjacent","changes","minHeight","nested","StyledEditorWrapper","generatePlaceholdersStyle","TolgeeHighlight","PlaceholderPlugin","tolgeeSyntax","getLanguageDirection","selected","StyledWrapper","StyledCloseIcon","u","useDebounce","ScKey"],"mappings":"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","x_google_ignoreList":[12,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,68,69,70,71,72,74,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,386,387,388,389,390,400,401,404,416]}