webamp 1.4.3-beta.5 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/built/types/js/Disposable.d.ts +11 -0
- package/built/types/js/actionCreators/equalizer.d.ts +8 -0
- package/built/types/js/actionCreators/files.d.ts +24 -0
- package/built/types/js/actionCreators/index.d.ts +22 -0
- package/built/types/js/actionCreators/media.d.ts +20 -0
- package/built/types/js/actionCreators/milkdrop.d.ts +13 -0
- package/built/types/js/actionCreators/playlist.d.ts +16 -0
- package/built/types/js/actionCreators/windows.d.ts +27 -0
- package/built/types/js/actionTypes.d.ts +87 -0
- package/built/types/js/components/App.d.ts +12 -0
- package/built/types/js/components/Balance.d.ts +8 -0
- package/built/types/js/components/Character.d.ts +9 -0
- package/built/types/js/components/CharacterString.d.ts +6 -0
- package/built/types/js/components/ClickedDiv.d.ts +8 -0
- package/built/types/js/components/ClipPaths.d.ts +8 -0
- package/built/types/js/components/ContextMenu.d.ts +31 -0
- package/built/types/js/components/ContextMenuTarget.d.ts +9 -0
- package/built/types/js/components/ContextMenuWrapper.d.ts +7 -0
- package/built/types/js/components/Css.d.ts +7 -0
- package/built/types/js/components/DropTarget.d.ts +13 -0
- package/built/types/js/components/EqualizerWindow/Band.d.ts +14 -0
- package/built/types/js/components/EqualizerWindow/EqAuto.d.ts +3 -0
- package/built/types/js/components/EqualizerWindow/EqGraph.d.ts +2 -0
- package/built/types/js/components/EqualizerWindow/EqOn.d.ts +2 -0
- package/built/types/js/components/EqualizerWindow/EqTitleButtons.d.ts +1 -0
- package/built/types/js/components/EqualizerWindow/EqualizerShade.d.ts +2 -0
- package/built/types/js/components/EqualizerWindow/PresetsContextMenu.d.ts +2 -0
- package/built/types/js/components/EqualizerWindow/index.d.ts +2 -0
- package/built/types/js/components/EqualizerWindow/spline.d.ts +1 -0
- package/built/types/js/components/FFTNullsoft.d.ts +16 -0
- package/built/types/js/components/FocusTarget.d.ts +9 -0
- package/built/types/js/components/Fullscreen.d.ts +8 -0
- package/built/types/js/components/GenWindow/index.d.ts +14 -0
- package/built/types/js/components/MainWindow/ActionButtons.d.ts +3 -0
- package/built/types/js/components/MainWindow/Close.d.ts +3 -0
- package/built/types/js/components/MainWindow/ClutterBar.d.ts +3 -0
- package/built/types/js/components/MainWindow/Eject.d.ts +3 -0
- package/built/types/js/components/MainWindow/EqToggleButton.d.ts +3 -0
- package/built/types/js/components/MainWindow/Kbps.d.ts +3 -0
- package/built/types/js/components/MainWindow/Khz.d.ts +3 -0
- package/built/types/js/components/MainWindow/MainBalance.d.ts +4 -0
- package/built/types/js/components/MainWindow/MainContextMenu.d.ts +7 -0
- package/built/types/js/components/MainWindow/MainVolume.d.ts +3 -0
- package/built/types/js/components/MainWindow/Marquee.d.ts +7 -0
- package/built/types/js/components/MainWindow/Minimize.d.ts +3 -0
- package/built/types/js/components/MainWindow/MonoStereo.d.ts +3 -0
- package/built/types/js/components/MainWindow/PlaylistToggleButton.d.ts +3 -0
- package/built/types/js/components/MainWindow/Position.d.ts +3 -0
- package/built/types/js/components/MainWindow/Repeat.d.ts +3 -0
- package/built/types/js/components/MainWindow/Shade.d.ts +3 -0
- package/built/types/js/components/MainWindow/Shuffle.d.ts +3 -0
- package/built/types/js/components/MainWindow/Time.d.ts +3 -0
- package/built/types/js/components/MainWindow/index.d.ts +8 -0
- package/built/types/js/components/MilkdropWindow/Background.d.ts +7 -0
- package/built/types/js/components/MilkdropWindow/Desktop.d.ts +7 -0
- package/built/types/js/components/MilkdropWindow/MilkdropContextMenu.d.ts +6 -0
- package/built/types/js/components/MilkdropWindow/PresetOverlay.d.ts +7 -0
- package/built/types/js/components/MilkdropWindow/Visualizer.d.ts +7 -0
- package/built/types/js/components/MilkdropWindow/index.d.ts +5 -0
- package/built/types/js/components/MiniTime.d.ts +2 -0
- package/built/types/js/components/OptionsContextMenu.d.ts +2 -0
- package/built/types/js/components/PlaybackContextMenu.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/AddMenu.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/ListMenu.d.ts +1 -0
- package/built/types/js/components/PlaylistWindow/MiscMenu.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/MiscOptionsContextMenu.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/PlaylistActionArea.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/PlaylistMenu.d.ts +8 -0
- package/built/types/js/components/PlaylistWindow/PlaylistMenuEntry.d.ts +7 -0
- package/built/types/js/components/PlaylistWindow/PlaylistResizeTarget.d.ts +5 -0
- package/built/types/js/components/PlaylistWindow/PlaylistScrollBar.d.ts +1 -0
- package/built/types/js/components/PlaylistWindow/PlaylistShade.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/RemoveMenu.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/RunningTimeDisplay.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/SelectionMenu.d.ts +1 -0
- package/built/types/js/components/PlaylistWindow/SortContextMenu.d.ts +1 -0
- package/built/types/js/components/PlaylistWindow/TrackCell.d.ts +9 -0
- package/built/types/js/components/PlaylistWindow/TrackList.d.ts +2 -0
- package/built/types/js/components/PlaylistWindow/TrackTitle.d.ts +6 -0
- package/built/types/js/components/PlaylistWindow/index.d.ts +5 -0
- package/built/types/js/components/ResizeTarget.d.ts +11 -0
- package/built/types/js/components/Skin.d.ts +1 -0
- package/built/types/js/components/SkinsContextMenu.d.ts +2 -0
- package/built/types/js/components/VerticalSlider.d.ts +15 -0
- package/built/types/js/components/Vis.d.ts +5 -0
- package/built/types/js/components/VisPainter.d.ts +147 -0
- package/built/types/js/components/Volume.d.ts +8 -0
- package/built/types/js/components/WinampButton.d.ts +23 -0
- package/built/types/js/components/WindowManager.d.ts +8 -0
- package/built/types/js/constants.d.ts +38 -0
- package/built/types/js/emitter.d.ts +9 -0
- package/built/types/js/fileUtils.d.ts +15 -0
- package/built/types/js/hooks.d.ts +21 -0
- package/built/types/js/hotkeys.d.ts +2 -0
- package/built/types/js/loadQueue.d.ts +9 -0
- package/built/types/js/marqueeUtils.d.ts +6 -0
- package/built/types/js/marqueeUtils.test.d.ts +1 -0
- package/built/types/js/media/StereoBalanceNode.d.ts +3 -0
- package/built/types/js/media/elementSource.d.ts +26 -0
- package/built/types/js/media/index.d.ts +43 -0
- package/built/types/js/mediaMiddleware.d.ts +4 -0
- package/built/types/js/playlistHtml.d.ts +10 -0
- package/built/types/js/reducers/display.d.ts +26 -0
- package/built/types/js/reducers/equalizer.d.ts +10 -0
- package/built/types/js/reducers/index.d.ts +4 -0
- package/built/types/js/reducers/media.d.ts +14 -0
- package/built/types/js/reducers/milkdrop.d.ts +15 -0
- package/built/types/js/reducers/network.d.ts +6 -0
- package/built/types/js/reducers/playlist.d.ts +9 -0
- package/built/types/js/reducers/settings.d.ts +6 -0
- package/built/types/js/reducers/tracks.d.ts +7 -0
- package/built/types/js/reducers/tracks.test.d.ts +1 -0
- package/built/types/js/reducers/userInput.d.ts +9 -0
- package/built/types/js/reducers/windows.d.ts +34 -0
- package/built/types/js/regionParser.d.ts +6 -0
- package/built/types/js/resizeUtils.d.ts +23 -0
- package/built/types/js/resizeUtils.test.d.ts +1 -0
- package/built/types/js/selectors.d.ts +184 -0
- package/built/types/js/selectors.test.d.ts +1 -0
- package/built/types/js/serialization.test.d.ts +1 -0
- package/built/types/js/serializedStates/v1Types.d.ts +64 -0
- package/built/types/js/skinParser.d.ts +12 -0
- package/built/types/js/skinParserUtils.d.ts +19 -0
- package/built/types/js/skinSelectors.d.ts +6 -0
- package/built/types/js/skinSprites.d.ts +17 -0
- package/built/types/js/snapUtils.d.ts +32 -0
- package/built/types/js/snapUtils.test.d.ts +1 -0
- package/built/types/js/spinParserUtils.test.d.ts +1 -0
- package/built/types/js/store.d.ts +4 -0
- package/built/types/js/trackUtils.d.ts +3 -0
- package/built/types/js/types.d.ts +734 -0
- package/built/types/js/utils.d.ts +71 -0
- package/built/types/js/utils.test.d.ts +1 -0
- package/built/types/js/webamp.d.ts +6 -0
- package/built/types/js/webampLazy.d.ts +156 -0
- package/built/types/scripts/postcss-optimize-data-uri-pngs.d.ts +2 -0
- package/built/types/scripts/rollupPlugins.d.mts +8 -0
- package/built/types/vite.config.d.ts +2 -0
- package/built/webamp.bundle.js +43627 -36184
- package/built/webamp.bundle.js.map +1 -0
- package/built/webamp.bundle.min.js +43 -71
- package/built/webamp.bundle.min.js.map +1 -1
- package/built/webamp.bundle.min.mjs +44 -0
- package/built/webamp.bundle.min.mjs.map +1 -0
- package/built/webamp.lazy-bundle.js +14215 -18995
- package/built/webamp.lazy-bundle.js.map +1 -0
- package/built/webamp.lazy-bundle.min.js +41 -50
- package/built/webamp.lazy-bundle.min.js.map +1 -1
- package/built/webamp.lazy-bundle.min.mjs +42 -0
- package/built/webamp.lazy-bundle.min.mjs.map +1 -0
- package/package.json +68 -75
- package/CHANGELOG.md +0 -198
- package/index.d.ts +0 -277
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webamp.lazy-bundle.min.mjs","sources":["../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/jsx-runtime.js","../node_modules/react-dom/cjs/react-dom-client.production.js","../node_modules/react-dom/client.js","../../../node_modules/object-assign/index.js","../../../node_modules/react/cjs/react.production.min.js","../../../node_modules/react/index.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../../node_modules/use-sync-external-store/shim/index.js","../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../../node_modules/use-sync-external-store/shim/with-selector.js","../node_modules/react/cjs/react.production.js","../node_modules/react/index.js","../node_modules/react-dom/cjs/react-dom.production.js","../node_modules/react-dom/index.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/utils/useSyncExternalStore.js","../../../node_modules/react-is/cjs/react-is.production.min.js","../../../node_modules/react-is/index.js","../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/redux/dist/redux.mjs","../node_modules/react-redux/es/index.js","../node_modules/redux-thunk/es/index.js","../node_modules/redux-devtools-extension/index.js","../../js/actionTypes.ts","../../js/constants.ts","../../js/utils.ts","../../js/reducers/playlist.ts","../../js/reducers/windows.ts","../../js/reducers/media.ts","../../../node_modules/reselect/lib/index.js","../../js/reducers/display.ts","../../js/reducers/userInput.ts","../../js/reducers/equalizer.ts","../../js/reducers/network.ts","../../js/reducers/settings.ts","../../../node_modules/invariant/invariant.js","../../js/fileUtils.ts","../../js/trackUtils.ts","../../js/reducers/tracks.ts","../../js/types.ts","../../js/reducers/milkdrop.ts","../../js/reducers/index.ts","../../js/playlistHtml.tsx","../../js/marqueeUtils.tsx","../../js/selectors.ts","../../js/resizeUtils.ts","../../js/snapUtils.ts","../../js/actionCreators/windows.ts","../../js/actionCreators/media.ts","../../js/actionCreators/equalizer.ts","../../winamp-eqf/constants.js","../../winamp-eqf/parser.js","../../winamp-eqf/creator.js","../../winamp-eqf/index.js","../../js/skinSprites.ts","../../js/skinParserUtils.ts","../js/skinParser.js","../../js/regionParser.ts","../../../node_modules/tinyqueue/index.js","../../js/actionCreators/playlist.ts","../../js/actionCreators/files.ts","../js/loadQueue.js","../../js/actionCreators/milkdrop.ts","../../js/actionCreators/index.ts","../../js/mediaMiddleware.ts","../../js/store.ts","../../../node_modules/fscreen/dist/fscreen.esm.js","../../js/components/Fullscreen.tsx","../../js/hooks.ts","../../../node_modules/classnames/index.js","../../js/components/ResizeTarget.tsx","../../js/components/FocusTarget.tsx","../../js/components/WinampButton.tsx","../../js/components/GenWindow/index.tsx","../../js/components/MilkdropWindow/Visualizer.tsx","../../js/components/MilkdropWindow/Background.tsx","../../js/components/MilkdropWindow/PresetOverlay.tsx","../../js/components/DropTarget.tsx","../../js/components/ContextMenu.tsx","../../js/components/ContextMenuWrapper.tsx","../../js/components/MilkdropWindow/MilkdropContextMenu.tsx","../../js/components/MilkdropWindow/Desktop.tsx","../../js/components/MilkdropWindow/index.tsx","../../js/components/PlaybackContextMenu.tsx","../../js/components/SkinsContextMenu.tsx","../../js/components/OptionsContextMenu.tsx","../../js/components/MainWindow/MainContextMenu.tsx","../../js/components/WindowManager.tsx","../../../node_modules/lodash/_basePropertyOf.js","../../../node_modules/lodash/_deburrLetter.js","../../../node_modules/lodash/_root.js","../../../node_modules/lodash/_freeGlobal.js","../../../node_modules/lodash/_Symbol.js","../../../node_modules/lodash/_arrayMap.js","../../../node_modules/lodash/isArray.js","../../../node_modules/lodash/_getRawTag.js","../../../node_modules/lodash/_objectToString.js","../../../node_modules/lodash/_baseGetTag.js","../../../node_modules/lodash/isObjectLike.js","../../../node_modules/lodash/isSymbol.js","../../../node_modules/lodash/_baseToString.js","../../../node_modules/lodash/toString.js","../../../node_modules/lodash/deburr.js","../../js/components/Character.tsx","../../js/components/MiniTime.tsx","../../js/components/ClickedDiv.tsx","../../js/components/ContextMenuTarget.tsx","../../js/components/FFTNullsoft.ts","../../js/components/VisPainter.ts","../../js/components/Vis.tsx","../../js/components/MainWindow/ActionButtons.tsx","../../js/components/Balance.tsx","../../js/components/MainWindow/MainBalance.tsx","../../js/components/MainWindow/Close.tsx","../../js/components/MainWindow/ClutterBar.tsx","../../js/components/MainWindow/Eject.tsx","../../js/components/MainWindow/EqToggleButton.tsx","../../js/components/MainWindow/PlaylistToggleButton.tsx","../../js/components/CharacterString.tsx","../../js/components/MainWindow/Kbps.tsx","../../js/components/MainWindow/Khz.tsx","../../js/components/MainWindow/Marquee.tsx","../../js/components/MainWindow/MonoStereo.tsx","../../js/components/MainWindow/Position.tsx","../../js/components/MainWindow/Repeat.tsx","../../js/components/MainWindow/Shade.tsx","../../js/components/MainWindow/Minimize.tsx","../../js/components/MainWindow/Shuffle.tsx","../../js/components/MainWindow/Time.tsx","../../js/components/Volume.tsx","../../js/components/MainWindow/MainVolume.tsx","../../js/components/MainWindow/index.tsx","../../js/components/PlaylistWindow/PlaylistResizeTarget.tsx","../../js/components/PlaylistWindow/PlaylistShade.tsx","../../js/components/PlaylistWindow/PlaylistMenuEntry.tsx","../../js/components/PlaylistWindow/PlaylistMenu.tsx","../../js/components/PlaylistWindow/AddMenu.tsx","../../js/components/PlaylistWindow/RemoveMenu.tsx","../../js/components/PlaylistWindow/SelectionMenu.tsx","../../js/components/PlaylistWindow/SortContextMenu.tsx","../../js/components/PlaylistWindow/MiscOptionsContextMenu.tsx","../../js/components/PlaylistWindow/MiscMenu.tsx","../../js/components/PlaylistWindow/ListMenu.tsx","../../js/components/PlaylistWindow/RunningTimeDisplay.tsx","../../js/components/PlaylistWindow/PlaylistActionArea.tsx","../../js/components/PlaylistWindow/TrackCell.tsx","../../js/components/PlaylistWindow/TrackTitle.tsx","../../js/components/PlaylistWindow/TrackList.tsx","../../js/components/VerticalSlider.tsx","../../js/components/PlaylistWindow/PlaylistScrollBar.tsx","../../js/components/PlaylistWindow/index.tsx","../../js/components/EqualizerWindow/Band.tsx","../../js/components/EqualizerWindow/EqOn.tsx","../../js/components/EqualizerWindow/EqAuto.tsx","../js/components/EqualizerWindow/spline.js","../../js/components/EqualizerWindow/EqGraph.tsx","../../js/components/EqualizerWindow/PresetsContextMenu.tsx","../../js/components/EqualizerWindow/EqTitleButtons.tsx","../../js/components/EqualizerWindow/EqualizerShade.tsx","../../js/components/EqualizerWindow/index.tsx","../../js/skinSelectors.ts","../../js/components/Css.tsx","../../js/components/ClipPaths.tsx","../../../node_modules/endianness/endianness.js","../../../node_modules/utf8-buffer/index.js","../../../node_modules/byte-data/lib/int-parser.js","../../../node_modules/ieee754-buffer/index.js","../../../node_modules/byte-data/index.js","../../../node_modules/riff-file/index.js","../node_modules/ani-cursor/dist/parser.js","../node_modules/ani-cursor/dist/index.js","../../js/components/Skin.tsx","../../js/components/App.tsx","../../js/hotkeys.ts","../../js/emitter.ts","../js/media/StereoBalanceNode.js","../../js/media/elementSource.ts","../../js/media/index.ts","../../js/Disposable.ts","../../js/webampLazy.tsx"],"sourcesContent":["/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$0 = parentA.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) {\n for (child$0 = parentB.child; child$0; ) {\n if (child$0 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$0 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$0 = child$0.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar assign = Object.assign,\n REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nvar REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\");\nSymbol.for(\"react.view_transition\");\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n switch (nextRootInstance.nodeType) {\n case 9:\n case 11:\n fiber = (fiber = nextRootInstance.documentElement)\n ? (fiber = fiber.namespaceURI)\n ? getOwnHostContext(fiber)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (fiber = getChildHostContextProd(nextRootInstance, fiber));\n else\n switch (fiber) {\n case \"svg\":\n fiber = 1;\n break;\n case \"math\":\n fiber = 2;\n break;\n default:\n fiber = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, fiber);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 256,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 4194048;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextTransitionLane() {\n var lane = nextTransitionLane;\n nextTransitionLane <<= 1;\n 0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n return lane;\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$5 = 31 - clz32(remainingLanes),\n lane = 1 << index$5;\n entanglements[index$5] = 0;\n expirationTimes[index$5] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$5];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$5] = null, index$5 = 0;\n index$5 < hiddenUpdatesForLane.length;\n index$5++\n ) {\n var update = hiddenUpdatesForLane[index$5];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 4194090);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$6 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$6;\n (lane & entangledLanes) | (root[index$6] & entangledLanes) &&\n (root[index$6] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentSuspenseInstance(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentSuspenseInstance(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[: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]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$8 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$8 && \"aria-\" !== prefix$8) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nvar prefix, suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" (<anonymous>)\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$9) {\n control = x$9;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$10) {\n control = x$10;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"<anonymous>\") &&\n (frame = frame.replace(\"<anonymous>\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\";\n do\n (info += describeFiber(workInProgress)),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\",\n descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n ),\n currentValue = \"\" + node[valueField];\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n )\n return;\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\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 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$282;\n if (canUseDOM) {\n var isSupported$jscomp$inline_417 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_417) {\n var element$jscomp$inline_418 = document.createElement(\"div\");\n element$jscomp$inline_418.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_417 =\n \"function\" === typeof element$jscomp$inline_418.oninput;\n }\n JSCompiler_inline_result$jscomp$282 = isSupported$jscomp$inline_417;\n } else JSCompiler_inline_result$jscomp$282 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$282 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle 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(\n \" \"\n );\nsimpleEventPluginEvents.push(\"scrollEnd\");\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n return 3 === sourceFiber.tag\n ? ((parent = sourceFiber.stateNode),\n isHidden &&\n null !== update &&\n ((isHidden = 31 - clz32(lane)),\n (sourceFiber = parent.hiddenUpdates),\n (alternate = sourceFiber[isHidden]),\n null === alternate\n ? (sourceFiber[isHidden] = [update])\n : alternate.push(update),\n (update.lane = lane | 536870912)),\n parent)\n : null;\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {};\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 65011712;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 65011714;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_ACTIVITY_TYPE:\n return (\n (type = createFiberImplClass(31, pendingProps, key, mode)),\n (type.elementType = REACT_ACTIVITY_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(formatProdErrorMessage(418, \"\"));\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n track(instance);\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children),\n track(instance);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 13:\n rootOrSingletonContext = !1;\n return;\n case 27:\n case 3:\n rootOrSingletonContext = !0;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var tag = fiber.tag,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== tag && 27 !== tag)) {\n if ((JSCompiler_temp = 5 === tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n a: {\n fiber = fiber.nextSibling;\n for (tag = 0; fiber; ) {\n if (8 === fiber.nodeType)\n if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n if (0 === tag) {\n nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n break a;\n }\n tag--;\n } else\n (\"$\" !== JSCompiler_temp &&\n \"$!\" !== JSCompiler_temp &&\n \"$?\" !== JSCompiler_temp) ||\n tag++;\n fiber = fiber.nextSibling;\n }\n nextHydratableInstance = null;\n }\n } else\n 27 === tag\n ? ((tag = nextHydratableInstance),\n isSingletonScope(fiber.type)\n ? ((fiber = previousHydratableOnEnteringScopedSingleton),\n (previousHydratableOnEnteringScopedSingleton = null),\n (nextHydratableInstance = fiber))\n : (nextHydratableInstance = tag))\n : (nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null);\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction upgradeHydrationErrorsToRecoverable() {\n var queuedErrors = hydrationErrors;\n null !== queuedErrors &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = queuedErrors)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n queuedErrors\n ),\n (hydrationErrors = null));\n return queuedErrors;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber$1 = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber$1 = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber$1, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber$1 && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n SuspenseActionException = Error(formatProdErrorMessage(542)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw (\n ((thenableState = thenable.reason),\n checkIfUseWrappedInAsyncCatch(thenableState),\n thenableState)\n );\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nfunction checkIfUseWrappedInAsyncCatch(rejectedReason) {\n if (\n rejectedReason === SuspenseException ||\n rejectedReason === SuspenseActionException\n )\n throw Error(formatProdErrorMessage(483));\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194048))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nvar currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar renderLanes = 0,\n currentlyRenderingFiber = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter$1 = 0,\n thenableState$1 = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter$1 = 0;\n thenableState$1 = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState$1 = null);\n thenableIndexCounter$1 = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter$1 = localIdCounter = 0;\n thenableState$1 = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nfunction createFunctionComponentUpdateQueue() {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n}\nfunction useThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n thenable = trackUsedThenable(thenableState$1, thenable, index);\n index = currentlyRenderingFiber;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$32 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$32 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$32 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$32 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n var create = subscribeToStore.bind(null, fiber, hook, subscribe);\n updateEffectImpl(2048, 8, create, [subscribe]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 124) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$38) {\n onActionError(actionQueue, node, error$38);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n if (\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n )\n try {\n var state = useThenable(currentStateHook);\n } catch (x) {\n if (x === SuspenseException) throw SuspenseActionException;\n throw x;\n }\n else state = currentStateHook;\n currentStateHook = updateWorkInProgressHook();\n var actionQueue = currentStateHook.queue,\n dispatch = actionQueue.dispatch;\n action !== currentStateHook.memoizedState &&\n ((currentlyRenderingFiber.flags |= 2048),\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n actionStateActionEffect.bind(null, actionQueue, action),\n null\n ));\n return [state, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushSimpleEffect(tag, inst, create, createDeps) {\n tag = { tag: tag, create: create, deps: createDeps, inst: inst, next: null };\n inst = currentlyRenderingFiber.updateQueue;\n null === inst &&\n ((inst = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = inst));\n create = inst.lastEffect;\n null === create\n ? (inst.lastEffect = tag.next = tag)\n : ((createDeps = create.next),\n (create.next = tag),\n (tag.next = createDeps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction createEffectInstance() {\n return { destroy: void 0, resource: void 0 };\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, createDeps) {\n var hook = mountWorkInProgressHook();\n createDeps = void 0 === createDeps ? null : createDeps;\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n createEffectInstance(),\n create,\n createDeps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushSimpleEffect(hookFlags, inst, create, deps))\n : ((currentlyRenderingFiber.flags |= fiberFlags),\n (hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n inst,\n create,\n deps\n )));\n}\nfunction mountEffect(create, createDeps) {\n mountEffectImpl(8390656, 8, create, createDeps);\n}\nfunction updateEffect(create, createDeps) {\n updateEffectImpl(2048, 8, create, createDeps);\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (0 === (renderLanes & 42))\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop$2\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$41 = enqueueUpdate(provider, fiber, lane);\n null !== root$41 &&\n (scheduleUpdateOnFiber(root$41, provider, lane),\n entangleTransitions(root$41, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber ||\n (null !== alternate && alternate === currentlyRenderingFiber)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194048)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError,\n useHostTransitionStatus: throwInvalidHookError,\n useFormState: throwInvalidHookError,\n useActionState: throwInvalidHookError,\n useOptimistic: throwInvalidHookError,\n useMemoCache: throwInvalidHookError,\n useCacheRefresh: throwInvalidHookError\n },\n HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot)\n throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 124) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushSimpleEffect(\n 9,\n createEffectInstance(),\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \"\\u00ab\" + identifierPrefix + \"R\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \"\\u00bb\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"\\u00ab\" +\n identifierPrefix +\n \"r\" +\n JSCompiler_inline_result.toString(32) +\n \"\\u00bb\");\n return (hook.memoizedState = identifierPrefix);\n },\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: mountActionState,\n useActionState: mountActionState,\n useOptimistic: function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber\n ));\n }\n },\n HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: updateActionState,\n useActionState: updateActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n },\n HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId,\n useHostTransitionStatus: useHostTransitionStatus,\n useFormState: rerenderActionState,\n useActionState: rerenderActionState,\n useOptimistic: function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n },\n useMemoCache: useMemoCache,\n useCacheRefresh: updateRefresh\n },\n thenableState = null,\n thenableIndexCounter = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n return trackUsedThenable(thenableState, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction resolveLazy(lazyType) {\n var init = lazyType._init;\n return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 67108866), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 67108866;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 67108866);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n var init = newChild._init;\n newChild = init(newChild._payload);\n return createChild(returnFiber, newChild, lanes);\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (key = newChild._init),\n (newChild = key(newChild._payload)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n var init = newChild._init;\n newChild = init(newChild._payload);\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (key = newChild._init),\n (newChild = key(newChild._payload)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException || x === SuspenseActionException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n if (22 === fiber.tag) {\n if (\n (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary)\n ) {\n var current = fiber.alternate;\n null !== current &&\n null !== current.memoizedState &&\n (shellBoundary = fiber);\n }\n } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state ||\n \"$?\" === state.data ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$73 in Component)\n void 0 === newProps[propName$73] &&\n (newProps[propName$73] = Component[propName$73]);\n }\n return newProps;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$74) {\n setTimeout(function () {\n throw e$74;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$75) {\n setTimeout(function () {\n throw e$75;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n nextProps =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextChildren = workInProgress.child = current.child;\n for (prevState = 0; null !== nextChildren; )\n (prevState =\n prevState | nextChildren.lanes | nextChildren.childLanes),\n (nextChildren = nextChildren.sibling);\n workInProgress.childLanes = prevState & ~nextProps;\n } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextProps,\n renderLanes\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (workInProgress.lanes = workInProgress.childLanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n return null;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 4194816);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 4194816;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = {\n dehydrated: null,\n treeContext: null,\n retryLane: 0,\n hydrationErrors: null\n};\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n if (isHydrating) {\n var nextInstance = nextHydratableInstance,\n JSCompiler_temp$jscomp$0;\n if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n c: {\n JSCompiler_temp$jscomp$0 = nextInstance;\n for (\n nextInstance = rootOrSingletonContext;\n 8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n ) {\n if (!nextInstance) {\n nextInstance = null;\n break c;\n }\n JSCompiler_temp$jscomp$0 = getNextHydratable(\n JSCompiler_temp$jscomp$0.nextSibling\n );\n if (null === JSCompiler_temp$jscomp$0) {\n nextInstance = null;\n break c;\n }\n }\n nextInstance = JSCompiler_temp$jscomp$0;\n }\n null !== nextInstance\n ? ((workInProgress.memoizedState = {\n dehydrated: nextInstance,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n 18,\n null,\n null,\n 0\n )),\n (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n (JSCompiler_temp$jscomp$0.return = workInProgress),\n (workInProgress.child = JSCompiler_temp$jscomp$0),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (JSCompiler_temp$jscomp$0 = !0))\n : (JSCompiler_temp$jscomp$0 = !1);\n }\n JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n }\n nextInstance = workInProgress.memoizedState;\n if (\n null !== nextInstance &&\n ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n )\n return (\n isSuspenseInstanceFallback(nextInstance)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912),\n null\n );\n popSuspenseHandler(workInProgress);\n }\n nextInstance = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextInstance = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextInstance },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextInstance.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextInstance.sibling = nextProps),\n (workInProgress.child = nextInstance),\n (showFallback = workInProgress.child),\n (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n nextProps\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n }\n JSCompiler_temp$jscomp$0 = current.memoizedState;\n if (\n null !== JSCompiler_temp$jscomp$0 &&\n ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n null !== nextInstance)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = nextProps.fallback),\n (nextInstance = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n nextInstance\n )),\n (showFallback = createFiberFromFragment(\n showFallback,\n nextInstance,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2),\n (nextProps.return = workInProgress),\n (showFallback.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = showFallback));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextInstance))\n ) {\n JSCompiler_temp =\n nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (\n null !== JSCompiler_temp &&\n ((nextProps = renderLanes & -renderLanes),\n (nextProps =\n 0 !== (nextProps & 42)\n ? 1\n : getBumpedLaneForHydrationByLane(nextProps)),\n (nextProps =\n 0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n ? 0\n : nextProps),\n 0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n )\n throw (\n ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n \"$?\" === nextInstance.data\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = JSCompiler_temp$jscomp$0.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextInstance.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n ((idStack[idStackIndex++] = treeContextId),\n (idStack[idStackIndex++] = treeContextOverflow),\n (idStack[idStackIndex++] = treeContextProvider),\n (treeContextId = current.id),\n (treeContextOverflow = current.overflow),\n (treeContextProvider = workInProgress)),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = nextProps.fallback),\n (nextInstance = workInProgress.mode),\n (JSCompiler_temp$jscomp$0 = current.child),\n (digest = JSCompiler_temp$jscomp$0.sibling),\n (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags =\n JSCompiler_temp$jscomp$0.subtreeFlags & 65011712),\n null !== digest\n ? (showFallback = createWorkInProgress(digest, showFallback))\n : ((showFallback = createFiberFromFragment(\n showFallback,\n nextInstance,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2)),\n (showFallback.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n (nextProps = showFallback),\n (showFallback = workInProgress.child),\n (nextInstance = current.child.memoizedState),\n null === nextInstance\n ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n null !== JSCompiler_temp$jscomp$0\n ? ((digest = CacheContext._currentValue),\n (JSCompiler_temp$jscomp$0 =\n JSCompiler_temp$jscomp$0.parent !== digest\n ? { parent: digest, pool: digest }\n : JSCompiler_temp$jscomp$0))\n : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n (nextInstance = {\n baseLanes: nextInstance.baseLanes | renderLanes,\n cachePool: JSCompiler_temp$jscomp$0\n })),\n (showFallback.memoizedState = nextInstance),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n nextProps\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n offscreenProps = createFiberImplClass(22, offscreenProps, null, mode);\n offscreenProps.lanes = 0;\n offscreenProps.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n };\n return offscreenProps;\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n nextProps = suspenseStackCursor.current;\n if (0 !== (nextProps & 2))\n (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n else {\n if (null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n nextProps &= 1;\n }\n push(suspenseStackCursor, nextProps);\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode\n );\n break;\n case \"backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode\n );\n break;\n case \"together\":\n initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 13:\n var state = workInProgress.memoizedState;\n if (null !== state) {\n if (null !== state.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state = 0 !== (renderLanes & workInProgress.childLanes);\n state ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state) break;\n else return null;\n case 22:\n case 23:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(current, workInProgress, renderLanes)\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n current = workInProgress.pendingProps;\n var lazyComponent = workInProgress.elementType,\n init = lazyComponent._init;\n lazyComponent = init(lazyComponent._payload);\n workInProgress.type = lazyComponent;\n if (\"function\" === typeof lazyComponent)\n shouldConstruct(lazyComponent)\n ? ((current = resolveClassComponentProps(lazyComponent, current)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n )));\n else {\n if (void 0 !== lazyComponent && null !== lazyComponent)\n if (\n ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n ) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n );\n break a;\n } else if (init === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n );\n break a;\n }\n workInProgress =\n getComponentNameFromType(lazyComponent) || lazyComponent;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (lazyComponent = workInProgress.type),\n (init = resolveClassComponentProps(\n lazyComponent,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n lazyComponent,\n init,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n lazyComponent = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n init = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, lazyComponent, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n lazyComponent = nextState.cache;\n pushProvider(workInProgress, CacheContext, lazyComponent);\n lazyComponent !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n lazyComponent = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: lazyComponent,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = prevState),\n (workInProgress.memoizedState = prevState),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n );\n break a;\n } else if (lazyComponent !== init) {\n init = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError(init);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n );\n break a;\n } else {\n current = workInProgress.stateNode.containerInfo;\n switch (current.nodeType) {\n case 9:\n current = current.body;\n break;\n default:\n current =\n \"HTML\" === current.nodeName\n ? current.ownerDocument.body\n : current;\n }\n nextHydratableInstance = getNextHydratable(current.firstChild);\n hydrationParentFiber = workInProgress;\n isHydrating = !0;\n hydrationErrors = null;\n rootOrSingletonContext = !0;\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n lazyComponent,\n renderLanes\n );\n for (workInProgress.child = renderLanes; renderLanes; )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n }\n else {\n resetHydrationState();\n if (lazyComponent === init) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n );\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (lazyComponent = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (lazyComponent[internalInstanceKey] = workInProgress),\n (lazyComponent[internalPropsKey] = current),\n setInitialProperties(lazyComponent, renderLanes, current),\n markNodeAsHoistable(lazyComponent),\n (workInProgress.stateNode = lazyComponent))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((lazyComponent = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n (init = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = init),\n (nextHydratableInstance = getNextHydratable(\n lazyComponent.firstChild\n )))\n : (nextHydratableInstance = init)),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n markRef(current, workInProgress),\n null === current && (workInProgress.flags |= 4194304),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if ((init = lazyComponent = nextHydratableInstance))\n (lazyComponent = canHydrateInstance(\n lazyComponent,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== lazyComponent\n ? ((workInProgress.stateNode = lazyComponent),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(\n lazyComponent.firstChild\n )),\n (rootOrSingletonContext = !1),\n (init = !0))\n : (init = !1);\n init || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n init = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n lazyComponent = prevState.children;\n shouldSetTextContent(init, prevState)\n ? (lazyComponent = null)\n : null !== nextState &&\n shouldSetTextContent(init, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n ((init = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = init));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, lazyComponent, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (lazyComponent = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n lazyComponent,\n renderLanes\n ))\n : reconcileChildren(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n ),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (lazyComponent = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n reconcileChildren(\n current,\n workInProgress,\n lazyComponent.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 9:\n return (\n (init = workInProgress.type._context),\n (lazyComponent = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n (init = readContext(init)),\n (lazyComponent = lazyComponent(init)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 31:\n return (\n (lazyComponent = workInProgress.pendingProps),\n (renderLanes = workInProgress.mode),\n (lazyComponent = {\n mode: lazyComponent.mode,\n children: lazyComponent.children\n }),\n null === current\n ? ((renderLanes = mountWorkInProgressOffscreenFiber(\n lazyComponent,\n renderLanes\n )),\n (renderLanes.ref = workInProgress.ref),\n (workInProgress.child = renderLanes),\n (renderLanes.return = workInProgress),\n (workInProgress = renderLanes))\n : ((renderLanes = createWorkInProgress(current.child, lazyComponent)),\n (renderLanes.ref = workInProgress.ref),\n (workInProgress.child = renderLanes),\n (renderLanes.return = workInProgress),\n (workInProgress = renderLanes)),\n workInProgress\n );\n case 22:\n return updateOffscreenComponent(current, workInProgress, renderLanes);\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (lazyComponent = readContext(CacheContext)),\n null === current\n ? ((init = peekCacheFromPool()),\n null === init &&\n ((init = workInProgressRoot),\n (prevState = createCache()),\n (init.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && (init.pooledCacheLanes |= renderLanes),\n (init = prevState)),\n (workInProgress.memoizedState = {\n parent: lazyComponent,\n cache: init\n }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, init))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n (init = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n init.parent !== lazyComponent\n ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n (workInProgress.memoizedState = init),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n init),\n pushProvider(workInProgress, CacheContext, lazyComponent))\n : ((lazyComponent = prevState.cache),\n pushProvider(workInProgress, CacheContext, lazyComponent),\n lazyComponent !== init.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n resource = suspenseHandlerStackCursor.current;\n if (\n null !== resource &&\n ((workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null !== shellBoundary\n : ((workInProgressRootRenderLanes & 62914560) !==\n workInProgressRootRenderLanes &&\n 0 === (workInProgressRootRenderLanes & 536870912)) ||\n resource !== shellBoundary)\n )\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n workInProgress.flags |= 8192;\n }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$113 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$113 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$113\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$113.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$114 = completedWork.child; null !== child$114; )\n (newChildLanes |= child$114.lanes | child$114.childLanes),\n (subtreeFlags |= child$114.subtreeFlags & 65011712),\n (subtreeFlags |= child$114.flags & 65011712),\n (child$114.return = completedWork),\n (child$114 = child$114.sibling);\n else\n for (child$114 = completedWork.child; null !== child$114; )\n (newChildLanes |= child$114.lanes | child$114.childLanes),\n (subtreeFlags |= child$114.subtreeFlags),\n (subtreeFlags |= child$114.flags),\n (child$114.return = completedWork),\n (child$114 = child$114.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 31:\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n upgradeHydrationErrorsToRecoverable());\n bubbleProperties(workInProgress);\n return null;\n case 26:\n return (\n (renderLanes = workInProgress.memoizedState),\n null === current\n ? (markUpdate(workInProgress),\n null !== renderLanes\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217)))\n : renderLanes\n ? renderLanes !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217)),\n null\n );\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n var type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n renderLanes = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, current);\n else {\n type = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (current) {\n case 1:\n current = type.createElementNS(\n \"http://www.w3.org/2000/svg\",\n renderLanes\n );\n break;\n case 2:\n current = type.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n renderLanes\n );\n break;\n default:\n switch (renderLanes) {\n case \"svg\":\n current = type.createElementNS(\n \"http://www.w3.org/2000/svg\",\n renderLanes\n );\n break;\n case \"math\":\n current = type.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n renderLanes\n );\n break;\n case \"script\":\n current = type.createElement(\"div\");\n current.innerHTML = \"<script>\\x3c/script>\";\n current = current.removeChild(current.firstChild);\n break;\n case \"select\":\n current =\n \"string\" === typeof newProps.is\n ? type.createElement(\"select\", { is: newProps.is })\n : type.createElement(\"select\");\n newProps.multiple\n ? (current.multiple = !0)\n : newProps.size && (current.size = newProps.size);\n break;\n default:\n current =\n \"string\" === typeof newProps.is\n ? type.createElement(renderLanes, { is: newProps.is })\n : type.createElement(renderLanes);\n }\n }\n current[internalInstanceKey] = workInProgress;\n current[internalPropsKey] = newProps;\n a: for (type = workInProgress.child; null !== type; ) {\n if (5 === type.tag || 6 === type.tag)\n current.appendChild(type.stateNode);\n else if (4 !== type.tag && 27 !== type.tag && null !== type.child) {\n type.child.return = type;\n type = type.child;\n continue;\n }\n if (type === workInProgress) break a;\n for (; null === type.sibling; ) {\n if (null === type.return || type.return === workInProgress)\n break a;\n type = type.return;\n }\n type.sibling.return = type.return;\n type = type.sibling;\n }\n workInProgress.stateNode = current;\n a: switch (\n (setInitialProperties(current, renderLanes, newProps), renderLanes)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n current = !!newProps.autoFocus;\n break a;\n case \"img\":\n current = !0;\n break a;\n default:\n current = !1;\n }\n current && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n workInProgress.flags &= -16777217;\n return null;\n case 6:\n if (current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (\"string\" !== typeof newProps && null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n current = rootInstanceStackCursor.current;\n if (popHydrationState(workInProgress)) {\n current = workInProgress.stateNode;\n renderLanes = workInProgress.memoizedProps;\n newProps = null;\n type = hydrationParentFiber;\n if (null !== type)\n switch (type.tag) {\n case 27:\n case 5:\n newProps = type.memoizedProps;\n }\n current[internalInstanceKey] = workInProgress;\n current =\n current.nodeValue === renderLanes ||\n (null !== newProps && !0 === newProps.suppressHydrationWarning) ||\n checkForUnmatchedText(current.nodeValue, renderLanes)\n ? !0\n : !1;\n current || throwOnHydrationMismatch(workInProgress);\n } else\n (current =\n getOwnerDocumentFromRootContainer(current).createTextNode(\n newProps\n )),\n (current[internalInstanceKey] = workInProgress),\n (workInProgress.stateNode = current);\n }\n bubbleProperties(workInProgress);\n return null;\n case 13:\n newProps = workInProgress.memoizedState;\n if (\n null === current ||\n (null !== current.memoizedState &&\n null !== current.memoizedState.dehydrated)\n ) {\n type = popHydrationState(workInProgress);\n if (null !== newProps && null !== newProps.dehydrated) {\n if (null === current) {\n if (!type) throw Error(formatProdErrorMessage(318));\n type = workInProgress.memoizedState;\n type = null !== type ? type.dehydrated : null;\n if (!type) throw Error(formatProdErrorMessage(317));\n type[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n type = !1;\n } else\n (type = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = type),\n (type = !0);\n if (!type) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n }\n popSuspenseHandler(workInProgress);\n if (0 !== (workInProgress.flags & 128))\n return (workInProgress.lanes = renderLanes), workInProgress;\n renderLanes = null !== newProps;\n current = null !== current && null !== current.memoizedState;\n if (renderLanes) {\n newProps = workInProgress.child;\n type = null;\n null !== newProps.alternate &&\n null !== newProps.alternate.memoizedState &&\n null !== newProps.alternate.memoizedState.cachePool &&\n (type = newProps.alternate.memoizedState.cachePool.pool);\n var cache$127 = null;\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (cache$127 = newProps.memoizedState.cachePool.pool);\n cache$127 !== type && (newProps.flags |= 2048);\n }\n renderLanes !== current &&\n renderLanes &&\n (workInProgress.child.flags |= 8192);\n scheduleRetryEffect(workInProgress, workInProgress.updateQueue);\n bubbleProperties(workInProgress);\n return null;\n case 4:\n return (\n popHostContainer(),\n null === current &&\n listenToAllSupportedEvents(workInProgress.stateNode.containerInfo),\n bubbleProperties(workInProgress),\n null\n );\n case 10:\n return (\n popProvider(workInProgress.type), bubbleProperties(workInProgress), null\n );\n case 19:\n pop(suspenseStackCursor);\n type = workInProgress.memoizedState;\n if (null === type) return bubbleProperties(workInProgress), null;\n newProps = 0 !== (workInProgress.flags & 128);\n cache$127 = type.rendering;\n if (null === cache$127)\n if (newProps) cutOffTailIfNeeded(type, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n cache$127 = findFirstSuspended(current);\n if (null !== cache$127) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(type, !1);\n current = cache$127.updateQueue;\n workInProgress.updateQueue = current;\n scheduleRetryEffect(workInProgress, current);\n workInProgress.subtreeFlags = 0;\n current = renderLanes;\n for (renderLanes = workInProgress.child; null !== renderLanes; )\n resetWorkInProgress(renderLanes, current),\n (renderLanes = renderLanes.sibling);\n push(\n suspenseStackCursor,\n (suspenseStackCursor.current & 1) | 2\n );\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== type.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (newProps = !0),\n cutOffTailIfNeeded(type, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!newProps)\n if (((current = findFirstSuspended(cache$127)), null !== current)) {\n if (\n ((workInProgress.flags |= 128),\n (newProps = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(type, !0),\n null === type.tail &&\n \"hidden\" === type.tailMode &&\n !cache$127.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - type.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (newProps = !0),\n cutOffTailIfNeeded(type, !1),\n (workInProgress.lanes = 4194304));\n type.isBackwards\n ? ((cache$127.sibling = workInProgress.child),\n (workInProgress.child = cache$127))\n : ((current = type.last),\n null !== current\n ? (current.sibling = cache$127)\n : (workInProgress.child = cache$127),\n (type.last = cache$127));\n }\n if (null !== type.tail)\n return (\n (workInProgress = type.tail),\n (type.rendering = workInProgress),\n (type.tail = workInProgress.sibling),\n (type.renderingStartTime = now()),\n (workInProgress.sibling = null),\n (current = suspenseStackCursor.current),\n push(suspenseStackCursor, newProps ? (current & 1) | 2 : current & 1),\n workInProgress\n );\n bubbleProperties(workInProgress);\n return null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n (newProps = null !== workInProgress.memoizedState),\n null !== current\n ? (null !== current.memoizedState) !== newProps &&\n (workInProgress.flags |= 8192)\n : newProps && (workInProgress.flags |= 8192),\n newProps\n ? 0 !== (renderLanes & 536870912) &&\n 0 === (workInProgress.flags & 128) &&\n (bubbleProperties(workInProgress),\n workInProgress.subtreeFlags & 6 && (workInProgress.flags |= 8192))\n : bubbleProperties(workInProgress),\n (renderLanes = workInProgress.updateQueue),\n null !== renderLanes &&\n scheduleRetryEffect(workInProgress, renderLanes.retryQueue),\n (renderLanes = null),\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (renderLanes = current.memoizedState.cachePool.pool),\n (newProps = null),\n null !== workInProgress.memoizedState &&\n null !== workInProgress.memoizedState.cachePool &&\n (newProps = workInProgress.memoizedState.cachePool.pool),\n newProps !== renderLanes && (workInProgress.flags |= 2048),\n null !== current && pop(resumedCache),\n null\n );\n case 24:\n return (\n (renderLanes = null),\n null !== current && (renderLanes = current.memoizedState.cache),\n workInProgress.memoizedState.cache !== renderLanes &&\n (workInProgress.flags |= 2048),\n popProvider(CacheContext),\n bubbleProperties(workInProgress),\n null\n );\n case 25:\n return null;\n case 30:\n return null;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nfunction unwindWork(current, workInProgress) {\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 1:\n return (\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 3:\n return (\n popProvider(CacheContext),\n popHostContainer(),\n (current = workInProgress.flags),\n 0 !== (current & 65536) && 0 === (current & 128)\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 26:\n case 27:\n case 5:\n return popHostContext(workInProgress), null;\n case 13:\n popSuspenseHandler(workInProgress);\n current = workInProgress.memoizedState;\n if (null !== current && null !== current.dehydrated) {\n if (null === workInProgress.alternate)\n throw Error(formatProdErrorMessage(340));\n resetHydrationState();\n }\n current = workInProgress.flags;\n return current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null;\n case 19:\n return pop(suspenseStackCursor), null;\n case 4:\n return popHostContainer(), null;\n case 10:\n return popProvider(workInProgress.type), null;\n case 22:\n case 23:\n return (\n popSuspenseHandler(workInProgress),\n popHiddenContext(),\n null !== current && pop(resumedCache),\n (current = workInProgress.flags),\n current & 65536\n ? ((workInProgress.flags = (current & -65537) | 128), workInProgress)\n : null\n );\n case 24:\n return popProvider(CacheContext), null;\n case 25:\n return null;\n default:\n return null;\n }\n}\nfunction unwindInterruptedWork(current, interruptedWork) {\n popTreeContext(interruptedWork);\n switch (interruptedWork.tag) {\n case 3:\n popProvider(CacheContext);\n popHostContainer();\n break;\n case 26:\n case 27:\n case 5:\n popHostContext(interruptedWork);\n break;\n case 4:\n popHostContainer();\n break;\n case 13:\n popSuspenseHandler(interruptedWork);\n break;\n case 19:\n pop(suspenseStackCursor);\n break;\n case 10:\n popProvider(interruptedWork.type);\n break;\n case 22:\n case 23:\n popSuspenseHandler(interruptedWork);\n popHiddenContext();\n null !== current && pop(resumedCache);\n break;\n case 24:\n popProvider(CacheContext);\n }\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0,\n destroy_ = destroy;\n try {\n destroy_();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = current.stateNode;\n break;\n case 30:\n instanceToUse = current.stateNode;\n break;\n default:\n instanceToUse = current.stateNode;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$143) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$143);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n (27 === fiber.tag && isSingletonScope(fiber.type)) ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag && 6 !== fiber.tag && 18 !== fiber.tag;\n\n ) {\n if (27 === fiber.tag && isSingletonScope(fiber.type)) continue a;\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? (9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent\n ).insertBefore(node, before)\n : ((before =\n 9 === parent.nodeType\n ? parent.body\n : \"HTML\" === parent.nodeName\n ? parent.ownerDocument.body\n : parent),\n before.appendChild(node),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (\n 4 !== tag &&\n (27 === tag &&\n isSingletonScope(node.type) &&\n ((parent = node.stateNode), (before = null)),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (\n 4 !== tag &&\n (27 === tag && isSingletonScope(node.type) && (parent = node.stateNode),\n (node = node.child),\n null !== node)\n )\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nfunction commitHostSingletonAcquisition(finishedWork) {\n var singleton = finishedWork.stateNode,\n props = finishedWork.memoizedProps;\n try {\n for (\n var type = finishedWork.type, attributes = singleton.attributes;\n attributes.length;\n\n )\n singleton.removeAttributeNode(attributes[0]);\n setInitialProperties(singleton, type, props);\n singleton[internalInstanceKey] = finishedWork;\n singleton[internalPropsKey] = props;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1024) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset,\n JSCompiler_temp.elementType === JSCompiler_temp.type\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$142) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$142\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (\n flags & 64 &&\n ((finishedRoot = finishedWork.updateQueue), null !== finishedRoot)\n ) {\n current = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n current = finishedWork.child.stateNode;\n break;\n case 1:\n current = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(finishedRoot, current);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 27:\n null === current &&\n flags & 4 &&\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n flags & 64 &&\n ((finishedRoot = finishedWork.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated),\n null !== finishedRoot &&\n ((finishedWork = retryDehydratedSuspenseBoundary.bind(\n null,\n finishedWork\n )),\n registerSuspenseInstanceRetry(finishedRoot, finishedWork))));\n break;\n case 22:\n flags = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!flags) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n prevProps = offscreenSubtreeIsHidden;\n var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = flags;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevProps;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n break;\n case 30:\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n isSingletonScope(deletedFiber.type) &&\n ((hostParent = deletedFiber.stateNode), (hostParentIsContainer = !1));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n releaseSingletonInstance(deletedFiber.stateNode);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (9 === hostParent.nodeType\n ? hostParent.body\n : \"HTML\" === hostParent.nodeName\n ? hostParent.ownerDocument.body\n : hostParent\n ).removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((finishedRoot = hostParent),\n clearSuspenseBoundary(\n 9 === finishedRoot.nodeType\n ? finishedRoot.body\n : \"HTML\" === finishedRoot.nodeName\n ? finishedRoot.ownerDocument.body\n : finishedRoot,\n deletedFiber.stateNode\n ),\n retryIfBlockedOn(finishedRoot))\n : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n retryCache.has(wakeable) ||\n (retryCache.add(wakeable), wakeable.then(retry, retry));\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n if (isSingletonScope(parent.type)) {\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n }\n break;\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13878)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href || \"\" === current.href\n ? null\n : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n null !== current &&\n flags & 4 &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n break;\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n hoistableRoot = null !== finishedWork.memoizedState;\n var wasHidden = null !== current && null !== current.memoizedState,\n prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden || hoistableRoot;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || wasHidden;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n commitReconciliationEffects(finishedWork);\n if (flags & 8192)\n a: for (\n root = finishedWork.stateNode,\n root._visibility = hoistableRoot\n ? root._visibility & -2\n : root._visibility | 1,\n hoistableRoot &&\n (null === current ||\n wasHidden ||\n offscreenSubtreeIsHidden ||\n offscreenSubtreeWasHidden ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n current = null,\n root = finishedWork;\n ;\n\n ) {\n if (5 === root.tag || 26 === root.tag) {\n if (null === current) {\n wasHidden = current = root;\n try {\n if (((currentResource = wasHidden.stateNode), hoistableRoot))\n (maybeNodes = currentResource.style),\n \"function\" === typeof maybeNodes.setProperty\n ? maybeNodes.setProperty(\"display\", \"none\", \"important\")\n : (maybeNodes.display = \"none\");\n else {\n i = wasHidden.stateNode;\n var styleProp = wasHidden.memoizedProps.style,\n display =\n void 0 !== styleProp &&\n null !== styleProp &&\n styleProp.hasOwnProperty(\"display\")\n ? styleProp.display\n : null;\n i.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n wasHidden.stateNode.nodeValue = hoistableRoot\n ? \"\"\n : wasHidden.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(wasHidden, wasHidden.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 30:\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n for (\n var hostParentFiber, parentFiber = finishedWork.return;\n null !== parentFiber;\n\n ) {\n if (isHostParent(parentFiber)) {\n hostParentFiber = parentFiber;\n break;\n }\n parentFiber = parentFiber.return;\n }\n if (null == hostParentFiber) throw Error(formatProdErrorMessage(160));\n switch (hostParentFiber.tag) {\n case 27:\n var parent = hostParentFiber.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent);\n break;\n case 5:\n var parent$144 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$144, \"\"), (hostParentFiber.flags &= -33));\n var before$145 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$145, parent$144);\n break;\n case 3:\n case 4:\n var parent$146 = hostParentFiber.stateNode.containerInfo,\n before$147 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$147,\n parent$146\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 27:\n releaseSingletonInstance(finishedWork.stateNode);\n case 26:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 30:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n commitHostSingletonAcquisition(finishedWork);\n case 26:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 30:\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 1:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 13:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n id = finishedWork.alternate;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 2\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256)\n ));\n flags & 2048 && commitOffscreenPassiveMountEffects(id, finishedWork);\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 2\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 2),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(fiber);\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(fiber);\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(fiber);\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(fiber),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(fiber));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(fiber);\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 2 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 2 &&\n ((i._visibility &= -3),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nvar DefaultAsyncDispatcher = {\n getCacheForType: function (resourceType) {\n var cache = readContext(CacheContext),\n cacheForType = cache.data.get(resourceType);\n void 0 === cacheForType &&\n ((cacheForType = resourceType()),\n cache.data.set(resourceType, cacheForType));\n return cacheForType;\n }\n },\n PossiblyWeakMap = \"function\" === typeof WeakMap ? WeakMap : Map,\n executionContext = 0,\n workInProgressRoot = null,\n workInProgress = null,\n workInProgressRootRenderLanes = 0,\n workInProgressSuspendedReason = 0,\n workInProgressThrownValue = null,\n workInProgressRootDidSkipSuspendedSiblings = !1,\n workInProgressRootIsPrerendering = !1,\n workInProgressRootDidAttachPingListener = !1,\n entangledRenderLanes = 0,\n workInProgressRootExitStatus = 0,\n workInProgressRootSkippedLanes = 0,\n workInProgressRootInterleavedUpdatedLanes = 0,\n workInProgressRootPingedLanes = 0,\n workInProgressDeferredLane = 0,\n workInProgressSuspendedRetryLanes = 0,\n workInProgressRootConcurrentErrors = null,\n workInProgressRootRecoverableErrors = null,\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1,\n globalMostRecentFallbackTime = 0,\n workInProgressRootRenderTargetTime = Infinity,\n workInProgressTransitions = null,\n legacyErrorBoundariesThatAlreadyFailed = null,\n pendingEffectsStatus = 0,\n pendingEffectsRoot = null,\n pendingFinishedWork = null,\n pendingEffectsLanes = 0,\n pendingEffectsRemainingLanes = 0,\n pendingPassiveTransitions = null,\n pendingRecoverableErrors = null,\n nestedUpdateCount = 0,\n rootWithNestedUpdates = null;\nfunction requestUpdateLane() {\n if (0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes)\n return workInProgressRootRenderLanes & -workInProgressRootRenderLanes;\n if (null !== ReactSharedInternals.T) {\n var actionScopeLane = currentEntangledLane;\n return 0 !== actionScopeLane ? actionScopeLane : requestTransitionLane();\n }\n return resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n 0 === workInProgressDeferredLane &&\n (workInProgressDeferredLane =\n 0 === (workInProgressRootRenderLanes & 536870912) || isHydrating\n ? claimNextTransitionLane()\n : 536870912);\n var suspenseHandler = suspenseHandlerStackCursor.current;\n null !== suspenseHandler && (suspenseHandler.flags |= 32);\n return workInProgressDeferredLane;\n}\nfunction scheduleUpdateOnFiber(root, fiber, lane) {\n if (\n (root === workInProgressRoot &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n prepareFreshStack(root, 0),\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n markRootUpdated$1(root, lane);\n if (0 === (executionContext & 2) || root !== workInProgressRoot)\n root === workInProgressRoot &&\n (0 === (executionContext & 2) &&\n (workInProgressRootInterleavedUpdatedLanes |= lane),\n 4 === workInProgressRootExitStatus &&\n markRootSuspended(\n root,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n )),\n ensureRootIsScheduled(root);\n}\nfunction performWorkOnRoot(root$jscomp$0, lanes, forceSync) {\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n var shouldTimeSlice =\n (!forceSync &&\n 0 === (lanes & 124) &&\n 0 === (lanes & root$jscomp$0.expiredLanes)) ||\n checkIfRootIsPrerendering(root$jscomp$0, lanes),\n exitStatus = shouldTimeSlice\n ? renderRootConcurrent(root$jscomp$0, lanes)\n : renderRootSync(root$jscomp$0, lanes, !0),\n renderWasConcurrent = shouldTimeSlice;\n do {\n if (0 === exitStatus) {\n workInProgressRootIsPrerendering &&\n !shouldTimeSlice &&\n markRootSuspended(root$jscomp$0, lanes, 0, !1);\n break;\n } else {\n forceSync = root$jscomp$0.current.alternate;\n if (\n renderWasConcurrent &&\n !isRenderConsistentWithExternalStores(forceSync)\n ) {\n exitStatus = renderRootSync(root$jscomp$0, lanes, !1);\n renderWasConcurrent = !1;\n continue;\n }\n if (2 === exitStatus) {\n renderWasConcurrent = lanes;\n if (root$jscomp$0.errorRecoveryDisabledLanes & renderWasConcurrent)\n var JSCompiler_inline_result = 0;\n else\n (JSCompiler_inline_result = root$jscomp$0.pendingLanes & -536870913),\n (JSCompiler_inline_result =\n 0 !== JSCompiler_inline_result\n ? JSCompiler_inline_result\n : JSCompiler_inline_result & 536870912\n ? 536870912\n : 0);\n if (0 !== JSCompiler_inline_result) {\n lanes = JSCompiler_inline_result;\n a: {\n var root = root$jscomp$0;\n exitStatus = workInProgressRootConcurrentErrors;\n var wasRootDehydrated = root.current.memoizedState.isDehydrated;\n wasRootDehydrated &&\n (prepareFreshStack(root, JSCompiler_inline_result).flags |= 256);\n JSCompiler_inline_result = renderRootSync(\n root,\n JSCompiler_inline_result,\n !1\n );\n if (2 !== JSCompiler_inline_result) {\n if (\n workInProgressRootDidAttachPingListener &&\n !wasRootDehydrated\n ) {\n root.errorRecoveryDisabledLanes |= renderWasConcurrent;\n workInProgressRootInterleavedUpdatedLanes |=\n renderWasConcurrent;\n exitStatus = 4;\n break a;\n }\n renderWasConcurrent = workInProgressRootRecoverableErrors;\n workInProgressRootRecoverableErrors = exitStatus;\n null !== renderWasConcurrent &&\n (null === workInProgressRootRecoverableErrors\n ? (workInProgressRootRecoverableErrors = renderWasConcurrent)\n : workInProgressRootRecoverableErrors.push.apply(\n workInProgressRootRecoverableErrors,\n renderWasConcurrent\n ));\n }\n exitStatus = JSCompiler_inline_result;\n }\n renderWasConcurrent = !1;\n if (2 !== exitStatus) continue;\n }\n }\n if (1 === exitStatus) {\n prepareFreshStack(root$jscomp$0, 0);\n markRootSuspended(root$jscomp$0, lanes, 0, !0);\n break;\n }\n a: {\n shouldTimeSlice = root$jscomp$0;\n renderWasConcurrent = exitStatus;\n switch (renderWasConcurrent) {\n case 0:\n case 1:\n throw Error(formatProdErrorMessage(345));\n case 4:\n if ((lanes & 4194048) !== lanes) break;\n case 6:\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n break a;\n case 2:\n workInProgressRootRecoverableErrors = null;\n break;\n case 3:\n case 5:\n break;\n default:\n throw Error(formatProdErrorMessage(329));\n }\n if (\n (lanes & 62914560) === lanes &&\n ((exitStatus = globalMostRecentFallbackTime + 300 - now()),\n 10 < exitStatus)\n ) {\n markRootSuspended(\n shouldTimeSlice,\n lanes,\n workInProgressDeferredLane,\n !workInProgressRootDidSkipSuspendedSiblings\n );\n if (0 !== getNextLanes(shouldTimeSlice, 0, !0)) break a;\n shouldTimeSlice.timeoutHandle = scheduleTimeout(\n commitRootWhenReady.bind(\n null,\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n 2,\n -0,\n 0\n ),\n exitStatus\n );\n break a;\n }\n commitRootWhenReady(\n shouldTimeSlice,\n forceSync,\n workInProgressRootRecoverableErrors,\n workInProgressTransitions,\n workInProgressRootDidIncludeRecursiveRenderUpdate,\n lanes,\n workInProgressDeferredLane,\n workInProgressRootInterleavedUpdatedLanes,\n workInProgressSuspendedRetryLanes,\n workInProgressRootDidSkipSuspendedSiblings,\n renderWasConcurrent,\n 0,\n -0,\n 0\n );\n }\n }\n break;\n } while (1);\n ensureRootIsScheduled(root$jscomp$0);\n}\nfunction commitRootWhenReady(\n root,\n finishedWork,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n lanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n didSkipSuspendedSiblings,\n exitStatus,\n suspendedCommitReason,\n completedRenderStartTime,\n completedRenderEndTime\n) {\n root.timeoutHandle = -1;\n suspendedCommitReason = finishedWork.subtreeFlags;\n if (\n suspendedCommitReason & 8192 ||\n 16785408 === (suspendedCommitReason & 16785408)\n )\n if (\n ((suspendedState = { stylesheets: null, count: 0, unsuspend: noop }),\n accumulateSuspenseyCommitOnFiber(finishedWork),\n (suspendedCommitReason = waitForCommitToBeReady()),\n null !== suspendedCommitReason)\n ) {\n root.cancelPendingCommit = suspendedCommitReason(\n commitRoot.bind(\n null,\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes,\n exitStatus,\n 1,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\n commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n}\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n for (var node = finishedWork; ; ) {\n var tag = node.tag;\n if (\n (0 === tag || 11 === tag || 15 === tag) &&\n node.flags & 16384 &&\n ((tag = node.updateQueue),\n null !== tag && ((tag = tag.stores), null !== tag))\n )\n for (var i = 0; i < tag.length; i++) {\n var check = tag[i],\n getSnapshot = check.getSnapshot;\n check = check.value;\n try {\n if (!objectIs(getSnapshot(), check)) return !1;\n } catch (error) {\n return !1;\n }\n }\n tag = node.child;\n if (node.subtreeFlags & 16384 && null !== tag)\n (tag.return = node), (node = tag);\n else {\n if (node === finishedWork) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === finishedWork) return !0;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n }\n return !0;\n}\nfunction markRootSuspended(\n root,\n suspendedLanes,\n spawnedLane,\n didAttemptEntireTree\n) {\n suspendedLanes &= ~workInProgressRootPingedLanes;\n suspendedLanes &= ~workInProgressRootInterleavedUpdatedLanes;\n root.suspendedLanes |= suspendedLanes;\n root.pingedLanes &= ~suspendedLanes;\n didAttemptEntireTree && (root.warmLanes |= suspendedLanes);\n didAttemptEntireTree = root.expirationTimes;\n for (var lanes = suspendedLanes; 0 < lanes; ) {\n var index$4 = 31 - clz32(lanes),\n lane = 1 << index$4;\n didAttemptEntireTree[index$4] = -1;\n lanes &= ~lane;\n }\n 0 !== spawnedLane &&\n markSpawnedDeferredLane(root, spawnedLane, suspendedLanes);\n}\nfunction flushSyncWork$1() {\n return 0 === (executionContext & 6)\n ? (flushSyncWorkAcrossRoots_impl(0, !1), !1)\n : !0;\n}\nfunction resetWorkInProgressStack() {\n if (null !== workInProgress) {\n if (0 === workInProgressSuspendedReason)\n var interruptedWork = workInProgress.return;\n else\n (interruptedWork = workInProgress),\n (lastContextDependency = currentlyRenderingFiber$1 = null),\n resetHooksOnUnwind(interruptedWork),\n (thenableState = null),\n (thenableIndexCounter = 0),\n (interruptedWork = workInProgress);\n for (; null !== interruptedWork; )\n unwindInterruptedWork(interruptedWork.alternate, interruptedWork),\n (interruptedWork = interruptedWork.return);\n workInProgress = null;\n }\n}\nfunction prepareFreshStack(root, lanes) {\n var timeoutHandle = root.timeoutHandle;\n -1 !== timeoutHandle &&\n ((root.timeoutHandle = -1), cancelTimeout(timeoutHandle));\n timeoutHandle = root.cancelPendingCommit;\n null !== timeoutHandle &&\n ((root.cancelPendingCommit = null), timeoutHandle());\n resetWorkInProgressStack();\n workInProgressRoot = root;\n workInProgress = timeoutHandle = createWorkInProgress(root.current, null);\n workInProgressRootRenderLanes = lanes;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n workInProgressRootDidSkipSuspendedSiblings = !1;\n workInProgressRootIsPrerendering = checkIfRootIsPrerendering(root, lanes);\n workInProgressRootDidAttachPingListener = !1;\n workInProgressSuspendedRetryLanes =\n workInProgressDeferredLane =\n workInProgressRootPingedLanes =\n workInProgressRootInterleavedUpdatedLanes =\n workInProgressRootSkippedLanes =\n workInProgressRootExitStatus =\n 0;\n workInProgressRootRecoverableErrors = workInProgressRootConcurrentErrors =\n null;\n workInProgressRootDidIncludeRecursiveRenderUpdate = !1;\n 0 !== (lanes & 8) && (lanes |= lanes & 32);\n var allEntangledLanes = root.entangledLanes;\n if (0 !== allEntangledLanes)\n for (\n root = root.entanglements, allEntangledLanes &= lanes;\n 0 < allEntangledLanes;\n\n ) {\n var index$2 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$2;\n lanes |= root[index$2];\n allEntangledLanes &= ~lane;\n }\n entangledRenderLanes = lanes;\n finishQueueingConcurrentUpdates();\n return timeoutHandle;\n}\nfunction handleThrow(root, thrownValue) {\n currentlyRenderingFiber = null;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n thrownValue === SuspenseException || thrownValue === SuspenseActionException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 3))\n : thrownValue === SuspenseyCommitException\n ? ((thrownValue = getSuspendedThenable()),\n (workInProgressSuspendedReason = 4))\n : (workInProgressSuspendedReason =\n thrownValue === SelectiveHydrationException\n ? 8\n : null !== thrownValue &&\n \"object\" === typeof thrownValue &&\n \"function\" === typeof thrownValue.then\n ? 6\n : 1);\n workInProgressThrownValue = thrownValue;\n null === workInProgress &&\n ((workInProgressRootExitStatus = 1),\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n ));\n}\nfunction pushDispatcher() {\n var prevDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = ContextOnlyDispatcher;\n return null === prevDispatcher ? ContextOnlyDispatcher : prevDispatcher;\n}\nfunction pushAsyncDispatcher() {\n var prevAsyncDispatcher = ReactSharedInternals.A;\n ReactSharedInternals.A = DefaultAsyncDispatcher;\n return prevAsyncDispatcher;\n}\nfunction renderDidSuspendDelayIfPossible() {\n workInProgressRootExitStatus = 4;\n workInProgressRootDidSkipSuspendedSiblings ||\n ((workInProgressRootRenderLanes & 4194048) !==\n workInProgressRootRenderLanes &&\n null !== suspenseHandlerStackCursor.current) ||\n (workInProgressRootIsPrerendering = !0);\n (0 === (workInProgressRootSkippedLanes & 134217727) &&\n 0 === (workInProgressRootInterleavedUpdatedLanes & 134217727)) ||\n null === workInProgressRoot ||\n markRootSuspended(\n workInProgressRoot,\n workInProgressRootRenderLanes,\n workInProgressDeferredLane,\n !1\n );\n}\nfunction renderRootSync(root, lanes, shouldYieldForPrerendering) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes)\n (workInProgressTransitions = null), prepareFreshStack(root, lanes);\n lanes = !1;\n var exitStatus = workInProgressRootExitStatus;\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n var unitOfWork = workInProgress,\n thrownValue = workInProgressThrownValue;\n switch (workInProgressSuspendedReason) {\n case 8:\n resetWorkInProgressStack();\n exitStatus = 6;\n break a;\n case 3:\n case 2:\n case 9:\n case 6:\n null === suspenseHandlerStackCursor.current && (lanes = !0);\n var reason = workInProgressSuspendedReason;\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n if (\n shouldYieldForPrerendering &&\n workInProgressRootIsPrerendering\n ) {\n exitStatus = 0;\n break a;\n }\n break;\n default:\n (reason = workInProgressSuspendedReason),\n (workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, unitOfWork, thrownValue, reason);\n }\n }\n workLoopSync();\n exitStatus = workInProgressRootExitStatus;\n break;\n } catch (thrownValue$167) {\n handleThrow(root, thrownValue$167);\n }\n while (1);\n lanes && root.shellSuspendCounter++;\n lastContextDependency = currentlyRenderingFiber$1 = null;\n executionContext = prevExecutionContext;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n null === workInProgress &&\n ((workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0),\n finishQueueingConcurrentUpdates());\n return exitStatus;\n}\nfunction workLoopSync() {\n for (; null !== workInProgress; ) performUnitOfWork(workInProgress);\n}\nfunction renderRootConcurrent(root, lanes) {\n var prevExecutionContext = executionContext;\n executionContext |= 2;\n var prevDispatcher = pushDispatcher(),\n prevAsyncDispatcher = pushAsyncDispatcher();\n workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes\n ? ((workInProgressTransitions = null),\n (workInProgressRootRenderTargetTime = now() + 500),\n prepareFreshStack(root, lanes))\n : (workInProgressRootIsPrerendering = checkIfRootIsPrerendering(\n root,\n lanes\n ));\n a: do\n try {\n if (0 !== workInProgressSuspendedReason && null !== workInProgress) {\n lanes = workInProgress;\n var thrownValue = workInProgressThrownValue;\n b: switch (workInProgressSuspendedReason) {\n case 1:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 1);\n break;\n case 2:\n case 9:\n if (isThenableResolved(thrownValue)) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n replaySuspendedUnitOfWork(lanes);\n break;\n }\n lanes = function () {\n (2 !== workInProgressSuspendedReason &&\n 9 !== workInProgressSuspendedReason) ||\n workInProgressRoot !== root ||\n (workInProgressSuspendedReason = 7);\n ensureRootIsScheduled(root);\n };\n thrownValue.then(lanes, lanes);\n break a;\n case 3:\n workInProgressSuspendedReason = 7;\n break a;\n case 4:\n workInProgressSuspendedReason = 5;\n break a;\n case 7:\n isThenableResolved(thrownValue)\n ? ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n replaySuspendedUnitOfWork(lanes))\n : ((workInProgressSuspendedReason = 0),\n (workInProgressThrownValue = null),\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 7));\n break;\n case 5:\n var resource = null;\n switch (workInProgress.tag) {\n case 26:\n resource = workInProgress.memoizedState;\n case 5:\n case 27:\n var hostFiber = workInProgress;\n if (resource ? preloadResource(resource) : 1) {\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n var sibling = hostFiber.sibling;\n if (null !== sibling) workInProgress = sibling;\n else {\n var returnFiber = hostFiber.return;\n null !== returnFiber\n ? ((workInProgress = returnFiber),\n completeUnitOfWork(returnFiber))\n : (workInProgress = null);\n }\n break b;\n }\n }\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 5);\n break;\n case 6:\n workInProgressSuspendedReason = 0;\n workInProgressThrownValue = null;\n throwAndUnwindWorkLoop(root, lanes, thrownValue, 6);\n break;\n case 8:\n resetWorkInProgressStack();\n workInProgressRootExitStatus = 6;\n break a;\n default:\n throw Error(formatProdErrorMessage(462));\n }\n }\n workLoopConcurrentByScheduler();\n break;\n } catch (thrownValue$169) {\n handleThrow(root, thrownValue$169);\n }\n while (1);\n lastContextDependency = currentlyRenderingFiber$1 = null;\n ReactSharedInternals.H = prevDispatcher;\n ReactSharedInternals.A = prevAsyncDispatcher;\n executionContext = prevExecutionContext;\n if (null !== workInProgress) return 0;\n workInProgressRoot = null;\n workInProgressRootRenderLanes = 0;\n finishQueueingConcurrentUpdates();\n return workInProgressRootExitStatus;\n}\nfunction workLoopConcurrentByScheduler() {\n for (; null !== workInProgress && !shouldYield(); )\n performUnitOfWork(workInProgress);\n}\nfunction performUnitOfWork(unitOfWork) {\n var next = beginWork(unitOfWork.alternate, unitOfWork, entangledRenderLanes);\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction replaySuspendedUnitOfWork(unitOfWork) {\n var next = unitOfWork;\n var current = next.alternate;\n switch (next.tag) {\n case 15:\n case 0:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type,\n void 0,\n workInProgressRootRenderLanes\n );\n break;\n case 11:\n next = replayFunctionComponent(\n current,\n next,\n next.pendingProps,\n next.type.render,\n next.ref,\n workInProgressRootRenderLanes\n );\n break;\n case 5:\n resetHooksOnUnwind(next);\n default:\n unwindInterruptedWork(current, next),\n (next = workInProgress =\n resetWorkInProgress(next, entangledRenderLanes)),\n (next = beginWork(current, next, entangledRenderLanes));\n }\n unitOfWork.memoizedProps = unitOfWork.pendingProps;\n null === next ? completeUnitOfWork(unitOfWork) : (workInProgress = next);\n}\nfunction throwAndUnwindWorkLoop(\n root,\n unitOfWork,\n thrownValue,\n suspendedReason\n) {\n lastContextDependency = currentlyRenderingFiber$1 = null;\n resetHooksOnUnwind(unitOfWork);\n thenableState = null;\n thenableIndexCounter = 0;\n var returnFiber = unitOfWork.return;\n try {\n if (\n throwException(\n root,\n returnFiber,\n unitOfWork,\n thrownValue,\n workInProgressRootRenderLanes\n )\n ) {\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n } catch (error) {\n if (null !== returnFiber) throw ((workInProgress = returnFiber), error);\n workInProgressRootExitStatus = 1;\n logUncaughtError(\n root,\n createCapturedValueAtFiber(thrownValue, root.current)\n );\n workInProgress = null;\n return;\n }\n if (unitOfWork.flags & 32768) {\n if (isHydrating || 1 === suspendedReason) root = !0;\n else if (\n workInProgressRootIsPrerendering ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n )\n root = !1;\n else if (\n ((workInProgressRootDidSkipSuspendedSiblings = root = !0),\n 2 === suspendedReason ||\n 9 === suspendedReason ||\n 3 === suspendedReason ||\n 6 === suspendedReason)\n )\n (suspendedReason = suspenseHandlerStackCursor.current),\n null !== suspendedReason &&\n 13 === suspendedReason.tag &&\n (suspendedReason.flags |= 16384);\n unwindUnitOfWork(unitOfWork, root);\n } else completeUnitOfWork(unitOfWork);\n}\nfunction completeUnitOfWork(unitOfWork) {\n var completedWork = unitOfWork;\n do {\n if (0 !== (completedWork.flags & 32768)) {\n unwindUnitOfWork(\n completedWork,\n workInProgressRootDidSkipSuspendedSiblings\n );\n return;\n }\n unitOfWork = completedWork.return;\n var next = completeWork(\n completedWork.alternate,\n completedWork,\n entangledRenderLanes\n );\n if (null !== next) {\n workInProgress = next;\n return;\n }\n completedWork = completedWork.sibling;\n if (null !== completedWork) {\n workInProgress = completedWork;\n return;\n }\n workInProgress = completedWork = unitOfWork;\n } while (null !== completedWork);\n 0 === workInProgressRootExitStatus && (workInProgressRootExitStatus = 5);\n}\nfunction unwindUnitOfWork(unitOfWork, skipSiblings) {\n do {\n var next = unwindWork(unitOfWork.alternate, unitOfWork);\n if (null !== next) {\n next.flags &= 32767;\n workInProgress = next;\n return;\n }\n next = unitOfWork.return;\n null !== next &&\n ((next.flags |= 32768), (next.subtreeFlags = 0), (next.deletions = null));\n if (\n !skipSiblings &&\n ((unitOfWork = unitOfWork.sibling), null !== unitOfWork)\n ) {\n workInProgress = unitOfWork;\n return;\n }\n workInProgress = unitOfWork = next;\n } while (null !== unitOfWork);\n workInProgressRootExitStatus = 6;\n workInProgress = null;\n}\nfunction commitRoot(\n root,\n finishedWork,\n lanes,\n recoverableErrors,\n transitions,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n root.cancelPendingCommit = null;\n do flushPendingEffects();\n while (0 !== pendingEffectsStatus);\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(327));\n if (null !== finishedWork) {\n if (finishedWork === root.current) throw Error(formatProdErrorMessage(177));\n didIncludeRenderPhaseUpdate = finishedWork.lanes | finishedWork.childLanes;\n didIncludeRenderPhaseUpdate |= concurrentlyUpdatedLanes;\n markRootFinished(\n root,\n lanes,\n didIncludeRenderPhaseUpdate,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n );\n root === workInProgressRoot &&\n ((workInProgress = workInProgressRoot = null),\n (workInProgressRootRenderLanes = 0));\n pendingFinishedWork = finishedWork;\n pendingEffectsRoot = root;\n pendingEffectsLanes = lanes;\n pendingEffectsRemainingLanes = didIncludeRenderPhaseUpdate;\n pendingPassiveTransitions = transitions;\n pendingRecoverableErrors = recoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? ((root.callbackNode = null),\n (root.callbackPriority = 0),\n scheduleCallback$1(NormalPriority$1, function () {\n flushPassiveEffects(!0);\n return null;\n }))\n : ((root.callbackNode = null), (root.callbackPriority = 0));\n recoverableErrors = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || recoverableErrors) {\n recoverableErrors = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n transitions = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n spawnedLane = executionContext;\n executionContext |= 4;\n try {\n commitBeforeMutationEffects(root, finishedWork, lanes);\n } finally {\n (executionContext = spawnedLane),\n (ReactDOMSharedInternals.p = transitions),\n (ReactSharedInternals.T = recoverableErrors);\n }\n }\n pendingEffectsStatus = 1;\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n }\n}\nfunction flushMutationEffects() {\n if (1 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootMutationHasEffect = 0 !== (finishedWork.flags & 13878);\n if (0 !== (finishedWork.subtreeFlags & 13878) || rootMutationHasEffect) {\n rootMutationHasEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitMutationEffectsOnFiber(finishedWork, root);\n var priorSelectionInformation = selectionInformation,\n curFocusedElem = getActiveElementDeep(root.containerInfo),\n priorFocusedElem = priorSelectionInformation.focusedElem,\n priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== priorFocusedElem &&\n priorFocusedElem &&\n priorFocusedElem.ownerDocument &&\n containsNode(\n priorFocusedElem.ownerDocument.documentElement,\n priorFocusedElem\n )\n ) {\n if (\n null !== priorSelectionRange &&\n hasSelectionCapabilities(priorFocusedElem)\n ) {\n var start = priorSelectionRange.start,\n end = priorSelectionRange.end;\n void 0 === end && (end = start);\n if (\"selectionStart\" in priorFocusedElem)\n (priorFocusedElem.selectionStart = start),\n (priorFocusedElem.selectionEnd = Math.min(\n end,\n priorFocusedElem.value.length\n ));\n else {\n var doc = priorFocusedElem.ownerDocument || document,\n win = (doc && doc.defaultView) || window;\n if (win.getSelection) {\n var selection = win.getSelection(),\n length = priorFocusedElem.textContent.length,\n start$jscomp$0 = Math.min(priorSelectionRange.start, length),\n end$jscomp$0 =\n void 0 === priorSelectionRange.end\n ? start$jscomp$0\n : Math.min(priorSelectionRange.end, length);\n !selection.extend &&\n start$jscomp$0 > end$jscomp$0 &&\n ((curFocusedElem = end$jscomp$0),\n (end$jscomp$0 = start$jscomp$0),\n (start$jscomp$0 = curFocusedElem));\n var startMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n start$jscomp$0\n ),\n endMarker = getNodeForCharacterOffset(\n priorFocusedElem,\n end$jscomp$0\n );\n if (\n startMarker &&\n endMarker &&\n (1 !== selection.rangeCount ||\n selection.anchorNode !== startMarker.node ||\n selection.anchorOffset !== startMarker.offset ||\n selection.focusNode !== endMarker.node ||\n selection.focusOffset !== endMarker.offset)\n ) {\n var range = doc.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n start$jscomp$0 > end$jscomp$0\n ? (selection.addRange(range),\n selection.extend(endMarker.node, endMarker.offset))\n : (range.setEnd(endMarker.node, endMarker.offset),\n selection.addRange(range));\n }\n }\n }\n }\n doc = [];\n for (\n selection = priorFocusedElem;\n (selection = selection.parentNode);\n\n )\n 1 === selection.nodeType &&\n doc.push({\n element: selection,\n left: selection.scrollLeft,\n top: selection.scrollTop\n });\n \"function\" === typeof priorFocusedElem.focus &&\n priorFocusedElem.focus();\n for (\n priorFocusedElem = 0;\n priorFocusedElem < doc.length;\n priorFocusedElem++\n ) {\n var info = doc[priorFocusedElem];\n info.element.scrollLeft = info.left;\n info.element.scrollTop = info.top;\n }\n }\n _enabled = !!eventsEnabled;\n selectionInformation = eventsEnabled = null;\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootMutationHasEffect);\n }\n }\n root.current = finishedWork;\n pendingEffectsStatus = 2;\n }\n}\nfunction flushLayoutEffects() {\n if (2 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n rootHasLayoutEffect = 0 !== (finishedWork.flags & 8772);\n if (0 !== (finishedWork.subtreeFlags & 8772) || rootHasLayoutEffect) {\n rootHasLayoutEffect = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n try {\n commitLayoutEffectOnFiber(root, finishedWork.alternate, finishedWork);\n } finally {\n (executionContext = prevExecutionContext),\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = rootHasLayoutEffect);\n }\n }\n pendingEffectsStatus = 3;\n }\n}\nfunction flushSpawnedWork() {\n if (4 === pendingEffectsStatus || 3 === pendingEffectsStatus) {\n pendingEffectsStatus = 0;\n requestPaint();\n var root = pendingEffectsRoot,\n finishedWork = pendingFinishedWork,\n lanes = pendingEffectsLanes,\n recoverableErrors = pendingRecoverableErrors;\n 0 !== (finishedWork.subtreeFlags & 10256) ||\n 0 !== (finishedWork.flags & 10256)\n ? (pendingEffectsStatus = 5)\n : ((pendingEffectsStatus = 0),\n (pendingFinishedWork = pendingEffectsRoot = null),\n releaseRootPooledCache(root, root.pendingLanes));\n var remainingLanes = root.pendingLanes;\n 0 === remainingLanes && (legacyErrorBoundariesThatAlreadyFailed = null);\n lanesToEventPriority(lanes);\n finishedWork = finishedWork.stateNode;\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n finishedWork,\n void 0,\n 128 === (finishedWork.current.flags & 128)\n );\n } catch (err) {}\n if (null !== recoverableErrors) {\n finishedWork = ReactSharedInternals.T;\n remainingLanes = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p = 2;\n ReactSharedInternals.T = null;\n try {\n for (\n var onRecoverableError = root.onRecoverableError, i = 0;\n i < recoverableErrors.length;\n i++\n ) {\n var recoverableError = recoverableErrors[i];\n onRecoverableError(recoverableError.value, {\n componentStack: recoverableError.stack\n });\n }\n } finally {\n (ReactSharedInternals.T = finishedWork),\n (ReactDOMSharedInternals.p = remainingLanes);\n }\n }\n 0 !== (pendingEffectsLanes & 3) && flushPendingEffects();\n ensureRootIsScheduled(root);\n remainingLanes = root.pendingLanes;\n 0 !== (lanes & 4194090) && 0 !== (remainingLanes & 42)\n ? root === rootWithNestedUpdates\n ? nestedUpdateCount++\n : ((nestedUpdateCount = 0), (rootWithNestedUpdates = root))\n : (nestedUpdateCount = 0);\n flushSyncWorkAcrossRoots_impl(0, !1);\n }\n}\nfunction releaseRootPooledCache(root, remainingLanes) {\n 0 === (root.pooledCacheLanes &= remainingLanes) &&\n ((remainingLanes = root.pooledCache),\n null != remainingLanes &&\n ((root.pooledCache = null), releaseCache(remainingLanes)));\n}\nfunction flushPendingEffects(wasDelayedCommit) {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects(wasDelayedCommit);\n}\nfunction flushPassiveEffects() {\n if (5 !== pendingEffectsStatus) return !1;\n var root = pendingEffectsRoot,\n remainingLanes = pendingEffectsRemainingLanes;\n pendingEffectsRemainingLanes = 0;\n var renderPriority = lanesToEventPriority(pendingEffectsLanes),\n prevTransition = ReactSharedInternals.T,\n previousPriority = ReactDOMSharedInternals.p;\n try {\n ReactDOMSharedInternals.p = 32 > renderPriority ? 32 : renderPriority;\n ReactSharedInternals.T = null;\n renderPriority = pendingPassiveTransitions;\n pendingPassiveTransitions = null;\n var root$jscomp$0 = pendingEffectsRoot,\n lanes = pendingEffectsLanes;\n pendingEffectsStatus = 0;\n pendingFinishedWork = pendingEffectsRoot = null;\n pendingEffectsLanes = 0;\n if (0 !== (executionContext & 6)) throw Error(formatProdErrorMessage(331));\n var prevExecutionContext = executionContext;\n executionContext |= 4;\n commitPassiveUnmountOnFiber(root$jscomp$0.current);\n commitPassiveMountOnFiber(\n root$jscomp$0,\n root$jscomp$0.current,\n lanes,\n renderPriority\n );\n executionContext = prevExecutionContext;\n flushSyncWorkAcrossRoots_impl(0, !1);\n if (\n injectedHook &&\n \"function\" === typeof injectedHook.onPostCommitFiberRoot\n )\n try {\n injectedHook.onPostCommitFiberRoot(rendererID, root$jscomp$0);\n } catch (err) {}\n return !0;\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition),\n releaseRootPooledCache(root, remainingLanes);\n }\n}\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n sourceFiber = createRootErrorUpdate(rootFiber.stateNode, sourceFiber, 2);\n rootFiber = enqueueUpdate(rootFiber, sourceFiber, 2);\n null !== rootFiber &&\n (markRootUpdated$1(rootFiber, 2), ensureRootIsScheduled(rootFiber));\n}\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error) {\n if (3 === sourceFiber.tag)\n captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);\n else\n for (; null !== nearestMountedAncestor; ) {\n if (3 === nearestMountedAncestor.tag) {\n captureCommitPhaseErrorOnRoot(\n nearestMountedAncestor,\n sourceFiber,\n error\n );\n break;\n } else if (1 === nearestMountedAncestor.tag) {\n var instance = nearestMountedAncestor.stateNode;\n if (\n \"function\" ===\n typeof nearestMountedAncestor.type.getDerivedStateFromError ||\n (\"function\" === typeof instance.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(instance)))\n ) {\n sourceFiber = createCapturedValueAtFiber(error, sourceFiber);\n error = createClassErrorUpdate(2);\n instance = enqueueUpdate(nearestMountedAncestor, error, 2);\n null !== instance &&\n (initializeClassErrorUpdate(\n error,\n instance,\n nearestMountedAncestor,\n sourceFiber\n ),\n markRootUpdated$1(instance, 2),\n ensureRootIsScheduled(instance));\n break;\n }\n }\n nearestMountedAncestor = nearestMountedAncestor.return;\n }\n}\nfunction attachPingListener(root, wakeable, lanes) {\n var pingCache = root.pingCache;\n if (null === pingCache) {\n pingCache = root.pingCache = new PossiblyWeakMap();\n var threadIDs = new Set();\n pingCache.set(wakeable, threadIDs);\n } else\n (threadIDs = pingCache.get(wakeable)),\n void 0 === threadIDs &&\n ((threadIDs = new Set()), pingCache.set(wakeable, threadIDs));\n threadIDs.has(lanes) ||\n ((workInProgressRootDidAttachPingListener = !0),\n threadIDs.add(lanes),\n (root = pingSuspendedRoot.bind(null, root, wakeable, lanes)),\n wakeable.then(root, root));\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n var pingCache = root.pingCache;\n null !== pingCache && pingCache.delete(wakeable);\n root.pingedLanes |= root.suspendedLanes & pingedLanes;\n root.warmLanes &= ~pingedLanes;\n workInProgressRoot === root &&\n (workInProgressRootRenderLanes & pingedLanes) === pingedLanes &&\n (4 === workInProgressRootExitStatus ||\n (3 === workInProgressRootExitStatus &&\n (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes &&\n 300 > now() - globalMostRecentFallbackTime)\n ? 0 === (executionContext & 2) && prepareFreshStack(root, 0)\n : (workInProgressRootPingedLanes |= pingedLanes),\n workInProgressSuspendedRetryLanes === workInProgressRootRenderLanes &&\n (workInProgressSuspendedRetryLanes = 0));\n ensureRootIsScheduled(root);\n}\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n 0 === retryLane && (retryLane = claimNextRetryLane());\n boundaryFiber = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n null !== boundaryFiber &&\n (markRootUpdated$1(boundaryFiber, retryLane),\n ensureRootIsScheduled(boundaryFiber));\n}\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n var suspenseState = boundaryFiber.memoizedState,\n retryLane = 0;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n var retryLane = 0;\n switch (boundaryFiber.tag) {\n case 13:\n var retryCache = boundaryFiber.stateNode;\n var suspenseState = boundaryFiber.memoizedState;\n null !== suspenseState && (retryLane = suspenseState.retryLane);\n break;\n case 19:\n retryCache = boundaryFiber.stateNode;\n break;\n case 22:\n retryCache = boundaryFiber.stateNode._retryCache;\n break;\n default:\n throw Error(formatProdErrorMessage(314));\n }\n null !== retryCache && retryCache.delete(wakeable);\n retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction scheduleCallback$1(priorityLevel, callback) {\n return scheduleCallback$3(priorityLevel, callback);\n}\nvar firstScheduledRoot = null,\n lastScheduledRoot = null,\n didScheduleMicrotask = !1,\n mightHavePendingSyncWork = !1,\n isFlushingWork = !1,\n currentEventTransitionLane = 0;\nfunction ensureRootIsScheduled(root) {\n root !== lastScheduledRoot &&\n null === root.next &&\n (null === lastScheduledRoot\n ? (firstScheduledRoot = lastScheduledRoot = root)\n : (lastScheduledRoot = lastScheduledRoot.next = root));\n mightHavePendingSyncWork = !0;\n didScheduleMicrotask ||\n ((didScheduleMicrotask = !0), scheduleImmediateRootScheduleTask());\n}\nfunction flushSyncWorkAcrossRoots_impl(syncTransitionLanes, onlyLegacy) {\n if (!isFlushingWork && mightHavePendingSyncWork) {\n isFlushingWork = !0;\n do {\n var didPerformSomeWork = !1;\n for (var root$174 = firstScheduledRoot; null !== root$174; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$174.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$174.suspendedLanes,\n pingedLanes = root$174.pingedLanes;\n JSCompiler_inline_result =\n (1 << (31 - clz32(42 | syncTransitionLanes) + 1)) - 1;\n JSCompiler_inline_result &=\n pendingLanes & ~(suspendedLanes & ~pingedLanes);\n JSCompiler_inline_result =\n JSCompiler_inline_result & 201326741\n ? (JSCompiler_inline_result & 201326741) | 1\n : JSCompiler_inline_result\n ? JSCompiler_inline_result | 2\n : 0;\n }\n 0 !== JSCompiler_inline_result &&\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$174,\n root$174 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$174.cancelPendingCommit ||\n -1 !== root$174.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$174, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$174, JSCompiler_inline_result));\n root$174 = root$174.next;\n }\n } while (didPerformSomeWork);\n isFlushingWork = !1;\n }\n}\nfunction processRootScheduleInImmediateTask() {\n processRootScheduleInMicrotask();\n}\nfunction processRootScheduleInMicrotask() {\n mightHavePendingSyncWork = didScheduleMicrotask = !1;\n var syncTransitionLanes = 0;\n 0 !== currentEventTransitionLane &&\n (shouldAttemptEagerTransition() &&\n (syncTransitionLanes = currentEventTransitionLane),\n (currentEventTransitionLane = 0));\n for (\n var currentTime = now(), prev = null, root = firstScheduledRoot;\n null !== root;\n\n ) {\n var next = root.next,\n nextLanes = scheduleTaskForRootDuringMicrotask(root, currentTime);\n if (0 === nextLanes)\n (root.next = null),\n null === prev ? (firstScheduledRoot = next) : (prev.next = next),\n null === next && (lastScheduledRoot = prev);\n else if (\n ((prev = root), 0 !== syncTransitionLanes || 0 !== (nextLanes & 3))\n )\n mightHavePendingSyncWork = !0;\n root = next;\n }\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n}\nfunction scheduleTaskForRootDuringMicrotask(root, currentTime) {\n for (\n var suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n expirationTimes = root.expirationTimes,\n lanes = root.pendingLanes & -62914561;\n 0 < lanes;\n\n ) {\n var index$3 = 31 - clz32(lanes),\n lane = 1 << index$3,\n expirationTime = expirationTimes[index$3];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$3] = computeExpirationTime(lane, currentTime);\n } else expirationTime <= currentTime && (root.expiredLanes |= lane);\n lanes &= ~lane;\n }\n currentTime = workInProgressRoot;\n suspendedLanes = workInProgressRootRenderLanes;\n suspendedLanes = getNextLanes(\n root,\n root === currentTime ? suspendedLanes : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n pingedLanes = root.callbackNode;\n if (\n 0 === suspendedLanes ||\n (root === currentTime &&\n (2 === workInProgressSuspendedReason ||\n 9 === workInProgressSuspendedReason)) ||\n null !== root.cancelPendingCommit\n )\n return (\n null !== pingedLanes &&\n null !== pingedLanes &&\n cancelCallback$1(pingedLanes),\n (root.callbackNode = null),\n (root.callbackPriority = 0)\n );\n if (\n 0 === (suspendedLanes & 3) ||\n checkIfRootIsPrerendering(root, suspendedLanes)\n ) {\n currentTime = suspendedLanes & -suspendedLanes;\n if (currentTime === root.callbackPriority) return currentTime;\n null !== pingedLanes && cancelCallback$1(pingedLanes);\n switch (lanesToEventPriority(suspendedLanes)) {\n case 2:\n case 8:\n suspendedLanes = UserBlockingPriority;\n break;\n case 32:\n suspendedLanes = NormalPriority$1;\n break;\n case 268435456:\n suspendedLanes = IdlePriority;\n break;\n default:\n suspendedLanes = NormalPriority$1;\n }\n pingedLanes = performWorkOnRootViaSchedulerTask.bind(null, root);\n suspendedLanes = scheduleCallback$3(suspendedLanes, pingedLanes);\n root.callbackPriority = currentTime;\n root.callbackNode = suspendedLanes;\n return currentTime;\n }\n null !== pingedLanes && null !== pingedLanes && cancelCallback$1(pingedLanes);\n root.callbackPriority = 2;\n root.callbackNode = null;\n return 2;\n}\nfunction performWorkOnRootViaSchedulerTask(root, didTimeout) {\n if (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus)\n return (root.callbackNode = null), (root.callbackPriority = 0), null;\n var originalCallbackNode = root.callbackNode;\n if (flushPendingEffects(!0) && root.callbackNode !== originalCallbackNode)\n return null;\n var workInProgressRootRenderLanes$jscomp$0 = workInProgressRootRenderLanes;\n workInProgressRootRenderLanes$jscomp$0 = getNextLanes(\n root,\n root === workInProgressRoot ? workInProgressRootRenderLanes$jscomp$0 : 0,\n null !== root.cancelPendingCommit || -1 !== root.timeoutHandle\n );\n if (0 === workInProgressRootRenderLanes$jscomp$0) return null;\n performWorkOnRoot(root, workInProgressRootRenderLanes$jscomp$0, didTimeout);\n scheduleTaskForRootDuringMicrotask(root, now());\n return null != root.callbackNode && root.callbackNode === originalCallbackNode\n ? performWorkOnRootViaSchedulerTask.bind(null, root)\n : null;\n}\nfunction performSyncWorkOnRoot(root, lanes) {\n if (flushPendingEffects()) return null;\n performWorkOnRoot(root, lanes, !0);\n}\nfunction scheduleImmediateRootScheduleTask() {\n scheduleMicrotask(function () {\n 0 !== (executionContext & 6)\n ? scheduleCallback$3(\n ImmediatePriority,\n processRootScheduleInImmediateTask\n )\n : processRootScheduleInMicrotask();\n });\n}\nfunction requestTransitionLane() {\n 0 === currentEventTransitionLane &&\n (currentEventTransitionLane = claimNextTransitionLane());\n return currentEventTransitionLane;\n}\nfunction coerceFormActionProp(actionProp) {\n return null == actionProp ||\n \"symbol\" === typeof actionProp ||\n \"boolean\" === typeof actionProp\n ? null\n : \"function\" === typeof actionProp\n ? actionProp\n : sanitizeURL(\"\" + actionProp);\n}\nfunction createFormDataWithSubmitter(form, submitter) {\n var temp = submitter.ownerDocument.createElement(\"input\");\n temp.name = submitter.name;\n temp.value = submitter.value;\n form.id && temp.setAttribute(\"form\", form.id);\n submitter.parentNode.insertBefore(temp, submitter);\n form = new FormData(form);\n temp.parentNode.removeChild(temp);\n return form;\n}\nfunction extractEvents$1(\n dispatchQueue,\n domEventName,\n maybeTargetInst,\n nativeEvent,\n nativeEventTarget\n) {\n if (\n \"submit\" === domEventName &&\n maybeTargetInst &&\n maybeTargetInst.stateNode === nativeEventTarget\n ) {\n var action = coerceFormActionProp(\n (nativeEventTarget[internalPropsKey] || null).action\n ),\n submitter = nativeEvent.submitter;\n submitter &&\n ((domEventName = (domEventName = submitter[internalPropsKey] || null)\n ? coerceFormActionProp(domEventName.formAction)\n : submitter.getAttribute(\"formAction\")),\n null !== domEventName && ((action = domEventName), (submitter = null)));\n var event = new SyntheticEvent(\n \"action\",\n \"action\",\n null,\n nativeEvent,\n nativeEventTarget\n );\n dispatchQueue.push({\n event: event,\n listeners: [\n {\n instance: null,\n listener: function () {\n if (nativeEvent.defaultPrevented) {\n if (0 !== currentEventTransitionLane) {\n var formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget);\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n null,\n formData\n );\n }\n } else\n \"function\" === typeof action &&\n (event.preventDefault(),\n (formData = submitter\n ? createFormDataWithSubmitter(nativeEventTarget, submitter)\n : new FormData(nativeEventTarget)),\n startHostTransition(\n maybeTargetInst,\n {\n pending: !0,\n data: formData,\n method: nativeEventTarget.method,\n action: action\n },\n action,\n formData\n ));\n },\n currentTarget: nativeEventTarget\n }\n ]\n });\n }\n}\nfor (\n var i$jscomp$inline_1528 = 0;\n i$jscomp$inline_1528 < simpleEventPluginEvents.length;\n i$jscomp$inline_1528++\n) {\n var eventName$jscomp$inline_1529 =\n simpleEventPluginEvents[i$jscomp$inline_1528],\n domEventName$jscomp$inline_1530 =\n eventName$jscomp$inline_1529.toLowerCase(),\n capitalizedEvent$jscomp$inline_1531 =\n eventName$jscomp$inline_1529[0].toUpperCase() +\n eventName$jscomp$inline_1529.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1530,\n \"on\" + capitalizedEvent$jscomp$inline_1531\n );\n}\nregisterSimpleEvent(ANIMATION_END, \"onAnimationEnd\");\nregisterSimpleEvent(ANIMATION_ITERATION, \"onAnimationIteration\");\nregisterSimpleEvent(ANIMATION_START, \"onAnimationStart\");\nregisterSimpleEvent(\"dblclick\", \"onDoubleClick\");\nregisterSimpleEvent(\"focusin\", \"onFocus\");\nregisterSimpleEvent(\"focusout\", \"onBlur\");\nregisterSimpleEvent(TRANSITION_RUN, \"onTransitionRun\");\nregisterSimpleEvent(TRANSITION_START, \"onTransitionStart\");\nregisterSimpleEvent(TRANSITION_CANCEL, \"onTransitionCancel\");\nregisterSimpleEvent(TRANSITION_END, \"onTransitionEnd\");\nregisterDirectEvent(\"onMouseEnter\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onMouseLeave\", [\"mouseout\", \"mouseover\"]);\nregisterDirectEvent(\"onPointerEnter\", [\"pointerout\", \"pointerover\"]);\nregisterDirectEvent(\"onPointerLeave\", [\"pointerout\", \"pointerover\"]);\nregisterTwoPhaseEvent(\n \"onChange\",\n \"change click focusin focusout input keydown keyup selectionchange\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onSelect\",\n \"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\n \" \"\n )\n);\nregisterTwoPhaseEvent(\"onBeforeInput\", [\n \"compositionend\",\n \"keypress\",\n \"textInput\",\n \"paste\"\n]);\nregisterTwoPhaseEvent(\n \"onCompositionEnd\",\n \"compositionend focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionStart\",\n \"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")\n);\nregisterTwoPhaseEvent(\n \"onCompositionUpdate\",\n \"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \")\n);\nvar mediaEventTypes =\n \"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(\n \" \"\n ),\n nonDelegatedEvents = new Set(\n \"beforetoggle cancel close invalid load scroll scrollend toggle\"\n .split(\" \")\n .concat(mediaEventTypes)\n );\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n eventSystemFlags = 0 !== (eventSystemFlags & 4);\n for (var i = 0; i < dispatchQueue.length; i++) {\n var _dispatchQueue$i = dispatchQueue[i],\n event = _dispatchQueue$i.event;\n _dispatchQueue$i = _dispatchQueue$i.listeners;\n a: {\n var previousInstance = void 0;\n if (eventSystemFlags)\n for (\n var i$jscomp$0 = _dispatchQueue$i.length - 1;\n 0 <= i$jscomp$0;\n i$jscomp$0--\n ) {\n var _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0],\n instance = _dispatchListeners$i.instance,\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n else\n for (\n i$jscomp$0 = 0;\n i$jscomp$0 < _dispatchQueue$i.length;\n i$jscomp$0++\n ) {\n _dispatchListeners$i = _dispatchQueue$i[i$jscomp$0];\n instance = _dispatchListeners$i.instance;\n currentTarget = _dispatchListeners$i.currentTarget;\n _dispatchListeners$i = _dispatchListeners$i.listener;\n if (instance !== previousInstance && event.isPropagationStopped())\n break a;\n previousInstance = _dispatchListeners$i;\n event.currentTarget = currentTarget;\n try {\n previousInstance(event);\n } catch (error) {\n reportGlobalError(error);\n }\n event.currentTarget = null;\n previousInstance = instance;\n }\n }\n }\n}\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n var JSCompiler_inline_result = targetElement[internalEventHandlersKey];\n void 0 === JSCompiler_inline_result &&\n (JSCompiler_inline_result = targetElement[internalEventHandlersKey] =\n new Set());\n var listenerSetKey = domEventName + \"__bubble\";\n JSCompiler_inline_result.has(listenerSetKey) ||\n (addTrappedEventListener(targetElement, domEventName, 2, !1),\n JSCompiler_inline_result.add(listenerSetKey));\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n var eventSystemFlags = 0;\n isCapturePhaseListener && (eventSystemFlags |= 4);\n addTrappedEventListener(\n target,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n );\n}\nvar listeningMarker = \"_reactListening\" + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n if (!rootContainerElement[listeningMarker]) {\n rootContainerElement[listeningMarker] = !0;\n allNativeEvents.forEach(function (domEventName) {\n \"selectionchange\" !== domEventName &&\n (nonDelegatedEvents.has(domEventName) ||\n listenToNativeEvent(domEventName, !1, rootContainerElement),\n listenToNativeEvent(domEventName, !0, rootContainerElement));\n });\n var ownerDocument =\n 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n null === ownerDocument ||\n ownerDocument[listeningMarker] ||\n ((ownerDocument[listeningMarker] = !0),\n listenToNativeEvent(\"selectionchange\", !1, ownerDocument));\n }\n}\nfunction addTrappedEventListener(\n targetContainer,\n domEventName,\n eventSystemFlags,\n isCapturePhaseListener\n) {\n switch (getEventPriority(domEventName)) {\n case 2:\n var listenerWrapper = dispatchDiscreteEvent;\n break;\n case 8:\n listenerWrapper = dispatchContinuousEvent;\n break;\n default:\n listenerWrapper = dispatchEvent;\n }\n eventSystemFlags = listenerWrapper.bind(\n null,\n domEventName,\n eventSystemFlags,\n targetContainer\n );\n listenerWrapper = void 0;\n !passiveBrowserEventsSupported ||\n (\"touchstart\" !== domEventName &&\n \"touchmove\" !== domEventName &&\n \"wheel\" !== domEventName) ||\n (listenerWrapper = !0);\n isCapturePhaseListener\n ? void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n capture: !0,\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !0)\n : void 0 !== listenerWrapper\n ? targetContainer.addEventListener(domEventName, eventSystemFlags, {\n passive: listenerWrapper\n })\n : targetContainer.addEventListener(domEventName, eventSystemFlags, !1);\n}\nfunction dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n targetInst$jscomp$0,\n targetContainer\n) {\n var ancestorInst = targetInst$jscomp$0;\n if (\n 0 === (eventSystemFlags & 1) &&\n 0 === (eventSystemFlags & 2) &&\n null !== targetInst$jscomp$0\n )\n a: for (;;) {\n if (null === targetInst$jscomp$0) return;\n var nodeTag = targetInst$jscomp$0.tag;\n if (3 === nodeTag || 4 === nodeTag) {\n var container = targetInst$jscomp$0.stateNode.containerInfo;\n if (container === targetContainer) break;\n if (4 === nodeTag)\n for (nodeTag = targetInst$jscomp$0.return; null !== nodeTag; ) {\n var grandTag = nodeTag.tag;\n if (\n (3 === grandTag || 4 === grandTag) &&\n nodeTag.stateNode.containerInfo === targetContainer\n )\n return;\n nodeTag = nodeTag.return;\n }\n for (; null !== container; ) {\n nodeTag = getClosestInstanceFromNode(container);\n if (null === nodeTag) return;\n grandTag = nodeTag.tag;\n if (\n 5 === grandTag ||\n 6 === grandTag ||\n 26 === grandTag ||\n 27 === grandTag\n ) {\n targetInst$jscomp$0 = ancestorInst = nodeTag;\n continue a;\n }\n container = container.parentNode;\n }\n }\n targetInst$jscomp$0 = targetInst$jscomp$0.return;\n }\n batchedUpdates$1(function () {\n var targetInst = ancestorInst,\n nativeEventTarget = getEventTarget(nativeEvent),\n dispatchQueue = [];\n a: {\n var reactName = topLevelEventsToReactNames.get(domEventName);\n if (void 0 !== reactName) {\n var SyntheticEventCtor = SyntheticEvent,\n reactEventType = domEventName;\n switch (domEventName) {\n case \"keypress\":\n if (0 === getEventCharCode(nativeEvent)) break a;\n case \"keydown\":\n case \"keyup\":\n SyntheticEventCtor = SyntheticKeyboardEvent;\n break;\n case \"focusin\":\n reactEventType = \"focus\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"focusout\":\n reactEventType = \"blur\";\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"beforeblur\":\n case \"afterblur\":\n SyntheticEventCtor = SyntheticFocusEvent;\n break;\n case \"click\":\n if (2 === nativeEvent.button) break a;\n case \"auxclick\":\n case \"dblclick\":\n case \"mousedown\":\n case \"mousemove\":\n case \"mouseup\":\n case \"mouseout\":\n case \"mouseover\":\n case \"contextmenu\":\n SyntheticEventCtor = SyntheticMouseEvent;\n break;\n case \"drag\":\n case \"dragend\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"dragstart\":\n case \"drop\":\n SyntheticEventCtor = SyntheticDragEvent;\n break;\n case \"touchcancel\":\n case \"touchend\":\n case \"touchmove\":\n case \"touchstart\":\n SyntheticEventCtor = SyntheticTouchEvent;\n break;\n case ANIMATION_END:\n case ANIMATION_ITERATION:\n case ANIMATION_START:\n SyntheticEventCtor = SyntheticAnimationEvent;\n break;\n case TRANSITION_END:\n SyntheticEventCtor = SyntheticTransitionEvent;\n break;\n case \"scroll\":\n case \"scrollend\":\n SyntheticEventCtor = SyntheticUIEvent;\n break;\n case \"wheel\":\n SyntheticEventCtor = SyntheticWheelEvent;\n break;\n case \"copy\":\n case \"cut\":\n case \"paste\":\n SyntheticEventCtor = SyntheticClipboardEvent;\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"pointerup\":\n SyntheticEventCtor = SyntheticPointerEvent;\n break;\n case \"toggle\":\n case \"beforetoggle\":\n SyntheticEventCtor = SyntheticToggleEvent;\n }\n var inCapturePhase = 0 !== (eventSystemFlags & 4),\n accumulateTargetOnly =\n !inCapturePhase &&\n (\"scroll\" === domEventName || \"scrollend\" === domEventName),\n reactEventName = inCapturePhase\n ? null !== reactName\n ? reactName + \"Capture\"\n : null\n : reactName;\n inCapturePhase = [];\n for (\n var instance = targetInst, lastHostComponent;\n null !== instance;\n\n ) {\n var _instance = instance;\n lastHostComponent = _instance.stateNode;\n _instance = _instance.tag;\n (5 !== _instance && 26 !== _instance && 27 !== _instance) ||\n null === lastHostComponent ||\n null === reactEventName ||\n ((_instance = getListener(instance, reactEventName)),\n null != _instance &&\n inCapturePhase.push(\n createDispatchListener(instance, _instance, lastHostComponent)\n ));\n if (accumulateTargetOnly) break;\n instance = instance.return;\n }\n 0 < inCapturePhase.length &&\n ((reactName = new SyntheticEventCtor(\n reactName,\n reactEventType,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: reactName, listeners: inCapturePhase }));\n }\n }\n if (0 === (eventSystemFlags & 7)) {\n a: {\n reactName =\n \"mouseover\" === domEventName || \"pointerover\" === domEventName;\n SyntheticEventCtor =\n \"mouseout\" === domEventName || \"pointerout\" === domEventName;\n if (\n reactName &&\n nativeEvent !== currentReplayingEvent &&\n (reactEventType =\n nativeEvent.relatedTarget || nativeEvent.fromElement) &&\n (getClosestInstanceFromNode(reactEventType) ||\n reactEventType[internalContainerInstanceKey])\n )\n break a;\n if (SyntheticEventCtor || reactName) {\n reactName =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget\n : (reactName = nativeEventTarget.ownerDocument)\n ? reactName.defaultView || reactName.parentWindow\n : window;\n if (SyntheticEventCtor) {\n if (\n ((reactEventType =\n nativeEvent.relatedTarget || nativeEvent.toElement),\n (SyntheticEventCtor = targetInst),\n (reactEventType = reactEventType\n ? getClosestInstanceFromNode(reactEventType)\n : null),\n null !== reactEventType &&\n ((accumulateTargetOnly =\n getNearestMountedFiber(reactEventType)),\n (inCapturePhase = reactEventType.tag),\n reactEventType !== accumulateTargetOnly ||\n (5 !== inCapturePhase &&\n 27 !== inCapturePhase &&\n 6 !== inCapturePhase)))\n )\n reactEventType = null;\n } else (SyntheticEventCtor = null), (reactEventType = targetInst);\n if (SyntheticEventCtor !== reactEventType) {\n inCapturePhase = SyntheticMouseEvent;\n _instance = \"onMouseLeave\";\n reactEventName = \"onMouseEnter\";\n instance = \"mouse\";\n if (\"pointerout\" === domEventName || \"pointerover\" === domEventName)\n (inCapturePhase = SyntheticPointerEvent),\n (_instance = \"onPointerLeave\"),\n (reactEventName = \"onPointerEnter\"),\n (instance = \"pointer\");\n accumulateTargetOnly =\n null == SyntheticEventCtor\n ? reactName\n : getNodeFromInstance(SyntheticEventCtor);\n lastHostComponent =\n null == reactEventType\n ? reactName\n : getNodeFromInstance(reactEventType);\n reactName = new inCapturePhase(\n _instance,\n instance + \"leave\",\n SyntheticEventCtor,\n nativeEvent,\n nativeEventTarget\n );\n reactName.target = accumulateTargetOnly;\n reactName.relatedTarget = lastHostComponent;\n _instance = null;\n getClosestInstanceFromNode(nativeEventTarget) === targetInst &&\n ((inCapturePhase = new inCapturePhase(\n reactEventName,\n instance + \"enter\",\n reactEventType,\n nativeEvent,\n nativeEventTarget\n )),\n (inCapturePhase.target = lastHostComponent),\n (inCapturePhase.relatedTarget = accumulateTargetOnly),\n (_instance = inCapturePhase));\n accumulateTargetOnly = _instance;\n if (SyntheticEventCtor && reactEventType)\n b: {\n inCapturePhase = SyntheticEventCtor;\n reactEventName = reactEventType;\n instance = 0;\n for (\n lastHostComponent = inCapturePhase;\n lastHostComponent;\n lastHostComponent = getParent(lastHostComponent)\n )\n instance++;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = getParent(_instance)\n )\n lastHostComponent++;\n for (; 0 < instance - lastHostComponent; )\n (inCapturePhase = getParent(inCapturePhase)), instance--;\n for (; 0 < lastHostComponent - instance; )\n (reactEventName = getParent(reactEventName)),\n lastHostComponent--;\n for (; instance--; ) {\n if (\n inCapturePhase === reactEventName ||\n (null !== reactEventName &&\n inCapturePhase === reactEventName.alternate)\n )\n break b;\n inCapturePhase = getParent(inCapturePhase);\n reactEventName = getParent(reactEventName);\n }\n inCapturePhase = null;\n }\n else inCapturePhase = null;\n null !== SyntheticEventCtor &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n reactName,\n SyntheticEventCtor,\n inCapturePhase,\n !1\n );\n null !== reactEventType &&\n null !== accumulateTargetOnly &&\n accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n accumulateTargetOnly,\n reactEventType,\n inCapturePhase,\n !0\n );\n }\n }\n }\n a: {\n reactName = targetInst ? getNodeFromInstance(targetInst) : window;\n SyntheticEventCtor =\n reactName.nodeName && reactName.nodeName.toLowerCase();\n if (\n \"select\" === SyntheticEventCtor ||\n (\"input\" === SyntheticEventCtor && \"file\" === reactName.type)\n )\n var getTargetInstFunc = getTargetInstForChangeEvent;\n else if (isTextInputElement(reactName))\n if (isInputEventSupported)\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n var handleEventFunc = handleEventsForInputEventPolyfill;\n }\n else\n (SyntheticEventCtor = reactName.nodeName),\n !SyntheticEventCtor ||\n \"input\" !== SyntheticEventCtor.toLowerCase() ||\n (\"checkbox\" !== reactName.type && \"radio\" !== reactName.type)\n ? targetInst &&\n isCustomElement(targetInst.elementType) &&\n (getTargetInstFunc = getTargetInstForChangeEvent)\n : (getTargetInstFunc = getTargetInstForClickEvent);\n if (\n getTargetInstFunc &&\n (getTargetInstFunc = getTargetInstFunc(domEventName, targetInst))\n ) {\n createAndAccumulateChangeEvent(\n dispatchQueue,\n getTargetInstFunc,\n nativeEvent,\n nativeEventTarget\n );\n break a;\n }\n handleEventFunc && handleEventFunc(domEventName, reactName, targetInst);\n \"focusout\" === domEventName &&\n targetInst &&\n \"number\" === reactName.type &&\n null != targetInst.memoizedProps.value &&\n setDefaultValue(reactName, \"number\", reactName.value);\n }\n handleEventFunc = targetInst ? getNodeFromInstance(targetInst) : window;\n switch (domEventName) {\n case \"focusin\":\n if (\n isTextInputElement(handleEventFunc) ||\n \"true\" === handleEventFunc.contentEditable\n )\n (activeElement = handleEventFunc),\n (activeElementInst = targetInst),\n (lastSelection = null);\n break;\n case \"focusout\":\n lastSelection = activeElementInst = activeElement = null;\n break;\n case \"mousedown\":\n mouseDown = !0;\n break;\n case \"contextmenu\":\n case \"mouseup\":\n case \"dragend\":\n mouseDown = !1;\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n break;\n case \"selectionchange\":\n if (skipSelectionChangeEvent) break;\n case \"keydown\":\n case \"keyup\":\n constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n }\n var fallbackData;\n if (canUseCompositionEvent)\n b: {\n switch (domEventName) {\n case \"compositionstart\":\n var eventType = \"onCompositionStart\";\n break b;\n case \"compositionend\":\n eventType = \"onCompositionEnd\";\n break b;\n case \"compositionupdate\":\n eventType = \"onCompositionUpdate\";\n break b;\n }\n eventType = void 0;\n }\n else\n isComposing\n ? isFallbackCompositionEnd(domEventName, nativeEvent) &&\n (eventType = \"onCompositionEnd\")\n : \"keydown\" === domEventName &&\n 229 === nativeEvent.keyCode &&\n (eventType = \"onCompositionStart\");\n eventType &&\n (useFallbackCompositionData &&\n \"ko\" !== nativeEvent.locale &&\n (isComposing || \"onCompositionStart\" !== eventType\n ? \"onCompositionEnd\" === eventType &&\n isComposing &&\n (fallbackData = getData())\n : ((root = nativeEventTarget),\n (startText = \"value\" in root ? root.value : root.textContent),\n (isComposing = !0))),\n (handleEventFunc = accumulateTwoPhaseListeners(targetInst, eventType)),\n 0 < handleEventFunc.length &&\n ((eventType = new SyntheticCompositionEvent(\n eventType,\n domEventName,\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: eventType, listeners: handleEventFunc }),\n fallbackData\n ? (eventType.data = fallbackData)\n : ((fallbackData = getDataFromCustomEvent(nativeEvent)),\n null !== fallbackData && (eventType.data = fallbackData))));\n if (\n (fallbackData = canUseTextInputEvent\n ? getNativeBeforeInputChars(domEventName, nativeEvent)\n : getFallbackBeforeInputChars(domEventName, nativeEvent))\n )\n (eventType = accumulateTwoPhaseListeners(targetInst, \"onBeforeInput\")),\n 0 < eventType.length &&\n ((handleEventFunc = new SyntheticCompositionEvent(\n \"onBeforeInput\",\n \"beforeinput\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({\n event: handleEventFunc,\n listeners: eventType\n }),\n (handleEventFunc.data = fallbackData));\n extractEvents$1(\n dispatchQueue,\n domEventName,\n targetInst,\n nativeEvent,\n nativeEventTarget\n );\n }\n processDispatchQueue(dispatchQueue, eventSystemFlags);\n });\n}\nfunction createDispatchListener(instance, listener, currentTarget) {\n return {\n instance: instance,\n listener: listener,\n currentTarget: currentTarget\n };\n}\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n for (\n var captureName = reactName + \"Capture\", listeners = [];\n null !== targetFiber;\n\n ) {\n var _instance2 = targetFiber,\n stateNode = _instance2.stateNode;\n _instance2 = _instance2.tag;\n (5 !== _instance2 && 26 !== _instance2 && 27 !== _instance2) ||\n null === stateNode ||\n ((_instance2 = getListener(targetFiber, captureName)),\n null != _instance2 &&\n listeners.unshift(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ),\n (_instance2 = getListener(targetFiber, reactName)),\n null != _instance2 &&\n listeners.push(\n createDispatchListener(targetFiber, _instance2, stateNode)\n ));\n if (3 === targetFiber.tag) return listeners;\n targetFiber = targetFiber.return;\n }\n return [];\n}\nfunction getParent(inst) {\n if (null === inst) return null;\n do inst = inst.return;\n while (inst && 5 !== inst.tag && 27 !== inst.tag);\n return inst ? inst : null;\n}\nfunction accumulateEnterLeaveListenersForEvent(\n dispatchQueue,\n event,\n target,\n common,\n inCapturePhase\n) {\n for (\n var registrationName = event._reactName, listeners = [];\n null !== target && target !== common;\n\n ) {\n var _instance3 = target,\n alternate = _instance3.alternate,\n stateNode = _instance3.stateNode;\n _instance3 = _instance3.tag;\n if (null !== alternate && alternate === common) break;\n (5 !== _instance3 && 26 !== _instance3 && 27 !== _instance3) ||\n null === stateNode ||\n ((alternate = stateNode),\n inCapturePhase\n ? ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.unshift(\n createDispatchListener(target, stateNode, alternate)\n ))\n : inCapturePhase ||\n ((stateNode = getListener(target, registrationName)),\n null != stateNode &&\n listeners.push(\n createDispatchListener(target, stateNode, alternate)\n )));\n target = target.return;\n }\n 0 !== listeners.length &&\n dispatchQueue.push({ event: event, listeners: listeners });\n}\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g,\n NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\nfunction normalizeMarkupForTextOrAttribute(markup) {\n return (\"string\" === typeof markup ? markup : \"\" + markup)\n .replace(NORMALIZE_NEWLINES_REGEX, \"\\n\")\n .replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, \"\");\n}\nfunction checkForUnmatchedText(serverText, clientText) {\n clientText = normalizeMarkupForTextOrAttribute(clientText);\n return normalizeMarkupForTextOrAttribute(serverText) === clientText ? !0 : !1;\n}\nfunction noop$1() {}\nfunction setProp(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"children\":\n \"string\" === typeof value\n ? \"body\" === tag ||\n (\"textarea\" === tag && \"\" === value) ||\n setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n \"body\" !== tag &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"className\":\n setValueForKnownAttribute(domElement, \"class\", value);\n break;\n case \"tabIndex\":\n setValueForKnownAttribute(domElement, \"tabindex\", value);\n break;\n case \"dir\":\n case \"role\":\n case \"viewBox\":\n case \"width\":\n case \"height\":\n setValueForKnownAttribute(domElement, key, value);\n break;\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"data\":\n if (\"object\" !== tag) {\n setValueForKnownAttribute(domElement, \"data\", value);\n break;\n }\n case \"src\":\n case \"href\":\n if (\"\" === value && (\"a\" !== tag || \"href\" !== key)) {\n domElement.removeAttribute(key);\n break;\n }\n if (\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"action\":\n case \"formAction\":\n if (\"function\" === typeof value) {\n domElement.setAttribute(\n key,\n \"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')\"\n );\n break;\n } else\n \"function\" === typeof prevValue &&\n (\"formAction\" === key\n ? (\"input\" !== tag &&\n setProp(domElement, tag, \"name\", props.name, props, null),\n setProp(\n domElement,\n tag,\n \"formEncType\",\n props.formEncType,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formMethod\",\n props.formMethod,\n props,\n null\n ),\n setProp(\n domElement,\n tag,\n \"formTarget\",\n props.formTarget,\n props,\n null\n ))\n : (setProp(domElement, tag, \"encType\", props.encType, props, null),\n setProp(domElement, tag, \"method\", props.method, props, null),\n setProp(domElement, tag, \"target\", props.target, props, null)));\n if (\n null == value ||\n \"symbol\" === typeof value ||\n \"boolean\" === typeof value\n ) {\n domElement.removeAttribute(key);\n break;\n }\n value = sanitizeURL(\"\" + value);\n domElement.setAttribute(key, value);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"multiple\":\n domElement.multiple =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"muted\":\n domElement.muted =\n value && \"function\" !== typeof value && \"symbol\" !== typeof value;\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"defaultValue\":\n case \"defaultChecked\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"autoFocus\":\n break;\n case \"xlinkHref\":\n if (\n null == value ||\n \"function\" === typeof value ||\n \"boolean\" === typeof value ||\n \"symbol\" === typeof value\n ) {\n domElement.removeAttribute(\"xlink:href\");\n break;\n }\n key = sanitizeURL(\"\" + value);\n domElement.setAttributeNS(\n \"http://www.w3.org/1999/xlink\",\n \"xlink:href\",\n key\n );\n break;\n case \"contentEditable\":\n case \"spellCheck\":\n case \"draggable\":\n case \"value\":\n case \"autoReverse\":\n case \"externalResourcesRequired\":\n case \"focusable\":\n case \"preserveAlpha\":\n null != value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\" + value)\n : domElement.removeAttribute(key);\n break;\n case \"inert\":\n case \"allowFullScreen\":\n case \"async\":\n case \"autoPlay\":\n case \"controls\":\n case \"default\":\n case \"defer\":\n case \"disabled\":\n case \"disablePictureInPicture\":\n case \"disableRemotePlayback\":\n case \"formNoValidate\":\n case \"hidden\":\n case \"loop\":\n case \"noModule\":\n case \"noValidate\":\n case \"open\":\n case \"playsInline\":\n case \"readOnly\":\n case \"required\":\n case \"reversed\":\n case \"scoped\":\n case \"seamless\":\n case \"itemScope\":\n value && \"function\" !== typeof value && \"symbol\" !== typeof value\n ? domElement.setAttribute(key, \"\")\n : domElement.removeAttribute(key);\n break;\n case \"capture\":\n case \"download\":\n !0 === value\n ? domElement.setAttribute(key, \"\")\n : !1 !== value &&\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"cols\":\n case \"rows\":\n case \"size\":\n case \"span\":\n null != value &&\n \"function\" !== typeof value &&\n \"symbol\" !== typeof value &&\n !isNaN(value) &&\n 1 <= value\n ? domElement.setAttribute(key, value)\n : domElement.removeAttribute(key);\n break;\n case \"rowSpan\":\n case \"start\":\n null == value ||\n \"function\" === typeof value ||\n \"symbol\" === typeof value ||\n isNaN(value)\n ? domElement.removeAttribute(key)\n : domElement.setAttribute(key, value);\n break;\n case \"popover\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n setValueForAttribute(domElement, \"popover\", value);\n break;\n case \"xlinkActuate\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:actuate\",\n value\n );\n break;\n case \"xlinkArcrole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:arcrole\",\n value\n );\n break;\n case \"xlinkRole\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:role\",\n value\n );\n break;\n case \"xlinkShow\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:show\",\n value\n );\n break;\n case \"xlinkTitle\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:title\",\n value\n );\n break;\n case \"xlinkType\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/1999/xlink\",\n \"xlink:type\",\n value\n );\n break;\n case \"xmlBase\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:base\",\n value\n );\n break;\n case \"xmlLang\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:lang\",\n value\n );\n break;\n case \"xmlSpace\":\n setValueForNamespacedAttribute(\n domElement,\n \"http://www.w3.org/XML/1998/namespace\",\n \"xml:space\",\n value\n );\n break;\n case \"is\":\n setValueForAttribute(domElement, \"is\", value);\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (\n !(2 < key.length) ||\n (\"o\" !== key[0] && \"O\" !== key[0]) ||\n (\"n\" !== key[1] && \"N\" !== key[1])\n )\n (key = aliases.get(key) || key),\n setValueForAttribute(domElement, key, value);\n }\n}\nfunction setPropOnCustomElement(domElement, tag, key, value, props, prevValue) {\n switch (key) {\n case \"style\":\n setValueForStyles(domElement, value, prevValue);\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != value) {\n if (\"object\" !== typeof value || !(\"__html\" in value))\n throw Error(formatProdErrorMessage(61));\n key = value.__html;\n if (null != key) {\n if (null != props.children) throw Error(formatProdErrorMessage(60));\n domElement.innerHTML = key;\n }\n }\n break;\n case \"children\":\n \"string\" === typeof value\n ? setTextContent(domElement, value)\n : (\"number\" === typeof value || \"bigint\" === typeof value) &&\n setTextContent(domElement, \"\" + value);\n break;\n case \"onScroll\":\n null != value && listenToNonDelegatedEvent(\"scroll\", domElement);\n break;\n case \"onScrollEnd\":\n null != value && listenToNonDelegatedEvent(\"scrollend\", domElement);\n break;\n case \"onClick\":\n null != value && (domElement.onclick = noop$1);\n break;\n case \"suppressContentEditableWarning\":\n case \"suppressHydrationWarning\":\n case \"innerHTML\":\n case \"ref\":\n break;\n case \"innerText\":\n case \"textContent\":\n break;\n default:\n if (!registrationNameDependencies.hasOwnProperty(key))\n a: {\n if (\n \"o\" === key[0] &&\n \"n\" === key[1] &&\n ((props = key.endsWith(\"Capture\")),\n (tag = key.slice(2, props ? key.length - 7 : void 0)),\n (prevValue = domElement[internalPropsKey] || null),\n (prevValue = null != prevValue ? prevValue[key] : null),\n \"function\" === typeof prevValue &&\n domElement.removeEventListener(tag, prevValue, props),\n \"function\" === typeof value)\n ) {\n \"function\" !== typeof prevValue &&\n null !== prevValue &&\n (key in domElement\n ? (domElement[key] = null)\n : domElement.hasAttribute(key) &&\n domElement.removeAttribute(key));\n domElement.addEventListener(tag, value, props);\n break a;\n }\n key in domElement\n ? (domElement[key] = value)\n : !0 === value\n ? domElement.setAttribute(key, \"\")\n : setValueForAttribute(domElement, key, value);\n }\n }\n}\nfunction setInitialProperties(domElement, tag, props) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"img\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n var hasSrc = !1,\n hasSrcSet = !1,\n propKey;\n for (propKey in props)\n if (props.hasOwnProperty(propKey)) {\n var propValue = props[propKey];\n if (null != propValue)\n switch (propKey) {\n case \"src\":\n hasSrc = !0;\n break;\n case \"srcSet\":\n hasSrcSet = !0;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, propKey, propValue, props, null);\n }\n }\n hasSrcSet &&\n setProp(domElement, tag, \"srcSet\", props.srcSet, props, null);\n hasSrc && setProp(domElement, tag, \"src\", props.src, props, null);\n return;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n var defaultValue = (propKey = propValue = hasSrcSet = null),\n checked = null,\n defaultChecked = null;\n for (hasSrc in props)\n if (props.hasOwnProperty(hasSrc)) {\n var propValue$188 = props[hasSrc];\n if (null != propValue$188)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$188;\n break;\n case \"type\":\n propValue = propValue$188;\n break;\n case \"checked\":\n checked = propValue$188;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$188;\n break;\n case \"value\":\n propKey = propValue$188;\n break;\n case \"defaultValue\":\n defaultValue = propValue$188;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$188)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$188, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\n track(domElement);\n return;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n hasSrc = propValue = propKey = null;\n for (hasSrcSet in props)\n if (\n props.hasOwnProperty(hasSrcSet) &&\n ((defaultValue = props[hasSrcSet]), null != defaultValue)\n )\n switch (hasSrcSet) {\n case \"value\":\n propKey = defaultValue;\n break;\n case \"defaultValue\":\n propValue = defaultValue;\n break;\n case \"multiple\":\n hasSrc = defaultValue;\n default:\n setProp(domElement, tag, hasSrcSet, defaultValue, props, null);\n }\n tag = propKey;\n props = propValue;\n domElement.multiple = !!hasSrc;\n null != tag\n ? updateOptions(domElement, !!hasSrc, tag, !1)\n : null != props && updateOptions(domElement, !!hasSrc, props, !0);\n return;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", domElement);\n propKey = hasSrcSet = hasSrc = null;\n for (propValue in props)\n if (\n props.hasOwnProperty(propValue) &&\n ((defaultValue = props[propValue]), null != defaultValue)\n )\n switch (propValue) {\n case \"value\":\n hasSrc = defaultValue;\n break;\n case \"defaultValue\":\n hasSrcSet = defaultValue;\n break;\n case \"children\":\n propKey = defaultValue;\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != defaultValue) throw Error(formatProdErrorMessage(91));\n break;\n default:\n setProp(domElement, tag, propValue, defaultValue, props, null);\n }\n initTextarea(domElement, hasSrc, hasSrcSet, propKey);\n track(domElement);\n return;\n case \"option\":\n for (checked in props)\n if (\n props.hasOwnProperty(checked) &&\n ((hasSrc = props[checked]), null != hasSrc)\n )\n switch (checked) {\n case \"selected\":\n domElement.selected =\n hasSrc &&\n \"function\" !== typeof hasSrc &&\n \"symbol\" !== typeof hasSrc;\n break;\n default:\n setProp(domElement, tag, checked, hasSrc, props, null);\n }\n return;\n case \"dialog\":\n listenToNonDelegatedEvent(\"beforetoggle\", domElement);\n listenToNonDelegatedEvent(\"toggle\", domElement);\n listenToNonDelegatedEvent(\"cancel\", domElement);\n listenToNonDelegatedEvent(\"close\", domElement);\n break;\n case \"iframe\":\n case \"object\":\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"video\":\n case \"audio\":\n for (hasSrc = 0; hasSrc < mediaEventTypes.length; hasSrc++)\n listenToNonDelegatedEvent(mediaEventTypes[hasSrc], domElement);\n break;\n case \"image\":\n listenToNonDelegatedEvent(\"error\", domElement);\n listenToNonDelegatedEvent(\"load\", domElement);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", domElement);\n break;\n case \"embed\":\n case \"source\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", domElement),\n listenToNonDelegatedEvent(\"load\", domElement);\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (defaultChecked in props)\n if (\n props.hasOwnProperty(defaultChecked) &&\n ((hasSrc = props[defaultChecked]), null != hasSrc)\n )\n switch (defaultChecked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n throw Error(formatProdErrorMessage(137, tag));\n default:\n setProp(domElement, tag, defaultChecked, hasSrc, props, null);\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (propValue$188 in props)\n props.hasOwnProperty(propValue$188) &&\n ((hasSrc = props[propValue$188]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$188,\n hasSrc,\n props,\n void 0\n ));\n return;\n }\n }\n for (defaultValue in props)\n props.hasOwnProperty(defaultValue) &&\n ((hasSrc = props[defaultValue]),\n null != hasSrc &&\n setProp(domElement, tag, defaultValue, hasSrc, props, null));\n}\nfunction updateProperties(domElement, tag, lastProps, nextProps) {\n switch (tag) {\n case \"div\":\n case \"span\":\n case \"svg\":\n case \"path\":\n case \"a\":\n case \"g\":\n case \"p\":\n case \"li\":\n break;\n case \"input\":\n var name = null,\n type = null,\n value = null,\n defaultValue = null,\n lastDefaultValue = null,\n checked = null,\n defaultChecked = null;\n for (propKey in lastProps) {\n var lastProp = lastProps[propKey];\n if (lastProps.hasOwnProperty(propKey) && null != lastProp)\n switch (propKey) {\n case \"checked\":\n break;\n case \"value\":\n break;\n case \"defaultValue\":\n lastDefaultValue = lastProp;\n default:\n nextProps.hasOwnProperty(propKey) ||\n setProp(domElement, tag, propKey, null, nextProps, lastProp);\n }\n }\n for (var propKey$205 in nextProps) {\n var propKey = nextProps[propKey$205];\n lastProp = lastProps[propKey$205];\n if (\n nextProps.hasOwnProperty(propKey$205) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$205) {\n case \"type\":\n type = propKey;\n break;\n case \"name\":\n name = propKey;\n break;\n case \"checked\":\n checked = propKey;\n break;\n case \"defaultChecked\":\n defaultChecked = propKey;\n break;\n case \"value\":\n value = propKey;\n break;\n case \"defaultValue\":\n defaultValue = propKey;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n propKey !== lastProp &&\n setProp(\n domElement,\n tag,\n propKey$205,\n propKey,\n nextProps,\n lastProp\n );\n }\n }\n updateInput(\n domElement,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n );\n return;\n case \"select\":\n propKey = value = defaultValue = propKey$205 = null;\n for (type in lastProps)\n if (\n ((lastDefaultValue = lastProps[type]),\n lastProps.hasOwnProperty(type) && null != lastDefaultValue)\n )\n switch (type) {\n case \"value\":\n break;\n case \"multiple\":\n propKey = lastDefaultValue;\n default:\n nextProps.hasOwnProperty(type) ||\n setProp(\n domElement,\n tag,\n type,\n null,\n nextProps,\n lastDefaultValue\n );\n }\n for (name in nextProps)\n if (\n ((type = nextProps[name]),\n (lastDefaultValue = lastProps[name]),\n nextProps.hasOwnProperty(name) &&\n (null != type || null != lastDefaultValue))\n )\n switch (name) {\n case \"value\":\n propKey$205 = type;\n break;\n case \"defaultValue\":\n defaultValue = type;\n break;\n case \"multiple\":\n value = type;\n default:\n type !== lastDefaultValue &&\n setProp(\n domElement,\n tag,\n name,\n type,\n nextProps,\n lastDefaultValue\n );\n }\n tag = defaultValue;\n lastProps = value;\n nextProps = propKey;\n null != propKey$205\n ? updateOptions(domElement, !!lastProps, propKey$205, !1)\n : !!nextProps !== !!lastProps &&\n (null != tag\n ? updateOptions(domElement, !!lastProps, tag, !0)\n : updateOptions(domElement, !!lastProps, lastProps ? [] : \"\", !1));\n return;\n case \"textarea\":\n propKey = propKey$205 = null;\n for (defaultValue in lastProps)\n if (\n ((name = lastProps[defaultValue]),\n lastProps.hasOwnProperty(defaultValue) &&\n null != name &&\n !nextProps.hasOwnProperty(defaultValue))\n )\n switch (defaultValue) {\n case \"value\":\n break;\n case \"children\":\n break;\n default:\n setProp(domElement, tag, defaultValue, null, nextProps, name);\n }\n for (value in nextProps)\n if (\n ((name = nextProps[value]),\n (type = lastProps[value]),\n nextProps.hasOwnProperty(value) && (null != name || null != type))\n )\n switch (value) {\n case \"value\":\n propKey$205 = name;\n break;\n case \"defaultValue\":\n propKey = name;\n break;\n case \"children\":\n break;\n case \"dangerouslySetInnerHTML\":\n if (null != name) throw Error(formatProdErrorMessage(91));\n break;\n default:\n name !== type &&\n setProp(domElement, tag, value, name, nextProps, type);\n }\n updateTextarea(domElement, propKey$205, propKey);\n return;\n case \"option\":\n for (var propKey$221 in lastProps)\n if (\n ((propKey$205 = lastProps[propKey$221]),\n lastProps.hasOwnProperty(propKey$221) &&\n null != propKey$205 &&\n !nextProps.hasOwnProperty(propKey$221))\n )\n switch (propKey$221) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$221,\n null,\n nextProps,\n propKey$205\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$205 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$205 !== propKey &&\n (null != propKey$205 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$205 &&\n \"function\" !== typeof propKey$205 &&\n \"symbol\" !== typeof propKey$205;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$205,\n nextProps,\n propKey\n );\n }\n return;\n case \"img\":\n case \"link\":\n case \"area\":\n case \"base\":\n case \"br\":\n case \"col\":\n case \"embed\":\n case \"hr\":\n case \"keygen\":\n case \"meta\":\n case \"param\":\n case \"source\":\n case \"track\":\n case \"wbr\":\n case \"menuitem\":\n for (var propKey$226 in lastProps)\n (propKey$205 = lastProps[propKey$226]),\n lastProps.hasOwnProperty(propKey$226) &&\n null != propKey$205 &&\n !nextProps.hasOwnProperty(propKey$226) &&\n setProp(domElement, tag, propKey$226, null, nextProps, propKey$205);\n for (checked in nextProps)\n if (\n ((propKey$205 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$205 !== propKey &&\n (null != propKey$205 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$205)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$205,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$231 in lastProps)\n (propKey$205 = lastProps[propKey$231]),\n lastProps.hasOwnProperty(propKey$231) &&\n void 0 !== propKey$205 &&\n !nextProps.hasOwnProperty(propKey$231) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$231,\n void 0,\n nextProps,\n propKey$205\n );\n for (defaultChecked in nextProps)\n (propKey$205 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$205 === propKey ||\n (void 0 === propKey$205 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$205,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$236 in lastProps)\n (propKey$205 = lastProps[propKey$236]),\n lastProps.hasOwnProperty(propKey$236) &&\n null != propKey$205 &&\n !nextProps.hasOwnProperty(propKey$236) &&\n setProp(domElement, tag, propKey$236, null, nextProps, propKey$205);\n for (lastProp in nextProps)\n (propKey$205 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$205 === propKey ||\n (null == propKey$205 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$205, nextProps, propKey);\n}\nvar eventsEnabled = null,\n selectionInformation = null;\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n return 9 === rootContainerElement.nodeType\n ? rootContainerElement\n : rootContainerElement.ownerDocument;\n}\nfunction getOwnHostContext(namespaceURI) {\n switch (namespaceURI) {\n case \"http://www.w3.org/2000/svg\":\n return 1;\n case \"http://www.w3.org/1998/Math/MathML\":\n return 2;\n default:\n return 0;\n }\n}\nfunction getChildHostContextProd(parentNamespace, type) {\n if (0 === parentNamespace)\n switch (type) {\n case \"svg\":\n return 1;\n case \"math\":\n return 2;\n default:\n return 0;\n }\n return 1 === parentNamespace && \"foreignObject\" === type\n ? 0\n : parentNamespace;\n}\nfunction shouldSetTextContent(type, props) {\n return (\n \"textarea\" === type ||\n \"noscript\" === type ||\n \"string\" === typeof props.children ||\n \"number\" === typeof props.children ||\n \"bigint\" === typeof props.children ||\n (\"object\" === typeof props.dangerouslySetInnerHTML &&\n null !== props.dangerouslySetInnerHTML &&\n null != props.dangerouslySetInnerHTML.__html)\n );\n}\nvar currentPopstateTransitionEvent = null;\nfunction shouldAttemptEagerTransition() {\n var event = window.event;\n if (event && \"popstate\" === event.type) {\n if (event === currentPopstateTransitionEvent) return !1;\n currentPopstateTransitionEvent = event;\n return !0;\n }\n currentPopstateTransitionEvent = null;\n return !1;\n}\nvar scheduleTimeout = \"function\" === typeof setTimeout ? setTimeout : void 0,\n cancelTimeout = \"function\" === typeof clearTimeout ? clearTimeout : void 0,\n localPromise = \"function\" === typeof Promise ? Promise : void 0,\n scheduleMicrotask =\n \"function\" === typeof queueMicrotask\n ? queueMicrotask\n : \"undefined\" !== typeof localPromise\n ? function (callback) {\n return localPromise\n .resolve(null)\n .then(callback)\n .catch(handleErrorInNextTick);\n }\n : scheduleTimeout;\nfunction handleErrorInNextTick(error) {\n setTimeout(function () {\n throw error;\n });\n}\nfunction isSingletonScope(type) {\n return \"head\" === type;\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n var node = suspenseInstance,\n possiblePreambleContribution = 0,\n depth = 0;\n do {\n var nextNode = node.nextSibling;\n parentInstance.removeChild(node);\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node)) {\n if (\n 0 < possiblePreambleContribution &&\n 8 > possiblePreambleContribution\n ) {\n node = possiblePreambleContribution;\n var ownerDocument = parentInstance.ownerDocument;\n node & 1 && releaseSingletonInstance(ownerDocument.documentElement);\n node & 2 && releaseSingletonInstance(ownerDocument.body);\n if (node & 4)\n for (\n node = ownerDocument.head,\n releaseSingletonInstance(node),\n ownerDocument = node.firstChild;\n ownerDocument;\n\n ) {\n var nextNode$jscomp$0 = ownerDocument.nextSibling,\n nodeName = ownerDocument.nodeName;\n ownerDocument[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === ownerDocument.rel.toLowerCase()) ||\n node.removeChild(ownerDocument);\n ownerDocument = nextNode$jscomp$0;\n }\n }\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(suspenseInstance);\n return;\n }\n depth--;\n } else\n \"$\" === node || \"$?\" === node || \"$!\" === node\n ? depth++\n : (possiblePreambleContribution = node.charCodeAt(0) - 48);\n else possiblePreambleContribution = 0;\n node = nextNode;\n } while (node);\n retryIfBlockedOn(suspenseInstance);\n}\nfunction clearContainerSparingly(container) {\n var nextNode = container.firstChild;\n nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling);\n for (; nextNode; ) {\n var node = nextNode;\n nextNode = nextNode.nextSibling;\n switch (node.nodeName) {\n case \"HTML\":\n case \"HEAD\":\n case \"BODY\":\n clearContainerSparingly(node);\n detachDeletedInstance(node);\n continue;\n case \"SCRIPT\":\n case \"STYLE\":\n continue;\n case \"LINK\":\n if (\"stylesheet\" === node.rel.toLowerCase()) continue;\n }\n container.removeChild(node);\n }\n}\nfunction canHydrateInstance(instance, type, props, inRootOrSingleton) {\n for (; 1 === instance.nodeType; ) {\n var anyProps = props;\n if (instance.nodeName.toLowerCase() !== type.toLowerCase()) {\n if (\n !inRootOrSingleton &&\n (\"INPUT\" !== instance.nodeName || \"hidden\" !== instance.type)\n )\n break;\n } else if (!inRootOrSingleton)\n if (\"input\" === type && \"hidden\" === instance.type) {\n var name = null == anyProps.name ? null : \"\" + anyProps.name;\n if (\n \"hidden\" === anyProps.type &&\n instance.getAttribute(\"name\") === name\n )\n return instance;\n } else return instance;\n else if (!instance[internalHoistableMarker])\n switch (type) {\n case \"meta\":\n if (!instance.hasAttribute(\"itemprop\")) break;\n return instance;\n case \"link\":\n name = instance.getAttribute(\"rel\");\n if (\"stylesheet\" === name && instance.hasAttribute(\"data-precedence\"))\n break;\n else if (\n name !== anyProps.rel ||\n instance.getAttribute(\"href\") !==\n (null == anyProps.href || \"\" === anyProps.href\n ? null\n : anyProps.href) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) ||\n instance.getAttribute(\"title\") !==\n (null == anyProps.title ? null : anyProps.title)\n )\n break;\n return instance;\n case \"style\":\n if (instance.hasAttribute(\"data-precedence\")) break;\n return instance;\n case \"script\":\n name = instance.getAttribute(\"src\");\n if (\n (name !== (null == anyProps.src ? null : anyProps.src) ||\n instance.getAttribute(\"type\") !==\n (null == anyProps.type ? null : anyProps.type) ||\n instance.getAttribute(\"crossorigin\") !==\n (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) &&\n name &&\n instance.hasAttribute(\"async\") &&\n !instance.hasAttribute(\"itemprop\")\n )\n break;\n return instance;\n default:\n return instance;\n }\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) break;\n }\n return null;\n}\nfunction canHydrateTextInstance(instance, text, inRootOrSingleton) {\n if (\"\" === text) return null;\n for (; 3 !== instance.nodeType; ) {\n if (\n (1 !== instance.nodeType ||\n \"INPUT\" !== instance.nodeName ||\n \"hidden\" !== instance.type) &&\n !inRootOrSingleton\n )\n return null;\n instance = getNextHydratable(instance.nextSibling);\n if (null === instance) return null;\n }\n return instance;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"complete\" === instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$?\" !== instance.data || \"complete\" === ownerDocument.readyState)\n callback();\n else {\n var listener = function () {\n callback();\n ownerDocument.removeEventListener(\"DOMContentLoaded\", listener);\n };\n ownerDocument.addEventListener(\"DOMContentLoaded\", listener);\n instance._reactRetry = listener;\n }\n}\nfunction getNextHydratable(node) {\n for (; null != node; node = node.nextSibling) {\n var nodeType = node.nodeType;\n if (1 === nodeType || 3 === nodeType) break;\n if (8 === nodeType) {\n nodeType = node.data;\n if (\n \"$\" === nodeType ||\n \"$!\" === nodeType ||\n \"$?\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getParentSuspenseInstance(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\"$\" === data || \"$!\" === data || \"$?\" === data) {\n if (0 === depth) return targetInstance;\n depth--;\n } else \"/$\" === data && depth++;\n }\n targetInstance = targetInstance.previousSibling;\n }\n return null;\n}\nfunction resolveSingletonInstance(type, props, rootContainerInstance) {\n props = getOwnerDocumentFromRootContainer(rootContainerInstance);\n switch (type) {\n case \"html\":\n type = props.documentElement;\n if (!type) throw Error(formatProdErrorMessage(452));\n return type;\n case \"head\":\n type = props.head;\n if (!type) throw Error(formatProdErrorMessage(453));\n return type;\n case \"body\":\n type = props.body;\n if (!type) throw Error(formatProdErrorMessage(454));\n return type;\n default:\n throw Error(formatProdErrorMessage(451));\n }\n}\nfunction releaseSingletonInstance(instance) {\n for (var attributes = instance.attributes; attributes.length; )\n instance.removeAttributeNode(attributes[0]);\n detachDeletedInstance(instance);\n}\nvar preloadPropsMap = new Map(),\n preconnectsSet = new Set();\nfunction getHoistableRoot(container) {\n return \"function\" === typeof container.getRootNode\n ? container.getRootNode()\n : 9 === container.nodeType\n ? container\n : container.ownerDocument;\n}\nvar previousDispatcher = ReactDOMSharedInternals.d;\nReactDOMSharedInternals.d = {\n f: flushSyncWork,\n r: requestFormReset,\n D: prefetchDNS,\n C: preconnect,\n L: preload,\n m: preloadModule,\n X: preinitScript,\n S: preinitStyle,\n M: preinitModuleScript\n};\nfunction flushSyncWork() {\n var previousWasRendering = previousDispatcher.f(),\n wasRendering = flushSyncWork$1();\n return previousWasRendering || wasRendering;\n}\nfunction requestFormReset(form) {\n var formInst = getInstanceFromNode(form);\n null !== formInst && 5 === formInst.tag && \"form\" === formInst.type\n ? requestFormReset$1(formInst)\n : previousDispatcher.r(form);\n}\nvar globalDocument = \"undefined\" === typeof document ? null : document;\nfunction preconnectAs(rel, href, crossOrigin) {\n var ownerDocument = globalDocument;\n if (ownerDocument && \"string\" === typeof href && href) {\n var limitedEscapedHref =\n escapeSelectorAttributeValueInsideDoubleQuotes(href);\n limitedEscapedHref =\n 'link[rel=\"' + rel + '\"][href=\"' + limitedEscapedHref + '\"]';\n \"string\" === typeof crossOrigin &&\n (limitedEscapedHref += '[crossorigin=\"' + crossOrigin + '\"]');\n preconnectsSet.has(limitedEscapedHref) ||\n (preconnectsSet.add(limitedEscapedHref),\n (rel = { rel: rel, crossOrigin: crossOrigin, href: href }),\n null === ownerDocument.querySelector(limitedEscapedHref) &&\n ((href = ownerDocument.createElement(\"link\")),\n setInitialProperties(href, \"link\", rel),\n markNodeAsHoistable(href),\n ownerDocument.head.appendChild(href)));\n }\n}\nfunction prefetchDNS(href) {\n previousDispatcher.D(href);\n preconnectAs(\"dns-prefetch\", href, null);\n}\nfunction preconnect(href, crossOrigin) {\n previousDispatcher.C(href, crossOrigin);\n preconnectAs(\"preconnect\", href, crossOrigin);\n}\nfunction preload(href, as, options) {\n previousDispatcher.L(href, as, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href && as) {\n var preloadSelector =\n 'link[rel=\"preload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"]';\n \"image\" === as\n ? options && options.imageSrcSet\n ? ((preloadSelector +=\n '[imagesrcset=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSrcSet\n ) +\n '\"]'),\n \"string\" === typeof options.imageSizes &&\n (preloadSelector +=\n '[imagesizes=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n options.imageSizes\n ) +\n '\"]'))\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]')\n : (preloadSelector +=\n '[href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]');\n var key = preloadSelector;\n switch (as) {\n case \"style\":\n key = getStyleKey(href);\n break;\n case \"script\":\n key = getScriptKey(href);\n }\n preloadPropsMap.has(key) ||\n ((href = assign(\n {\n rel: \"preload\",\n href:\n \"image\" === as && options && options.imageSrcSet ? void 0 : href,\n as: as\n },\n options\n )),\n preloadPropsMap.set(key, href),\n null !== ownerDocument.querySelector(preloadSelector) ||\n (\"style\" === as &&\n ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) ||\n (\"script\" === as &&\n ownerDocument.querySelector(getScriptSelectorFromKey(key))) ||\n ((as = ownerDocument.createElement(\"link\")),\n setInitialProperties(as, \"link\", href),\n markNodeAsHoistable(as),\n ownerDocument.head.appendChild(as)));\n }\n}\nfunction preloadModule(href, options) {\n previousDispatcher.m(href, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var as = options && \"string\" === typeof options.as ? options.as : \"script\",\n preloadSelector =\n 'link[rel=\"modulepreload\"][as=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(as) +\n '\"][href=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(href) +\n '\"]',\n key = preloadSelector;\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n key = getScriptKey(href);\n }\n if (\n !preloadPropsMap.has(key) &&\n ((href = assign({ rel: \"modulepreload\", href: href }, options)),\n preloadPropsMap.set(key, href),\n null === ownerDocument.querySelector(preloadSelector))\n ) {\n switch (as) {\n case \"audioworklet\":\n case \"paintworklet\":\n case \"serviceworker\":\n case \"sharedworker\":\n case \"worker\":\n case \"script\":\n if (ownerDocument.querySelector(getScriptSelectorFromKey(key)))\n return;\n }\n as = ownerDocument.createElement(\"link\");\n setInitialProperties(as, \"link\", href);\n markNodeAsHoistable(as);\n ownerDocument.head.appendChild(as);\n }\n }\n}\nfunction preinitStyle(href, precedence, options) {\n previousDispatcher.S(href, precedence, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && href) {\n var styles = getResourcesFromRoot(ownerDocument).hoistableStyles,\n key = getStyleKey(href);\n precedence = precedence || \"default\";\n var resource = styles.get(key);\n if (!resource) {\n var state = { loading: 0, preload: null };\n if (\n (resource = ownerDocument.querySelector(\n getStylesheetSelectorFromKey(key)\n ))\n )\n state.loading = 5;\n else {\n href = assign(\n { rel: \"stylesheet\", href: href, \"data-precedence\": precedence },\n options\n );\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(href, options);\n var link = (resource = ownerDocument.createElement(\"link\"));\n markNodeAsHoistable(link);\n setInitialProperties(link, \"link\", href);\n link._p = new Promise(function (resolve, reject) {\n link.onload = resolve;\n link.onerror = reject;\n });\n link.addEventListener(\"load\", function () {\n state.loading |= 1;\n });\n link.addEventListener(\"error\", function () {\n state.loading |= 2;\n });\n state.loading |= 4;\n insertStylesheet(resource, precedence, ownerDocument);\n }\n resource = {\n type: \"stylesheet\",\n instance: resource,\n count: 1,\n state: state\n };\n styles.set(key, resource);\n }\n }\n}\nfunction preinitScript(src, options) {\n previousDispatcher.X(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0 }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction preinitModuleScript(src, options) {\n previousDispatcher.M(src, options);\n var ownerDocument = globalDocument;\n if (ownerDocument && src) {\n var scripts = getResourcesFromRoot(ownerDocument).hoistableScripts,\n key = getScriptKey(src),\n resource = scripts.get(key);\n resource ||\n ((resource = ownerDocument.querySelector(getScriptSelectorFromKey(key))),\n resource ||\n ((src = assign({ src: src, async: !0, type: \"module\" }, options)),\n (options = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForScript(src, options),\n (resource = ownerDocument.createElement(\"script\")),\n markNodeAsHoistable(resource),\n setInitialProperties(resource, \"link\", src),\n ownerDocument.head.appendChild(resource)),\n (resource = {\n type: \"script\",\n instance: resource,\n count: 1,\n state: null\n }),\n scripts.set(key, resource));\n }\n}\nfunction getResource(type, currentProps, pendingProps, currentResource) {\n var JSCompiler_inline_result = (JSCompiler_inline_result =\n rootInstanceStackCursor.current)\n ? getHoistableRoot(JSCompiler_inline_result)\n : null;\n if (!JSCompiler_inline_result) throw Error(formatProdErrorMessage(446));\n switch (type) {\n case \"meta\":\n case \"title\":\n return null;\n case \"style\":\n return \"string\" === typeof pendingProps.precedence &&\n \"string\" === typeof pendingProps.href\n ? ((currentProps = getStyleKey(pendingProps.href)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"style\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null };\n case \"link\":\n if (\n \"stylesheet\" === pendingProps.rel &&\n \"string\" === typeof pendingProps.href &&\n \"string\" === typeof pendingProps.precedence\n ) {\n type = getStyleKey(pendingProps.href);\n var styles$244 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$245 = styles$244.get(type);\n resource$245 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$245 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$244.set(type, resource$245),\n (styles$244 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$244._p &&\n ((resource$245.instance = styles$244),\n (resource$245.state.loading = 5)),\n preloadPropsMap.has(type) ||\n ((pendingProps = {\n rel: \"preload\",\n as: \"style\",\n href: pendingProps.href,\n crossOrigin: pendingProps.crossOrigin,\n integrity: pendingProps.integrity,\n media: pendingProps.media,\n hrefLang: pendingProps.hrefLang,\n referrerPolicy: pendingProps.referrerPolicy\n }),\n preloadPropsMap.set(type, pendingProps),\n styles$244 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$245.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$245;\n }\n if (currentProps && null !== currentResource)\n throw Error(formatProdErrorMessage(529, \"\"));\n return null;\n case \"script\":\n return (\n (currentProps = pendingProps.async),\n (pendingProps = pendingProps.src),\n \"string\" === typeof pendingProps &&\n currentProps &&\n \"function\" !== typeof currentProps &&\n \"symbol\" !== typeof currentProps\n ? ((currentProps = getScriptKey(pendingProps)),\n (pendingProps = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableScripts),\n (currentResource = pendingProps.get(currentProps)),\n currentResource ||\n ((currentResource = {\n type: \"script\",\n instance: null,\n count: 0,\n state: null\n }),\n pendingProps.set(currentProps, currentResource)),\n currentResource)\n : { type: \"void\", instance: null, count: 0, state: null }\n );\n default:\n throw Error(formatProdErrorMessage(444, type));\n }\n}\nfunction getStyleKey(href) {\n return 'href=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '\"';\n}\nfunction getStylesheetSelectorFromKey(key) {\n return 'link[rel=\"stylesheet\"][' + key + \"]\";\n}\nfunction stylesheetPropsFromRawProps(rawProps) {\n return assign({}, rawProps, {\n \"data-precedence\": rawProps.precedence,\n precedence: null\n });\n}\nfunction preloadStylesheet(ownerDocument, key, preloadProps, state) {\n ownerDocument.querySelector('link[rel=\"preload\"][as=\"style\"][' + key + \"]\")\n ? (state.loading = 1)\n : ((key = ownerDocument.createElement(\"link\")),\n (state.preload = key),\n key.addEventListener(\"load\", function () {\n return (state.loading |= 1);\n }),\n key.addEventListener(\"error\", function () {\n return (state.loading |= 2);\n }),\n setInitialProperties(key, \"link\", preloadProps),\n markNodeAsHoistable(key),\n ownerDocument.head.appendChild(key));\n}\nfunction getScriptKey(src) {\n return '[src=\"' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '\"]';\n}\nfunction getScriptSelectorFromKey(key) {\n return \"script[async]\" + key;\n}\nfunction acquireResource(hoistableRoot, resource, props) {\n resource.count++;\n if (null === resource.instance)\n switch (resource.type) {\n case \"style\":\n var instance = hoistableRoot.querySelector(\n 'style[data-href~=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(props.href) +\n '\"]'\n );\n if (instance)\n return (\n (resource.instance = instance),\n markNodeAsHoistable(instance),\n instance\n );\n var styleProps = assign({}, props, {\n \"data-href\": props.href,\n \"data-precedence\": props.precedence,\n href: null,\n precedence: null\n });\n instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement(\n \"style\"\n );\n markNodeAsHoistable(instance);\n setInitialProperties(instance, \"style\", styleProps);\n insertStylesheet(instance, props.precedence, hoistableRoot);\n return (resource.instance = instance);\n case \"stylesheet\":\n styleProps = getStyleKey(props.href);\n var instance$250 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$250)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$250),\n markNodeAsHoistable(instance$250),\n instance$250\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$250 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$250);\n var linkInstance = instance$250;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$250, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$250, props.precedence, hoistableRoot);\n return (resource.instance = instance$250);\n case \"script\":\n instance$250 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$250)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$250)))\n (instance = assign({}, props)),\n adoptPreloadPropsForScript(instance, styleProps);\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n styleProps = hoistableRoot.createElement(\"script\");\n markNodeAsHoistable(styleProps);\n setInitialProperties(styleProps, \"link\", instance);\n hoistableRoot.head.appendChild(styleProps);\n return (resource.instance = styleProps);\n case \"void\":\n return null;\n default:\n throw Error(formatProdErrorMessage(443, resource.type));\n }\n else\n \"stylesheet\" === resource.type &&\n 0 === (resource.state.loading & 4) &&\n ((instance = resource.instance),\n (resource.state.loading |= 4),\n insertStylesheet(instance, props.precedence, hoistableRoot));\n return resource.instance;\n}\nfunction insertStylesheet(instance, precedence, root) {\n for (\n var nodes = root.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-precedence],style[data-precedence]'\n ),\n last = nodes.length ? nodes[nodes.length - 1] : null,\n prior = last,\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (node.dataset.precedence === precedence) prior = node;\n else if (prior !== last) break;\n }\n prior\n ? prior.parentNode.insertBefore(instance, prior.nextSibling)\n : ((precedence = 9 === root.nodeType ? root.head : root),\n precedence.insertBefore(instance, precedence.firstChild));\n}\nfunction adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) {\n null == stylesheetProps.crossOrigin &&\n (stylesheetProps.crossOrigin = preloadProps.crossOrigin);\n null == stylesheetProps.referrerPolicy &&\n (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy);\n null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title);\n}\nfunction adoptPreloadPropsForScript(scriptProps, preloadProps) {\n null == scriptProps.crossOrigin &&\n (scriptProps.crossOrigin = preloadProps.crossOrigin);\n null == scriptProps.referrerPolicy &&\n (scriptProps.referrerPolicy = preloadProps.referrerPolicy);\n null == scriptProps.integrity &&\n (scriptProps.integrity = preloadProps.integrity);\n}\nvar tagCaches = null;\nfunction getHydratableHoistableCache(type, keyAttribute, ownerDocument) {\n if (null === tagCaches) {\n var cache = new Map();\n var caches = (tagCaches = new Map());\n caches.set(ownerDocument, cache);\n } else\n (caches = tagCaches),\n (cache = caches.get(ownerDocument)),\n cache || ((cache = new Map()), caches.set(ownerDocument, cache));\n if (cache.has(type)) return cache;\n cache.set(type, null);\n ownerDocument = ownerDocument.getElementsByTagName(type);\n for (caches = 0; caches < ownerDocument.length; caches++) {\n var node = ownerDocument[caches];\n if (\n !(\n node[internalHoistableMarker] ||\n node[internalInstanceKey] ||\n (\"link\" === type && \"stylesheet\" === node.getAttribute(\"rel\"))\n ) &&\n \"http://www.w3.org/2000/svg\" !== node.namespaceURI\n ) {\n var nodeKey = node.getAttribute(keyAttribute) || \"\";\n nodeKey = type + nodeKey;\n var existing = cache.get(nodeKey);\n existing ? existing.push(node) : cache.set(nodeKey, [node]);\n }\n }\n return cache;\n}\nfunction mountHoistable(hoistableRoot, type, instance) {\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n hoistableRoot.head.insertBefore(\n instance,\n \"title\" === type ? hoistableRoot.querySelector(\"head > title\") : null\n );\n}\nfunction isHostHoistableType(type, props, hostContext) {\n if (1 === hostContext || null != props.itemProp) return !1;\n switch (type) {\n case \"meta\":\n case \"title\":\n return !0;\n case \"style\":\n if (\n \"string\" !== typeof props.precedence ||\n \"string\" !== typeof props.href ||\n \"\" === props.href\n )\n break;\n return !0;\n case \"link\":\n if (\n \"string\" !== typeof props.rel ||\n \"string\" !== typeof props.href ||\n \"\" === props.href ||\n props.onLoad ||\n props.onError\n )\n break;\n switch (props.rel) {\n case \"stylesheet\":\n return (\n (type = props.disabled),\n \"string\" === typeof props.precedence && null == type\n );\n default:\n return !0;\n }\n case \"script\":\n if (\n props.async &&\n \"function\" !== typeof props.async &&\n \"symbol\" !== typeof props.async &&\n !props.onLoad &&\n !props.onError &&\n props.src &&\n \"string\" === typeof props.src\n )\n return !0;\n }\n return !1;\n}\nfunction preloadResource(resource) {\n return \"stylesheet\" === resource.type && 0 === (resource.state.loading & 3)\n ? !1\n : !0;\n}\nvar suspendedState = null;\nfunction noop() {}\nfunction suspendResource(hoistableRoot, resource, props) {\n if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n var state = suspendedState;\n if (\n \"stylesheet\" === resource.type &&\n (\"string\" !== typeof props.media ||\n !1 !== matchMedia(props.media).matches) &&\n 0 === (resource.state.loading & 4)\n ) {\n if (null === resource.instance) {\n var key = getStyleKey(props.href),\n instance = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(key)\n );\n if (instance) {\n hoistableRoot = instance._p;\n null !== hoistableRoot &&\n \"object\" === typeof hoistableRoot &&\n \"function\" === typeof hoistableRoot.then &&\n (state.count++,\n (state = onUnsuspend.bind(state)),\n hoistableRoot.then(state, state));\n resource.state.loading |= 4;\n resource.instance = instance;\n markNodeAsHoistable(instance);\n return;\n }\n instance = hoistableRoot.ownerDocument || hoistableRoot;\n props = stylesheetPropsFromRawProps(props);\n (key = preloadPropsMap.get(key)) &&\n adoptPreloadPropsForStylesheet(props, key);\n instance = instance.createElement(\"link\");\n markNodeAsHoistable(instance);\n var linkInstance = instance;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance, \"link\", props);\n resource.instance = instance;\n }\n null === state.stylesheets && (state.stylesheets = new Map());\n state.stylesheets.set(resource, hoistableRoot);\n (hoistableRoot = resource.state.preload) &&\n 0 === (resource.state.loading & 3) &&\n (state.count++,\n (resource = onUnsuspend.bind(state)),\n hoistableRoot.addEventListener(\"load\", resource),\n hoistableRoot.addEventListener(\"error\", resource));\n }\n}\nfunction waitForCommitToBeReady() {\n if (null === suspendedState) throw Error(formatProdErrorMessage(475));\n var state = suspendedState;\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count\n ? function (commit) {\n var stylesheetTimer = setTimeout(function () {\n state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets);\n if (state.unsuspend) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n }, 6e4);\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count)\n if (this.stylesheets) insertSuspendedStylesheets(this, this.stylesheets);\n else if (this.unsuspend) {\n var unsuspend = this.unsuspend;\n this.unsuspend = null;\n unsuspend();\n }\n}\nvar precedencesByRoot = null;\nfunction insertSuspendedStylesheets(state, resources) {\n state.stylesheets = null;\n null !== state.unsuspend &&\n (state.count++,\n (precedencesByRoot = new Map()),\n resources.forEach(insertStylesheetIntoRoot, state),\n (precedencesByRoot = null),\n onUnsuspend.call(state));\n}\nfunction insertStylesheetIntoRoot(root, resource) {\n if (!(resource.state.loading & 4)) {\n var precedences = precedencesByRoot.get(root);\n if (precedences) var last = precedences.get(null);\n else {\n precedences = new Map();\n precedencesByRoot.set(root, precedences);\n for (\n var nodes = root.querySelectorAll(\n \"link[data-precedence],style[data-precedence]\"\n ),\n i = 0;\n i < nodes.length;\n i++\n ) {\n var node = nodes[i];\n if (\n \"LINK\" === node.nodeName ||\n \"not all\" !== node.getAttribute(\"media\")\n )\n precedences.set(node.dataset.precedence, node), (last = node);\n }\n last && precedences.set(null, last);\n }\n nodes = resource.instance;\n node = nodes.getAttribute(\"data-precedence\");\n i = precedences.get(node) || last;\n i === last && precedences.set(null, nodes);\n precedences.set(node, nodes);\n this.count++;\n last = onUnsuspend.bind(this);\n nodes.addEventListener(\"load\", last);\n nodes.addEventListener(\"error\", last);\n i\n ? i.parentNode.insertBefore(nodes, i.nextSibling)\n : ((root = 9 === root.nodeType ? root.head : root),\n root.insertBefore(nodes, root.firstChild));\n resource.state.loading |= 4;\n }\n}\nvar HostTransitionContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Provider: null,\n Consumer: null,\n _currentValue: sharedNotPendingObject,\n _currentValue2: sharedNotPendingObject,\n _threadCount: 0\n};\nfunction FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n formState\n) {\n this.tag = 1;\n this.containerInfo = containerInfo;\n this.pingCache = this.current = this.pendingChildren = null;\n this.timeoutHandle = -1;\n this.callbackNode =\n this.next =\n this.pendingContext =\n this.context =\n this.cancelPendingCommit =\n null;\n this.callbackPriority = 0;\n this.expirationTimes = createLaneMap(-1);\n this.entangledLanes =\n this.shellSuspendCounter =\n this.errorRecoveryDisabledLanes =\n this.expiredLanes =\n this.warmLanes =\n this.pingedLanes =\n this.suspendedLanes =\n this.pendingLanes =\n 0;\n this.entanglements = createLaneMap(0);\n this.hiddenUpdates = createLaneMap(null);\n this.identifierPrefix = identifierPrefix;\n this.onUncaughtError = onUncaughtError;\n this.onCaughtError = onCaughtError;\n this.onRecoverableError = onRecoverableError;\n this.pooledCache = null;\n this.pooledCacheLanes = 0;\n this.formState = formState;\n this.incompleteTransitions = new Map();\n}\nfunction createFiberRoot(\n containerInfo,\n tag,\n hydrate,\n initialChildren,\n hydrationCallbacks,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n formState\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n formState\n );\n tag = 1;\n !0 === isStrictMode && (tag |= 24);\n isStrictMode = createFiberImplClass(3, null, null, tag);\n containerInfo.current = isStrictMode;\n isStrictMode.stateNode = containerInfo;\n tag = createCache();\n tag.refCount++;\n containerInfo.pooledCache = tag;\n tag.refCount++;\n isStrictMode.memoizedState = {\n element: initialChildren,\n isDehydrated: hydrate,\n cache: tag\n };\n initializeUpdateQueue(isStrictMode);\n return containerInfo;\n}\nfunction getContextForSubtree(parentComponent) {\n if (!parentComponent) return emptyContextObject;\n parentComponent = emptyContextObject;\n return parentComponent;\n}\nfunction updateContainerImpl(\n rootFiber,\n lane,\n element,\n container,\n parentComponent,\n callback\n) {\n parentComponent = getContextForSubtree(parentComponent);\n null === container.context\n ? (container.context = parentComponent)\n : (container.pendingContext = parentComponent);\n container = createUpdate(lane);\n container.payload = { element: element };\n callback = void 0 === callback ? null : callback;\n null !== callback && (container.callback = callback);\n element = enqueueUpdate(rootFiber, container, lane);\n null !== element &&\n (scheduleUpdateOnFiber(element, rootFiber, lane),\n entangleTransitions(element, rootFiber, lane));\n}\nfunction markRetryLaneImpl(fiber, retryLane) {\n fiber = fiber.memoizedState;\n if (null !== fiber && null !== fiber.dehydrated) {\n var a = fiber.retryLane;\n fiber.retryLane = 0 !== a && a < retryLane ? a : retryLane;\n }\n}\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n markRetryLaneImpl(fiber, retryLane);\n (fiber = fiber.alternate) && markRetryLaneImpl(fiber, retryLane);\n}\nfunction attemptContinuousHydration(fiber) {\n if (13 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nvar _enabled = !0;\nfunction dispatchDiscreteEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 2),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchContinuousEvent(\n domEventName,\n eventSystemFlags,\n container,\n nativeEvent\n) {\n var prevTransition = ReactSharedInternals.T;\n ReactSharedInternals.T = null;\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n (ReactDOMSharedInternals.p = 8),\n dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction dispatchEvent(\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (_enabled) {\n var blockedOn = findInstanceBlockingEvent(nativeEvent);\n if (null === blockedOn)\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n ),\n clearIfContinuousEvent(domEventName, nativeEvent);\n else if (\n queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n )\n nativeEvent.stopPropagation();\n else if (\n (clearIfContinuousEvent(domEventName, nativeEvent),\n eventSystemFlags & 4 &&\n -1 < discreteReplayableEvents.indexOf(domEventName))\n ) {\n for (; null !== blockedOn; ) {\n var fiber = getInstanceFromNode(blockedOn);\n if (null !== fiber)\n switch (fiber.tag) {\n case 3:\n fiber = fiber.stateNode;\n if (fiber.current.memoizedState.isDehydrated) {\n var lanes = getHighestPriorityLanes(fiber.pendingLanes);\n if (0 !== lanes) {\n var root = fiber;\n root.pendingLanes |= 2;\n for (root.entangledLanes |= 2; lanes; ) {\n var lane = 1 << (31 - clz32(lanes));\n root.entanglements[1] |= lane;\n lanes &= ~lane;\n }\n ensureRootIsScheduled(fiber);\n 0 === (executionContext & 6) &&\n ((workInProgressRootRenderTargetTime = now() + 500),\n flushSyncWorkAcrossRoots_impl(0, !1));\n }\n }\n break;\n case 13:\n (root = enqueueConcurrentRenderForLane(fiber, 2)),\n null !== root && scheduleUpdateOnFiber(root, fiber, 2),\n flushSyncWork$1(),\n markRetryLaneIfNotHydrated(fiber, 2);\n }\n fiber = findInstanceBlockingEvent(nativeEvent);\n null === fiber &&\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n return_targetInst,\n targetContainer\n );\n if (fiber === blockedOn) break;\n blockedOn = fiber;\n }\n null !== blockedOn && nativeEvent.stopPropagation();\n } else\n dispatchEventForPluginEventSystem(\n domEventName,\n eventSystemFlags,\n nativeEvent,\n null,\n targetContainer\n );\n }\n}\nfunction findInstanceBlockingEvent(nativeEvent) {\n nativeEvent = getEventTarget(nativeEvent);\n return findInstanceBlockingTarget(nativeEvent);\n}\nvar return_targetInst = null;\nfunction findInstanceBlockingTarget(targetNode) {\n return_targetInst = null;\n targetNode = getClosestInstanceFromNode(targetNode);\n if (null !== targetNode) {\n var nearestMounted = getNearestMountedFiber(targetNode);\n if (null === nearestMounted) targetNode = null;\n else {\n var tag = nearestMounted.tag;\n if (13 === tag) {\n targetNode = getSuspenseInstanceFromFiber(nearestMounted);\n if (null !== targetNode) return targetNode;\n targetNode = null;\n } else if (3 === tag) {\n if (nearestMounted.stateNode.current.memoizedState.isDehydrated)\n return 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n targetNode = null;\n } else nearestMounted !== targetNode && (targetNode = null);\n }\n }\n return_targetInst = targetNode;\n return null;\n}\nfunction getEventPriority(domEventName) {\n switch (domEventName) {\n case \"beforetoggle\":\n case \"cancel\":\n case \"click\":\n case \"close\":\n case \"contextmenu\":\n case \"copy\":\n case \"cut\":\n case \"auxclick\":\n case \"dblclick\":\n case \"dragend\":\n case \"dragstart\":\n case \"drop\":\n case \"focusin\":\n case \"focusout\":\n case \"input\":\n case \"invalid\":\n case \"keydown\":\n case \"keypress\":\n case \"keyup\":\n case \"mousedown\":\n case \"mouseup\":\n case \"paste\":\n case \"pause\":\n case \"play\":\n case \"pointercancel\":\n case \"pointerdown\":\n case \"pointerup\":\n case \"ratechange\":\n case \"reset\":\n case \"resize\":\n case \"seeked\":\n case \"submit\":\n case \"toggle\":\n case \"touchcancel\":\n case \"touchend\":\n case \"touchstart\":\n case \"volumechange\":\n case \"change\":\n case \"selectionchange\":\n case \"textInput\":\n case \"compositionstart\":\n case \"compositionend\":\n case \"compositionupdate\":\n case \"beforeblur\":\n case \"afterblur\":\n case \"beforeinput\":\n case \"blur\":\n case \"fullscreenchange\":\n case \"focus\":\n case \"hashchange\":\n case \"popstate\":\n case \"select\":\n case \"selectstart\":\n return 2;\n case \"drag\":\n case \"dragenter\":\n case \"dragexit\":\n case \"dragleave\":\n case \"dragover\":\n case \"mousemove\":\n case \"mouseout\":\n case \"mouseover\":\n case \"pointermove\":\n case \"pointerout\":\n case \"pointerover\":\n case \"scroll\":\n case \"touchmove\":\n case \"wheel\":\n case \"mouseenter\":\n case \"mouseleave\":\n case \"pointerenter\":\n case \"pointerleave\":\n return 8;\n case \"message\":\n switch (getCurrentPriorityLevel()) {\n case ImmediatePriority:\n return 2;\n case UserBlockingPriority:\n return 8;\n case NormalPriority$1:\n case LowPriority:\n return 32;\n case IdlePriority:\n return 268435456;\n default:\n return 32;\n }\n default:\n return 32;\n }\n}\nvar hasScheduledReplayAttempt = !1,\n queuedFocus = null,\n queuedDrag = null,\n queuedMouse = null,\n queuedPointers = new Map(),\n queuedPointerCaptures = new Map(),\n queuedExplicitHydrationTargets = [],\n discreteReplayableEvents =\n \"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\".split(\n \" \"\n );\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"focusin\":\n case \"focusout\":\n queuedFocus = null;\n break;\n case \"dragenter\":\n case \"dragleave\":\n queuedDrag = null;\n break;\n case \"mouseover\":\n case \"mouseout\":\n queuedMouse = null;\n break;\n case \"pointerover\":\n case \"pointerout\":\n queuedPointers.delete(nativeEvent.pointerId);\n break;\n case \"gotpointercapture\":\n case \"lostpointercapture\":\n queuedPointerCaptures.delete(nativeEvent.pointerId);\n }\n}\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(\n existingQueuedEvent,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n if (\n null === existingQueuedEvent ||\n existingQueuedEvent.nativeEvent !== nativeEvent\n )\n return (\n (existingQueuedEvent = {\n blockedOn: blockedOn,\n domEventName: domEventName,\n eventSystemFlags: eventSystemFlags,\n nativeEvent: nativeEvent,\n targetContainers: [targetContainer]\n }),\n null !== blockedOn &&\n ((blockedOn = getInstanceFromNode(blockedOn)),\n null !== blockedOn && attemptContinuousHydration(blockedOn)),\n existingQueuedEvent\n );\n existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n blockedOn = existingQueuedEvent.targetContainers;\n null !== targetContainer &&\n -1 === blockedOn.indexOf(targetContainer) &&\n blockedOn.push(targetContainer);\n return existingQueuedEvent;\n}\nfunction queueIfContinuousEvent(\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n) {\n switch (domEventName) {\n case \"focusin\":\n return (\n (queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedFocus,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"dragenter\":\n return (\n (queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedDrag,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"mouseover\":\n return (\n (queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedMouse,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )),\n !0\n );\n case \"pointerover\":\n var pointerId = nativeEvent.pointerId;\n queuedPointers.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointers.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n );\n return !0;\n case \"gotpointercapture\":\n return (\n (pointerId = nativeEvent.pointerId),\n queuedPointerCaptures.set(\n pointerId,\n accumulateOrCreateContinuousQueuedReplayableEvent(\n queuedPointerCaptures.get(pointerId) || null,\n blockedOn,\n domEventName,\n eventSystemFlags,\n targetContainer,\n nativeEvent\n )\n ),\n !0\n );\n }\n return !1;\n}\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n if (null !== targetInst) {\n var nearestMounted = getNearestMountedFiber(targetInst);\n if (null !== nearestMounted)\n if (((targetInst = nearestMounted.tag), 13 === targetInst)) {\n if (\n ((targetInst = getSuspenseInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n if (13 === nearestMounted.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(nearestMounted, lane);\n null !== root &&\n scheduleUpdateOnFiber(root, nearestMounted, lane);\n markRetryLaneIfNotHydrated(nearestMounted, lane);\n }\n });\n return;\n }\n } else if (\n 3 === targetInst &&\n nearestMounted.stateNode.current.memoizedState.isDehydrated\n ) {\n queuedTarget.blockedOn =\n 3 === nearestMounted.tag\n ? nearestMounted.stateNode.containerInfo\n : null;\n return;\n }\n }\n queuedTarget.blockedOn = null;\n}\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n if (null !== queuedEvent.blockedOn) return !1;\n for (\n var targetContainers = queuedEvent.targetContainers;\n 0 < targetContainers.length;\n\n ) {\n var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.nativeEvent);\n if (null === nextBlockedOn) {\n nextBlockedOn = queuedEvent.nativeEvent;\n var nativeEventClone = new nextBlockedOn.constructor(\n nextBlockedOn.type,\n nextBlockedOn\n );\n currentReplayingEvent = nativeEventClone;\n nextBlockedOn.target.dispatchEvent(nativeEventClone);\n currentReplayingEvent = null;\n } else\n return (\n (targetContainers = getInstanceFromNode(nextBlockedOn)),\n null !== targetContainers &&\n attemptContinuousHydration(targetContainers),\n (queuedEvent.blockedOn = nextBlockedOn),\n !1\n );\n targetContainers.shift();\n }\n return !0;\n}\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n attemptReplayContinuousQueuedEvent(queuedEvent) && map.delete(key);\n}\nfunction replayUnblockedEvents() {\n hasScheduledReplayAttempt = !1;\n null !== queuedFocus &&\n attemptReplayContinuousQueuedEvent(queuedFocus) &&\n (queuedFocus = null);\n null !== queuedDrag &&\n attemptReplayContinuousQueuedEvent(queuedDrag) &&\n (queuedDrag = null);\n null !== queuedMouse &&\n attemptReplayContinuousQueuedEvent(queuedMouse) &&\n (queuedMouse = null);\n queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n queuedEvent.blockedOn === unblocked &&\n ((queuedEvent.blockedOn = null),\n hasScheduledReplayAttempt ||\n ((hasScheduledReplayAttempt = !0),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n replayUnblockedEvents\n )));\n}\nvar lastScheduledReplayQueue = null;\nfunction scheduleReplayQueueIfNeeded(formReplayingQueue) {\n lastScheduledReplayQueue !== formReplayingQueue &&\n ((lastScheduledReplayQueue = formReplayingQueue),\n Scheduler.unstable_scheduleCallback(\n Scheduler.unstable_NormalPriority,\n function () {\n lastScheduledReplayQueue === formReplayingQueue &&\n (lastScheduledReplayQueue = null);\n for (var i = 0; i < formReplayingQueue.length; i += 3) {\n var form = formReplayingQueue[i],\n submitterOrAction = formReplayingQueue[i + 1],\n formData = formReplayingQueue[i + 2];\n if (\"function\" !== typeof submitterOrAction)\n if (null === findInstanceBlockingTarget(submitterOrAction || form))\n continue;\n else break;\n var formInst = getInstanceFromNode(form);\n null !== formInst &&\n (formReplayingQueue.splice(i, 3),\n (i -= 3),\n startHostTransition(\n formInst,\n {\n pending: !0,\n data: formData,\n method: form.method,\n action: submitterOrAction\n },\n submitterOrAction,\n formData\n ));\n }\n }\n ));\n}\nfunction retryIfBlockedOn(unblocked) {\n function unblock(queuedEvent) {\n return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n }\n null !== queuedFocus && scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n null !== queuedDrag && scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n null !== queuedMouse && scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n queuedPointers.forEach(unblock);\n queuedPointerCaptures.forEach(unblock);\n for (var i = 0; i < queuedExplicitHydrationTargets.length; i++) {\n var queuedTarget = queuedExplicitHydrationTargets[i];\n queuedTarget.blockedOn === unblocked && (queuedTarget.blockedOn = null);\n }\n for (\n ;\n 0 < queuedExplicitHydrationTargets.length &&\n ((i = queuedExplicitHydrationTargets[0]), null === i.blockedOn);\n\n )\n attemptExplicitHydrationTarget(i),\n null === i.blockedOn && queuedExplicitHydrationTargets.shift();\n i = (unblocked.ownerDocument || unblocked).$$reactFormReplay;\n if (null != i)\n for (queuedTarget = 0; queuedTarget < i.length; queuedTarget += 3) {\n var form = i[queuedTarget],\n submitterOrAction = i[queuedTarget + 1],\n formProps = form[internalPropsKey] || null;\n if (\"function\" === typeof submitterOrAction)\n formProps || scheduleReplayQueueIfNeeded(i);\n else if (formProps) {\n var action = null;\n if (submitterOrAction && submitterOrAction.hasAttribute(\"formAction\"))\n if (\n ((form = submitterOrAction),\n (formProps = submitterOrAction[internalPropsKey] || null))\n )\n action = formProps.formAction;\n else {\n if (null !== findInstanceBlockingTarget(form)) continue;\n }\n else action = formProps.action;\n \"function\" === typeof action\n ? (i[queuedTarget + 1] = action)\n : (i.splice(queuedTarget, 3), (queuedTarget -= 3));\n scheduleReplayQueueIfNeeded(i);\n }\n }\n}\nfunction ReactDOMRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render =\n function (children) {\n var root = this._internalRoot;\n if (null === root) throw Error(formatProdErrorMessage(409));\n var current = root.current,\n lane = requestUpdateLane();\n updateContainerImpl(current, lane, children, root, null, null);\n };\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount =\n function () {\n var root = this._internalRoot;\n if (null !== root) {\n this._internalRoot = null;\n var container = root.containerInfo;\n updateContainerImpl(root.current, 2, null, root, null, null);\n flushSyncWork$1();\n container[internalContainerInstanceKey] = null;\n }\n };\nfunction ReactDOMHydrationRoot(internalRoot) {\n this._internalRoot = internalRoot;\n}\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) {\n if (target) {\n var updatePriority = resolveUpdatePriority();\n target = { blockedOn: null, target: target, priority: updatePriority };\n for (\n var i = 0;\n i < queuedExplicitHydrationTargets.length &&\n 0 !== updatePriority &&\n updatePriority < queuedExplicitHydrationTargets[i].priority;\n i++\n );\n queuedExplicitHydrationTargets.splice(i, 0, target);\n 0 === i && attemptExplicitHydrationTarget(target);\n }\n};\nvar isomorphicReactPackageVersion$jscomp$inline_1785 = React.version;\nif (\n \"19.1.0\" !==\n isomorphicReactPackageVersion$jscomp$inline_1785\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1785,\n \"19.1.0\"\n )\n );\nReactDOMSharedInternals.findDOMNode = function (componentOrElement) {\n var fiber = componentOrElement._reactInternals;\n if (void 0 === fiber) {\n if (\"function\" === typeof componentOrElement.render)\n throw Error(formatProdErrorMessage(188));\n componentOrElement = Object.keys(componentOrElement).join(\",\");\n throw Error(formatProdErrorMessage(268, componentOrElement));\n }\n componentOrElement = findCurrentFiberUsingSlowPath(fiber);\n componentOrElement =\n null !== componentOrElement\n ? findCurrentHostFiberImpl(componentOrElement)\n : null;\n componentOrElement =\n null === componentOrElement ? null : componentOrElement.stateNode;\n return componentOrElement;\n};\nvar internals$jscomp$inline_2256 = {\n bundleType: 0,\n version: \"19.1.0\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.1.0\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2257 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2257.isDisabled &&\n hook$jscomp$inline_2257.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2257.inject(\n internals$jscomp$inline_2256\n )),\n (injectedHook = hook$jscomp$inline_2257);\n } catch (err) {}\n}\nexports.createRoot = function (container, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n transitionCallbacks = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.unstable_transitionCallbacks &&\n (transitionCallbacks = options.unstable_transitionCallbacks));\n options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n null\n );\n container[internalContainerInstanceKey] = options.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMRoot(options);\n};\nexports.hydrateRoot = function (container, initialChildren, options) {\n if (!isValidContainer(container)) throw Error(formatProdErrorMessage(299));\n var isStrictMode = !1,\n identifierPrefix = \"\",\n onUncaughtError = defaultOnUncaughtError,\n onCaughtError = defaultOnCaughtError,\n onRecoverableError = defaultOnRecoverableError,\n transitionCallbacks = null,\n formState = null;\n null !== options &&\n void 0 !== options &&\n (!0 === options.unstable_strictMode && (isStrictMode = !0),\n void 0 !== options.identifierPrefix &&\n (identifierPrefix = options.identifierPrefix),\n void 0 !== options.onUncaughtError &&\n (onUncaughtError = options.onUncaughtError),\n void 0 !== options.onCaughtError && (onCaughtError = options.onCaughtError),\n void 0 !== options.onRecoverableError &&\n (onRecoverableError = options.onRecoverableError),\n void 0 !== options.unstable_transitionCallbacks &&\n (transitionCallbacks = options.unstable_transitionCallbacks),\n void 0 !== options.formState && (formState = options.formState));\n initialChildren = createFiberRoot(\n container,\n 1,\n !0,\n initialChildren,\n null != options ? options : null,\n isStrictMode,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n transitionCallbacks,\n formState\n );\n initialChildren.context = getContextForSubtree(null);\n options = initialChildren.current;\n isStrictMode = requestUpdateLane();\n isStrictMode = getBumpedLaneForHydrationByLane(isStrictMode);\n identifierPrefix = createUpdate(isStrictMode);\n identifierPrefix.callback = null;\n enqueueUpdate(options, identifierPrefix, isStrictMode);\n options = isStrictMode;\n initialChildren.current.lanes = options;\n markRootUpdated$1(initialChildren, options);\n ensureRootIsScheduled(initialChildren);\n container[internalContainerInstanceKey] = initialChildren.current;\n listenToAllSupportedEvents(container);\n return new ReactDOMHydrationRoot(initialChildren);\n};\nexports.version = \"19.1.0\";\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-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.14.0\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\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar D={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},E={};function F(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}F.prototype.isReactComponent={};F.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(C(85));this.updater.enqueueSetState(this,a,b,\"setState\")};F.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction G(){}G.prototype=F.prototype;function H(a,b,c){this.props=a;this.context=b;this.refs=E;this.updater=c||D}var I=H.prototype=new G;I.constructor=H;l(I,F.prototype);I.isPureReactComponent=!0;var J={current:null},K=Object.prototype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,c){var e,d={},g=null,k=null;if(null!=b)for(e in void 0!==b.ref&&(k=b.ref),void 0!==b.key&&(g=\"\"+b.key),b)K.call(b,e)&&!L.hasOwnProperty(e)&&(d[e]=b[e]);var f=arguments.length-2;if(1===f)d.children=c;else if(1<f){for(var h=Array(f),m=0;m<f;m++)h[m]=arguments[m+2];d.children=h}if(a&&a.defaultProps)for(e in f=a.defaultProps,f)void 0===d[e]&&(d[e]=f[e]);return{$$typeof:p,type:a,key:g,ref:k,props:d,_owner:J.current}}\nfunction N(a,b){return{$$typeof:p,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===p}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+(\"\"+a).replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g,Q=[];function R(a,b,c,e){if(Q.length){var d=Q.pop();d.result=a;d.keyPrefix=b;d.func=c;d.context=e;d.count=0;return d}return{result:a,keyPrefix:b,func:c,context:e,count:0}}\nfunction S(a){a.result=null;a.keyPrefix=null;a.func=null;a.context=null;a.count=0;10>Q.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k<a.length;k++){d=a[k];var f=b+U(d,k);g+=T(d,f,c,e)}else if(null===a||\"object\"!==typeof a?f=null:(f=B&&a[B]||a[\"@@iterator\"],f=\"function\"===typeof f?f:null),\"function\"===typeof f)for(a=f.call(a),k=\n0;!(d=a.next()).done;)d=d.value,f=b+U(d,k++),g+=T(d,f,c,e);else if(\"object\"===d)throw c=\"\"+a,Error(C(31,\"[object Object]\"===c?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":c,\"\"));return g}function V(a,b,c){return null==a?0:T(a,\"\",b,c)}function U(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(a.key):b.toString(36)}function W(a,b){a.func.call(a.context,b,a.count++)}\nfunction aa(a,b,c){var e=a.result,d=a.keyPrefix;a=a.func.call(a.context,b,a.count++);Array.isArray(a)?X(a,e,c,function(a){return a}):null!=a&&(O(a)&&(a=N(a,d+(!a.key||b&&b.key===a.key?\"\":(\"\"+a.key).replace(P,\"$&/\")+\"/\")+c)),e.push(a))}function X(a,b,c,e,d){var g=\"\";null!=c&&(g=(\"\"+c).replace(P,\"$&/\")+\"/\");b=R(b,g,e,d);V(a,aa,b);S(b)}var Y={current:null};function Z(){var a=Y.current;if(null===a)throw Error(C(321));return a}\nvar ba={ReactCurrentDispatcher:Y,ReactCurrentBatchConfig:{suspense:null},ReactCurrentOwner:J,IsSomeRendererActing:{current:!1},assign:l};exports.Children={map:function(a,b,c){if(null==a)return a;var e=[];X(a,e,null,b,c);return e},forEach:function(a,b,c){if(null==a)return a;b=R(null,null,b,c);V(a,W,b);S(b)},count:function(a){return V(a,function(){return null},null)},toArray:function(a){var b=[];X(a,b,null,function(a){return a});return b},only:function(a){if(!O(a))throw Error(C(143));return a}};\nexports.Component=F;exports.Fragment=r;exports.Profiler=u;exports.PureComponent=H;exports.StrictMode=t;exports.Suspense=y;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=ba;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(C(267,a));var e=l({},a.props),d=a.key,g=a.ref,k=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,k=J.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var f=a.type.defaultProps;for(h in b)K.call(b,h)&&!L.hasOwnProperty(h)&&(e[h]=void 0===b[h]&&void 0!==f?f[h]:b[h])}var h=arguments.length-2;if(1===h)e.children=c;else if(1<h){f=Array(h);for(var m=0;m<h;m++)f[m]=arguments[m+2];e.children=f}return{$$typeof:p,type:a.type,\nkey:d,ref:g,props:e,_owner:k}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:w,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:v,_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}};exports.forwardRef=function(a){return{$$typeof:x,render:a}};exports.isValidElement=O;\nexports.lazy=function(a){return{$$typeof:A,_ctor:a,_status:-1,_result:null}};exports.memo=function(a,b){return{$$typeof:z,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return Z().useCallback(a,b)};exports.useContext=function(a,b){return Z().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return Z().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return Z().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return Z().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return Z().useMemo(a,b)};exports.useReducer=function(a,b,c){return Z().useReducer(a,b,c)};exports.useRef=function(a){return Z().useRef(a)};exports.useState=function(a){return Z().useState(a)};exports.version=\"16.14.0\";\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 * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals = { H: null, A: null, T: null, S: null, V: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== self ? self : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n void 0,\n oldElement.props\n );\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction noop() {}\nexports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = void 0;\n if (null != config)\n for (propName in (void 0 !== config.ref && (owner = void 0),\n void 0 !== config.key && (key = \"\" + config.key),\n config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, createDeps, update) {\n var dispatcher = ReactSharedInternals.H;\n if (\"function\" === typeof update)\n throw Error(\n \"useEffect CRUD overload is not enabled in this build of React.\"\n );\n return dispatcher.useEffect(create, createDeps);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.1.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-dom.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction noop() {}\nvar Internals = {\n d: {\n f: noop,\n r: function () {\n throw Error(formatProdErrorMessage(522));\n },\n D: noop,\n C: noop,\n L: noop,\n m: noop,\n X: noop,\n S: noop,\n M: noop\n },\n p: 0,\n findDOMNode: null\n },\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\nfunction createPortal$1(children, containerInfo, implementation) {\n var key =\n 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: null == key ? null : \"\" + key,\n children: children,\n containerInfo: containerInfo,\n implementation: implementation\n };\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;\nfunction getCrossOriginStringAs(as, input) {\n if (\"font\" === as) return \"\";\n if (\"string\" === typeof input)\n return \"use-credentials\" === input ? input : \"\";\n}\nexports.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n Internals;\nexports.createPortal = function (children, container) {\n var key =\n 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : null;\n if (\n !container ||\n (1 !== container.nodeType &&\n 9 !== container.nodeType &&\n 11 !== container.nodeType)\n )\n throw Error(formatProdErrorMessage(299));\n return createPortal$1(children, container, null, key);\n};\nexports.flushSync = function (fn) {\n var previousTransition = ReactSharedInternals.T,\n previousUpdatePriority = Internals.p;\n try {\n if (((ReactSharedInternals.T = null), (Internals.p = 2), fn)) return fn();\n } finally {\n (ReactSharedInternals.T = previousTransition),\n (Internals.p = previousUpdatePriority),\n Internals.d.f();\n }\n};\nexports.preconnect = function (href, options) {\n \"string\" === typeof href &&\n (options\n ? ((options = options.crossOrigin),\n (options =\n \"string\" === typeof options\n ? \"use-credentials\" === options\n ? options\n : \"\"\n : void 0))\n : (options = null),\n Internals.d.C(href, options));\n};\nexports.prefetchDNS = function (href) {\n \"string\" === typeof href && Internals.d.D(href);\n};\nexports.preinit = function (href, options) {\n if (\"string\" === typeof href && options && \"string\" === typeof options.as) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin),\n integrity =\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n fetchPriority =\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0;\n \"style\" === as\n ? Internals.d.S(\n href,\n \"string\" === typeof options.precedence ? options.precedence : void 0,\n {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority\n }\n )\n : \"script\" === as &&\n Internals.d.X(href, {\n crossOrigin: crossOrigin,\n integrity: integrity,\n fetchPriority: fetchPriority,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n};\nexports.preinitModule = function (href, options) {\n if (\"string\" === typeof href)\n if (\"object\" === typeof options && null !== options) {\n if (null == options.as || \"script\" === options.as) {\n var crossOrigin = getCrossOriginStringAs(\n options.as,\n options.crossOrigin\n );\n Internals.d.M(href, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0\n });\n }\n } else null == options && Internals.d.M(href);\n};\nexports.preload = function (href, options) {\n if (\n \"string\" === typeof href &&\n \"object\" === typeof options &&\n null !== options &&\n \"string\" === typeof options.as\n ) {\n var as = options.as,\n crossOrigin = getCrossOriginStringAs(as, options.crossOrigin);\n Internals.d.L(href, as, {\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0,\n nonce: \"string\" === typeof options.nonce ? options.nonce : void 0,\n type: \"string\" === typeof options.type ? options.type : void 0,\n fetchPriority:\n \"string\" === typeof options.fetchPriority\n ? options.fetchPriority\n : void 0,\n referrerPolicy:\n \"string\" === typeof options.referrerPolicy\n ? options.referrerPolicy\n : void 0,\n imageSrcSet:\n \"string\" === typeof options.imageSrcSet ? options.imageSrcSet : void 0,\n imageSizes:\n \"string\" === typeof options.imageSizes ? options.imageSizes : void 0,\n media: \"string\" === typeof options.media ? options.media : void 0\n });\n }\n};\nexports.preloadModule = function (href, options) {\n if (\"string\" === typeof href)\n if (options) {\n var crossOrigin = getCrossOriginStringAs(options.as, options.crossOrigin);\n Internals.d.m(href, {\n as:\n \"string\" === typeof options.as && \"script\" !== options.as\n ? options.as\n : void 0,\n crossOrigin: crossOrigin,\n integrity:\n \"string\" === typeof options.integrity ? options.integrity : void 0\n });\n } else Internals.d.m(href);\n};\nexports.requestFormReset = function (form) {\n Internals.d.r(form);\n};\nexports.unstable_batchedUpdates = function (fn, a) {\n return fn(a);\n};\nexports.useFormState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useFormState(action, initialState, permalink);\n};\nexports.useFormStatus = function () {\n return ReactSharedInternals.H.useHostTransitionStatus();\n};\nexports.version = \"19.1.0\";\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.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport const setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\nexport const getBatch = () => batch;","import * as React from 'react';\nconst ContextKey = Symbol.for(`react-redux-context`);\nconst gT = typeof globalThis !== \"undefined\" ? globalThis :\n/* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n{};\n\nfunction getContext() {\n var _gT$ContextKey;\n\n if (!React.createContext) return {};\n const contextMap = (_gT$ContextKey = gT[ContextKey]) != null ? _gT$ContextKey : gT[ContextKey] = new Map();\n let realContext = contextMap.get(React.createContext);\n\n if (!realContext) {\n realContext = React.createContext(null);\n\n if (process.env.NODE_ENV !== 'production') {\n realContext.displayName = 'ReactRedux';\n }\n\n contextMap.set(React.createContext, realContext);\n }\n\n return realContext;\n}\n\nexport const ReactReduxContext = /*#__PURE__*/getContext();\nexport default ReactReduxContext;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n\n/**\r\n * Hook factory, which creates a `useReduxContext` hook bound to a given context. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useReduxContext` hook bound to the specified context.\r\n */\nexport function createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext() {\n const contextValue = useContext(context);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n };\n}\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const { store } = useReduxContext()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useReduxContext = /*#__PURE__*/createReduxContextHook();","import { useCallback, useDebugValue, useRef } from 'react';\nimport { createReduxContextHook, useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { ReactReduxContext } from '../components/Context';\nimport { notInitialized } from '../utils/useSyncExternalStore';\nlet useSyncExternalStoreWithSelector = notInitialized;\nexport const initializeUseSelector = fn => {\n useSyncExternalStoreWithSelector = fn;\n};\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context = ReactReduxContext) {\n const useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : createReduxContextHook(context);\n return function useSelector(selector, equalityFnOrOptions = {}) {\n const {\n equalityFn = refEquality,\n stabilityCheck = undefined,\n noopCheck = undefined\n } = typeof equalityFnOrOptions === 'function' ? {\n equalityFn: equalityFnOrOptions\n } : equalityFnOrOptions;\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n\n if (typeof selector !== 'function') {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(`You must pass a function as an equality function to useSelector`);\n }\n }\n\n const {\n store,\n subscription,\n getServerState,\n stabilityCheck: globalStabilityCheck,\n noopCheck: globalNoopCheck\n } = useReduxContext();\n const firstRun = useRef(true);\n const wrappedSelector = useCallback({\n [selector.name](state) {\n const selected = selector(state);\n\n if (process.env.NODE_ENV !== 'production') {\n const finalStabilityCheck = typeof stabilityCheck === 'undefined' ? globalStabilityCheck : stabilityCheck;\n\n if (finalStabilityCheck === 'always' || finalStabilityCheck === 'once' && firstRun.current) {\n const toCompare = selector(state);\n\n if (!equalityFn(selected, toCompare)) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned a different result when called with the same parameters. This can lead to unnecessary rerenders.' + '\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization', {\n state,\n selected,\n selected2: toCompare,\n stack\n });\n }\n }\n\n const finalNoopCheck = typeof noopCheck === 'undefined' ? globalNoopCheck : noopCheck;\n\n if (finalNoopCheck === 'always' || finalNoopCheck === 'once' && firstRun.current) {\n // @ts-ignore\n if (selected === state) {\n let stack = undefined;\n\n try {\n throw new Error();\n } catch (e) {\n ;\n ({\n stack\n } = e);\n }\n\n console.warn('Selector ' + (selector.name || 'unknown') + ' returned the root state when called. This can lead to unnecessary rerenders.' + '\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.', {\n stack\n });\n }\n }\n\n if (firstRun.current) firstRun.current = false;\n }\n\n return selected;\n }\n\n }[selector.name], [selector, globalStabilityCheck, stabilityCheck]);\n const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, wrappedSelector, equalityFn);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return <div>{counter}</div>\r\n * }\r\n */\n\nexport const useSelector = /*#__PURE__*/createSelectorHook();","export const notInitialized = () => {\n throw new Error('uSES not initialized!');\n};","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'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","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\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","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n const batch = getBatch();\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n\n notify() {\n batch(() => {\n let listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n\n get() {\n let listeners = [];\n let listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n\n subscribe(callback) {\n let isSubscribed = true;\n let listener = last = {\n callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n\n };\n}\n\nconst nullListeners = {\n notify() {},\n\n get: () => []\n};\nexport function createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners; // Reasons to keep the subscription active\n\n let subscriptionsAmount = 0; // Is this specific subscription subscribed (or only nested ones?)\n\n let selfSubscribed = false;\n\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener); // cleanup nested sub\n\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return selfSubscribed;\n }\n\n function trySubscribe() {\n subscriptionsAmount++;\n\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n subscriptionsAmount--;\n\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}","import * as React from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\n\nexport const canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexport const useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;","import * as React from 'react';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider({\n store,\n context,\n children,\n serverState,\n stabilityCheck = 'once',\n noopCheck = 'once'\n}) {\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n return {\n store,\n subscription,\n getServerState: serverState ? () => serverState : undefined,\n stabilityCheck,\n noopCheck\n };\n }, [store, serverState, stabilityCheck, noopCheck]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const {\n subscription\n } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = undefined;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nexport default Provider;","import { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext, createReduxContextHook } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context = ReactReduxContext) {\n const useReduxContext = // @ts-ignore\n context === ReactReduxContext ? useDefaultReduxContext : // @ts-ignore\n createReduxContextHook(context);\n return function useStore() {\n const {\n store\n } = useReduxContext(); // @ts-ignore\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return <div>{store.getState()}</div>\r\n * }\r\n */\n\nexport const useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context = ReactReduxContext) {\n const useStore = // @ts-ignore\n context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n const store = useStore(); // @ts-ignore\n\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n * <div>\r\n * <span>{value}</span>\r\n * <button onClick={increaseCounter}>Increase counter</button>\r\n * </div>\r\n * )\r\n * }\r\n */\n\nexport const useDispatch = /*#__PURE__*/createDispatchHook();","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (process.env.NODE_ENV !== \"production\") {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== \"production\") {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n actionTypes_default as __DO_NOT_USE__ActionTypes,\n applyMiddleware,\n bindActionCreators,\n combineReducers,\n compose,\n createStore,\n isAction,\n isPlainObject,\n legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map","// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/shim/with-selector';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch';\nimport { initializeUseSelector } from './hooks/useSelector';\nimport { initializeConnect } from './components/connect';\ninitializeUseSelector(useSyncExternalStoreWithSelector);\ninitializeConnect(useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };\nexport * from './exports';","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;","'use strict';\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools =\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n : function () {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n };\n\nexports.devToolsEnhancer =\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__\n ? window.__REDUX_DEVTOOLS_EXTENSION__\n : function () {\n return function (noop) {\n return noop;\n };\n };\n","export const ADD_TRACK_FROM_URL = \"ADD_TRACK_FROM_URL\";\nexport const CLOSE_WINAMP = \"CLOSE_WINAMP\";\nexport const OPEN_WINAMP = \"OPEN_WINAMP\";\nexport const MINIMIZE_WINAMP = \"MINIMIZE_WINAMP\";\nexport const IS_PLAYING = \"IS_PLAYING\";\nexport const IS_STOPPED = \"IS_STOPPED\";\nexport const PAUSE = \"PAUSE\";\nexport const PLAY = \"PLAY\";\nexport const SEEK_TO_PERCENT_COMPLETE = \"SEEK_TO_PERCENT_COMPLETE\";\nexport const SET_BALANCE = \"SET_BALANCE\";\nexport const SET_BAND_VALUE = \"SET_BAND_VALUE\";\nexport const SET_FOCUS = \"SET_FOCUS\";\nexport const SET_BAND_FOCUS = \"SET_BAND_FOCUS\";\nexport const SET_FOCUSED_WINDOW = \"SET_FOCUSED_WINDOW\";\nexport const SET_MEDIA = \"SET_MEDIA\";\nexport const SET_SCRUB_POSITION = \"SET_SCRUB_POSITION\";\nexport const SET_SKIN_DATA = \"SET_SKIN_DATA\";\nexport const SET_VOLUME = \"SET_VOLUME\";\nexport const START_WORKING = \"START_WORKING\";\nexport const STEP_MARQUEE = \"STEP_MARQUEE\";\nexport const STOP = \"STOP\";\nexport const STOP_WORKING = \"STOP_WORKING\";\nexport const TOGGLE_DOUBLESIZE_MODE = \"TOGGLE_DOUBLESIZE_MODE\";\nexport const SET_EQ_AUTO = \"SET_EQ_AUTO\";\nexport const SET_EQ_ON = \"SET_EQ_ON\";\nexport const SET_EQ_OFF = \"SET_EQ_OFF\";\nexport const TOGGLE_LLAMA_MODE = \"TOGGLE_LLAMA_MODE\";\nexport const TOGGLE_REPEAT = \"TOGGLE_REPEAT\";\nexport const TOGGLE_SHUFFLE = \"TOGGLE_SHUFFLE\";\nexport const TOGGLE_TIME_MODE = \"TOGGLE_TIME_MODE\";\nexport const TOGGLE_VISUALIZER_STYLE = \"TOGGLE_VISUALIZER_STYLE\";\nexport const UNSET_FOCUS = \"UNSET_FOCUS\";\nexport const UPDATE_TIME_ELAPSED = \"UPDATE_TIME_ELAPSED\";\nexport const SET_USER_MESSAGE = \"SET_USER_MESSAGE\";\nexport const UNSET_USER_MESSAGE = \"UNSET_USER_MESSAGE\";\nexport const SET_PLAYLIST_SCROLL_POSITION = \"SET_PLAYLIST_SCROLL_POSITION\";\nexport const CLICKED_TRACK = \"CLICKED_TRACK\";\nexport const CTRL_CLICKED_TRACK = \"CTRL_CLICKED_TRACK\";\nexport const SHIFT_CLICKED_TRACK = \"SHIFT_CLICKED_TRACK\";\nexport const SELECT_ALL = \"SELECT_ALL\";\nexport const SELECT_ZERO = \"SELECT_ZERO\";\nexport const INVERT_SELECTION = \"INVERT_SELECTION\";\nexport const REMOVE_ALL_TRACKS = \"REMOVE_ALL_TRACKS\";\nexport const CROP_TRACKS = \"CROP_TRACKS\";\nexport const FILE_INFO = \"FILE_INFO\";\nexport const REMOVE_TRACKS = \"REMOVE_TRACKS\";\nexport const SET_AVAILABLE_SKINS = \"SET_AVAILABLE_SKINS\";\nexport const REVERSE_LIST = \"REVERSE_LIST\";\nexport const RANDOMIZE_LIST = \"RANDOMIZE_LIST\";\nexport const SET_TRACK_ORDER = \"SET_TRACK_ORDER\";\nexport const PLAY_TRACK = \"PLAY_TRACK\";\nexport const BUFFER_TRACK = \"BUFFER_TRACK\";\nexport const DRAG_SELECTED = \"DRAG_SELECTED\";\nexport const SET_MEDIA_TAGS = \"SET_MEDIA_TAGS\";\nexport const SET_MEDIA_DURATION = \"SET_MEDIA_DURATION\";\nexport const TOGGLE_WINDOW = \"TOGGLE_WINDOW\";\nexport const CLOSE_WINDOW = \"CLOSE_WINDOW\";\nexport const MEDIA_TAG_REQUEST_INITIALIZED = \"MEDIA_TAG_REQUEST_INITIALIZED\";\nexport const MEDIA_TAG_REQUEST_FAILED = \"MEDIA_TAG_REQUEST_FAILED\";\nexport const NETWORK_CONNECTED = \"NETWORK_CONNECTED\";\nexport const NETWORK_DISCONNECTED = \"NETWORK_DISCONNECTED\";\nexport const UPDATE_WINDOW_POSITIONS = \"UPDATE_WINDOW_POSITIONS\";\nexport const WINDOW_SIZE_CHANGED = \"WINDOW_SIZE_CHANGED\";\nexport const TOGGLE_WINDOW_SHADE_MODE = \"TOGGLE_WINDOW_SHADE_MODE\";\nexport const LOADED = \"LOADED\";\nexport const SET_Z_INDEX = \"SET_Z_INDEX\";\nexport const DISABLE_MARQUEE = \"DISABLE_MARQUEE\";\nexport const SET_DUMMY_VIZ_DATA = \"SET_DUMMY_VIZ_DATA\";\nexport const LOADING = \"LOADING\";\nexport const CLOSE_REQUESTED = \"CLOSE_REQUESTED\";\nexport const LOAD_SERIALIZED_STATE = \"LOAD_SERIALIZED_STATE\";\nexport const RESET_WINDOW_SIZES = \"RESET_WINDOW_SIZES\";\nexport const BROWSER_WINDOW_SIZE_CHANGED = \"BROWSER_WINDOW_SIZE_CHANGED\";\nexport const LOAD_DEFAULT_SKIN = \"LOAD_DEFAULT_SKIN\";\nexport const ENABLE_MILKDROP = \"ENABLE_MILKDROP\";\nexport const SET_MILKDROP_DESKTOP = \"SET_MILKDROP_DESKTOP\";\nexport const SET_VISUALIZER_STYLE = \"SET_VISUALIZER_STYLE\";\nexport const GOT_BUTTERCHURN_PRESETS = \"GOT_BUTTERCHURN_PRESETS\";\nexport const GOT_BUTTERCHURN = \"GOT_BUTTERCHURN\";\nexport const RESOLVE_PRESET_AT_INDEX = \"RESOLVE_PRESET_AT_INDEX\";\nexport const SELECT_PRESET_AT_INDEX = \"SELECT_PRESET_AT_INDEX\";\nexport const TOGGLE_PRESET_OVERLAY = \"TOGGLE_PRESET_OVERLAY\";\nexport const PRESET_REQUESTED = \"PRESET_REQUESTED\";\nexport const TOGGLE_RANDOMIZE_PRESETS = \"TOGGLE_RANDOMIZE_PRESETS\";\nexport const TOGGLE_PRESET_CYCLING = \"TOGGLE_PRESET_CYCLING\";\nexport const SCHEDULE_MILKDROP_MESSAGE = \"SCHEDULE_MILKDROP_MESSAGE\";\nexport const SET_MILKDROP_FULLSCREEN = \"SET_MILKDROP_FULLSCREEN\";\n","import {\n Band,\n MediaTagRequestStatus,\n MediaStatus,\n LoadStyle,\n TimeMode,\n WindowId,\n} from \"./types\";\nimport baseSkin from \"./baseSkin.json\";\nexport const BANDS: Band[] = [\n 60, 170, 310, 600, 1000, 3000, 6000, 12000, 14000, 16000,\n];\n\nexport const WINDOWS: { [key: string]: WindowId } = {\n MAIN: \"main\",\n PLAYLIST: \"playlist\",\n EQUALIZER: \"equalizer\",\n MILKDROP: \"milkdrop\",\n};\n\nexport const LOAD_STYLE: Record<LoadStyle, LoadStyle> = {\n BUFFER: \"BUFFER\",\n PLAY: \"PLAY\",\n NONE: \"NONE\",\n};\n\n// TODO: Make this an enum?\nexport const MEDIA_TAG_REQUEST_STATUS: Record<\n MediaTagRequestStatus,\n MediaTagRequestStatus\n> = {\n INITIALIZED: \"INITIALIZED\",\n FAILED: \"FAILED\",\n COMPLETE: \"COMPLETE\",\n NOT_REQUESTED: \"NOT_REQUESTED\",\n};\n\nexport const UTF8_ELLIPSIS = \"\\u2026\";\nexport const CHARACTER_WIDTH = 5;\nexport const WINDOW_RESIZE_SEGMENT_WIDTH = 25;\nexport const WINDOW_RESIZE_SEGMENT_HEIGHT = 29;\nexport const WINDOW_HEIGHT = 116;\nexport const WINDOW_WIDTH = 275;\nexport const TRACK_HEIGHT = 13;\nexport const LETTERS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");\n\nexport const DEFAULT_SKIN = baseSkin;\n\nexport const VISUALIZERS = {\n OSCILLOSCOPE: \"OSCILLOSCOPE\",\n BAR: \"BAR\",\n NONE: \"NONE\",\n MILKDROP: \"MILKDROP\",\n};\n\nexport const VISUALIZER_ORDER = [\n VISUALIZERS.BAR,\n VISUALIZERS.OSCILLOSCOPE, // Order is correct\n VISUALIZERS.NONE,\n];\n\nexport const TIME_MODE: Record<TimeMode, TimeMode> = {\n ELAPSED: \"ELAPSED\",\n REMAINING: \"REMAINING\",\n};\n\n// TODO: Convert to enum once we are fully Typescript\nexport const MEDIA_STATUS: Record<MediaStatus, MediaStatus> = {\n PLAYING: \"PLAYING\",\n STOPPED: \"STOPPED\",\n PAUSED: \"PAUSED\",\n};\n","import { DEFAULT_SKIN } from \"./constants\";\nimport { WindowInfo } from \"./types\";\n\ninterface Time {\n minutesFirstDigit: string;\n minutesSecondDigit: string;\n secondsFirstDigit: string;\n secondsSecondDigit: string;\n}\n\ninterface IniData {\n [section: string]: {\n [key: string]: string;\n };\n}\n\nexport function imgFromUrl(url: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n img.src = url;\n });\n}\n\nexport const getTimeObj = (time: number | null): Time => {\n if (time == null) {\n // If we clean up `<MiniTime />` we don't need to do this any more.\n return {\n minutesFirstDigit: \" \",\n minutesSecondDigit: \" \",\n secondsFirstDigit: \" \",\n secondsSecondDigit: \" \",\n };\n }\n const minutes = Math.floor(time / 60);\n const seconds = time % 60;\n\n const digits =\n time == null\n ? [\" \", \" \", \" \", \" \"]\n : [\n String(Math.floor(minutes / 10)),\n String(Math.floor(minutes % 10)),\n String(Math.floor(seconds / 10)),\n String(Math.floor(seconds % 10)),\n ];\n\n const [\n minutesFirstDigit,\n minutesSecondDigit,\n secondsFirstDigit,\n secondsSecondDigit,\n ] = digits;\n\n return {\n minutesFirstDigit,\n minutesSecondDigit,\n secondsFirstDigit,\n secondsSecondDigit,\n };\n};\n\nexport const getTimeStr = (\n time: number | null,\n truncate: boolean = true\n): string => {\n if (time == null) {\n return \"\";\n }\n const {\n minutesFirstDigit,\n minutesSecondDigit,\n secondsFirstDigit,\n secondsSecondDigit,\n } = getTimeObj(time);\n\n return [\n truncate && minutesFirstDigit === \"0\" ? \"\" : minutesFirstDigit,\n minutesSecondDigit,\n \":\",\n secondsFirstDigit,\n secondsSecondDigit,\n ].join(\"\");\n};\n\nexport const parseViscolors = (text: string): string[] => {\n const entries = text.split(\"\\n\");\n const regex = /^\\s*(\\d+)\\s*,?\\s*(\\d+)\\s*,?\\s*(\\d+)/;\n const colors = [...DEFAULT_SKIN.colors];\n entries\n .map((line) => regex.exec(line))\n .filter(Boolean)\n .map((matches) => (matches as RegExpExecArray).slice(1, 4).join(\",\"))\n .map((rgb, i) => {\n colors[i] = `rgb(${rgb})`;\n });\n return colors;\n};\n\nconst SECTION_REGEX = /^\\s*\\[(.+?)\\]\\s*$/;\nconst PROPERTY_REGEX = /^\\s*([^;][^=]*)\\s*=\\s*(.*)\\s*$/;\n\nexport const parseIni = (text: string): IniData => {\n let section: string, match;\n return text.split(/[\\r\\n]+/g).reduce((data: IniData, line) => {\n if ((match = line.match(PROPERTY_REGEX)) && section != null) {\n const key = match[1].trim().toLowerCase();\n const value = match[2]\n // Ignore anything after a second `=`\n // TODO: What if this is inside quotes or escaped?\n .replace(/\\=.*$/g, \"\")\n .trim()\n // Strip quotes\n // TODO: What about escaped quotes?\n // TODO: What about unbalanced quotes?\n .replace(/(^\")|(\"$)|(^')|('$)/g, \"\");\n data[section][key] = value;\n } else if ((match = line.match(SECTION_REGEX))) {\n section = match[1].trim().toLowerCase();\n data[section] = {};\n }\n return data;\n }, {});\n};\n\nexport const clamp = (value: number, min: number, max: number): number =>\n Math.min(Math.max(value, min), max);\n\nexport const sum = (values: number[]): number =>\n values.reduce((total, value) => total + value, 0);\n\nexport function base64FromDataArray(dataArray: Uint8Array): string {\n return window.btoa(\n Array.from(dataArray)\n .map((byte) => String.fromCharCode(byte))\n .join(\"\")\n );\n}\n\nexport const base64FromArrayBuffer = (arrayBuffer: ArrayBuffer): string => {\n return base64FromDataArray(new Uint8Array(arrayBuffer));\n};\n\n// https://stackoverflow.com/a/15832662/1263117\nexport function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n window.document.body.appendChild(link);\n link.click();\n window.document.body.removeChild(link);\n}\n\nexport const toPercent = (min: number, max: number, value: number): number =>\n (value - min) / (max - min);\n\nexport const percentToRange = (percent: number, min: number, max: number) =>\n min + Math.round(percent * (max - min));\n\nexport const percentToIndex = (percent: number, length: number): number =>\n percentToRange(percent, 0, length - 1);\n\nconst rebound =\n (oldMin: number, oldMax: number, newMin: number, newMax: number) =>\n (oldValue: number): number =>\n percentToRange(toPercent(oldMin, oldMax, oldValue), newMin, newMax);\n\n// Convert an .eqf value to a 0-100\nexport const normalizeEqBand = rebound(1, 64, 0, 100);\n\n// Convert a 0-100 to an .eqf value\nexport const denormalizeEqBand = rebound(0, 100, 1, 64);\n\n// Merge a `source` object to a `target` recursively\n// TODO: The typing here is a bit of a disaster.\nexport function merge<T extends object, S extends object>(\n target: T,\n source: S\n): T & S {\n const s = source as any;\n const t = target as any;\n // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties\n for (const key of Object.keys(s as any)) {\n if (s[key] instanceof Object) Object.assign(s[key], merge(t[key], s[key]));\n }\n\n // Join `target` and modified `source`\n Object.assign(target || {}, source);\n return target as any;\n}\n\n// Maps a value in a range (defined my min/max) to a value in an array (options).\nexport function segment<V>(\n min: number,\n max: number,\n value: number,\n newValues: V[]\n): V {\n const ratio = toPercent(min, max, value);\n /*\n | 0 | 1 | 2 |\n 0 1 2 3\n */\n return newValues[percentToIndex(ratio, newValues.length)];\n}\n\n// https://bost.ocks.org/mike/shuffle/\n// Shuffle an array in O(n)\nexport function shuffle<T>(array: T[]): T[] {\n const sorted = [...array];\n let m = sorted.length;\n\n // While there remain elements to shuffle…\n while (m) {\n // Pick a remaining element…\n const i = Math.floor(Math.random() * m--);\n\n // And swap it with the current element.\n const val = sorted[m];\n sorted[m] = sorted[i];\n sorted[i] = val;\n }\n\n return sorted;\n}\n\nexport function sort<T>(\n array: T[],\n iteratee: (value: T) => number | string\n): T[] {\n return [...array].sort((a, b) => {\n const aKey = iteratee(a);\n const bKey = iteratee(b);\n if (aKey < bKey) {\n return -1;\n } else if (aKey > bKey) {\n return 1;\n }\n return 0;\n });\n}\n\nexport function moveSelected<V>(\n arr: V[],\n isSelected: (index: number) => boolean,\n offset: number\n): V[] {\n const newArr = new Array(arr.length);\n let next = 0;\n for (let i = 0; i < newArr.length; i++) {\n const from = i - offset;\n // Is a value supposed to move here?\n if (from >= 0 && from < arr.length && isSelected(from)) {\n newArr[i] = arr[from];\n } else {\n while (next < arr.length && isSelected(next)) {\n next++;\n }\n newArr[i] = arr[next];\n next++;\n }\n }\n return newArr;\n}\n\nexport function spliceIn<T>(original: T[], start: number, newValues: T[]): T[] {\n const newArr = [...original];\n newArr.splice(start, 0, ...newValues);\n return newArr;\n}\n\nexport function replaceAtIndex<T>(arr: T[], index: number, newValue: T): T[] {\n return [...arr.slice(0, index), newValue, ...arr.slice(index + 1)];\n}\n\nexport function debounce(func: Function, delay: number): Function {\n let timeout: number;\n let callbackArgs: any[] = [];\n\n return function (context: Object, ...args: any[]): void {\n callbackArgs = args;\n\n if (timeout != null) {\n clearTimeout(timeout);\n }\n timeout = window.setTimeout(() => {\n func.apply(context, callbackArgs);\n }, delay);\n };\n}\n\n// Trailing edge only throttle\nexport function throttle(func: Function, delay: number): Function {\n let timeout: number | null = null;\n let callbackArgs: any[] = [];\n\n return function (context: Object, ...args: any[]): void {\n callbackArgs = args;\n\n if (!timeout) {\n timeout = window.setTimeout(() => {\n func.apply(context, callbackArgs);\n timeout = null;\n }, delay);\n }\n };\n}\n\nlet counter = 0;\nexport function uniqueId() {\n return counter++;\n}\n\nexport function objectForEach<V>(\n obj: { [key: string]: V },\n cb: (value: V, key: string) => void\n): void {\n Object.keys(obj).forEach((key) => cb(obj[key], key));\n}\n\nexport function objectMap<V, N>(\n obj: { [key: string]: V },\n cb: (value: V, key: string) => N\n): { [key: string]: N } {\n const modified: { [key: string]: N } = {};\n Object.keys(obj).forEach((key) => (modified[key] = cb(obj[key], key)));\n return modified;\n}\n\nexport function objectFilter<V>(\n obj: { [key: string]: V },\n predicate: (value: V, key: string) => boolean\n): { [key: string]: V } {\n // TODO: Could return the original reference if no values change\n return Object.keys(obj).reduce((newObj: { [key: string]: V }, key) => {\n if (predicate(obj[key], key)) {\n newObj[key] = obj[key];\n }\n return newObj;\n }, {});\n}\n\nexport const calculateBoundingBox = (windows: WindowInfo[]) => {\n if (windows.length === 0) {\n return null;\n }\n const windowSizes = windows.map((w) => ({\n left: w.x,\n top: w.y,\n bottom: w.y + w.height,\n right: w.x + w.width,\n }));\n return windowSizes.reduce((b, w) => ({\n left: Math.min(b.left, w.left),\n top: Math.min(b.top, w.top),\n bottom: Math.max(b.bottom, w.bottom),\n right: Math.max(b.right, w.right),\n }));\n};\n\nexport function findLastIndex<T>(arr: T[], cb: (val: T) => boolean) {\n for (let i = arr.length - 1; i >= 0; i--) {\n if (cb(arr[i])) {\n return i;\n }\n }\n return -1;\n}\n\nexport function getWindowSize(): { width: number; height: number } {\n // Aparently this is crazy across browsers.\n return {\n width: Math.max(\n document.body.scrollWidth,\n document.documentElement!.scrollWidth,\n document.body.offsetWidth,\n document.documentElement!.offsetWidth,\n document.body.clientWidth,\n document.documentElement!.clientWidth\n ),\n height: Math.max(\n document.body.scrollHeight,\n document.documentElement!.scrollHeight,\n document.body.offsetHeight,\n document.documentElement!.offsetHeight,\n document.body.clientHeight,\n document.documentElement!.clientHeight\n ),\n };\n}\n\nexport function getScreenSize(): { width: number; height: number } {\n return {\n width: window.screen.width,\n height: window.screen.height,\n };\n}\n\ntype PosEvent =\n | MouseEvent\n | TouchEvent\n | React.MouseEvent<HTMLElement>\n | React.TouchEvent<HTMLElement>;\n\nfunction getPos(e: PosEvent): { clientX: number; clientY: number } {\n switch (e.type) {\n case \"touchstart\":\n case \"touchmove\": {\n const touch =\n (e as TouchEvent).targetTouches[0] ?? (e as TouchEvent).touches[0];\n if (touch == null) {\n // Investigating https://github.com/captbaritone/webamp/issues/1105\n throw new Error(\"Unexpected touch event with zero touch targets.\");\n }\n return touch;\n }\n case \"mousedown\":\n case \"mousemove\": {\n return e as MouseEvent;\n }\n default:\n throw new Error(`Unexpected event type: ${e.type}`);\n }\n}\n\nexport function getX(e: PosEvent) {\n return getPos(e).clientX;\n}\n\nexport function getY(e: PosEvent) {\n return getPos(e).clientY;\n}\n\nexport function weakMapMemoize<T extends object, R>(\n func: (value: T) => R\n): (value: T) => R {\n const cache = new WeakMap();\n return (value: T) => {\n if (!cache.has(value)) {\n cache.set(value, func(value));\n }\n return cache.get(value);\n };\n}\n","import { Action } from \"../types\";\nimport {\n CLICKED_TRACK,\n CTRL_CLICKED_TRACK,\n SHIFT_CLICKED_TRACK,\n SELECT_ALL,\n SELECT_ZERO,\n INVERT_SELECTION,\n REMOVE_ALL_TRACKS,\n REMOVE_TRACKS,\n ADD_TRACK_FROM_URL,\n REVERSE_LIST,\n RANDOMIZE_LIST,\n SET_TRACK_ORDER,\n PLAY_TRACK,\n BUFFER_TRACK,\n DRAG_SELECTED,\n} from \"../actionTypes\";\nimport { shuffle, moveSelected } from \"../utils\";\n\nexport interface PlaylistState {\n trackOrder: number[];\n lastSelectedIndex: number | null;\n currentTrack: number | null;\n selectedTracks: Set<number>;\n}\n\nconst defaultPlaylistState: PlaylistState = {\n trackOrder: [],\n currentTrack: null,\n lastSelectedIndex: null,\n selectedTracks: new Set(),\n};\n\nfunction toggleSetMembership<T>(set: Set<T>, value: T): void {\n if (set.has(value)) {\n set.delete(value);\n } else {\n set.add(value);\n }\n}\n\nconst playlist = (\n state: PlaylistState = defaultPlaylistState,\n action: Action\n): PlaylistState => {\n switch (action.type) {\n case CLICKED_TRACK:\n return {\n ...state,\n selectedTracks: new Set([state.trackOrder[action.index]]),\n lastSelectedIndex: action.index,\n };\n case CTRL_CLICKED_TRACK: {\n const id = state.trackOrder[action.index];\n const newSelectedTracks = new Set(state.selectedTracks);\n toggleSetMembership(newSelectedTracks, id);\n return {\n ...state,\n selectedTracks: newSelectedTracks,\n // Using this as the lastClickedIndex is kinda funny, since you\n // may have just _un_selected the track. However, this is what\n // Winamp 2 does, so we'll copy it.\n lastSelectedIndex: action.index,\n };\n }\n case SHIFT_CLICKED_TRACK:\n if (state.lastSelectedIndex == null) {\n return state;\n }\n const clickedIndex = action.index;\n const start = Math.min(clickedIndex, state.lastSelectedIndex);\n const end = Math.max(clickedIndex, state.lastSelectedIndex);\n const selectedTracks = new Set(state.trackOrder.slice(start, end + 1));\n return {\n ...state,\n selectedTracks,\n };\n case SELECT_ALL:\n return {\n ...state,\n selectedTracks: new Set(state.trackOrder),\n };\n case SELECT_ZERO:\n return {\n ...state,\n selectedTracks: new Set(),\n };\n case INVERT_SELECTION:\n return {\n ...state,\n selectedTracks: new Set(\n state.trackOrder.filter((id) => !state.selectedTracks.has(id))\n ),\n };\n case REMOVE_ALL_TRACKS:\n // TODO: Consider disposing of ObjectUrls\n return {\n ...state,\n trackOrder: [],\n currentTrack: null,\n selectedTracks: new Set(),\n lastSelectedIndex: null,\n };\n case REMOVE_TRACKS:\n // TODO: Consider disposing of ObjectUrls\n const actionIds = new Set(action.ids.map(Number));\n const { currentTrack } = state;\n return {\n ...state,\n trackOrder: state.trackOrder.filter(\n (trackId) => !actionIds.has(trackId)\n ),\n currentTrack: actionIds.has(Number(currentTrack)) ? null : currentTrack,\n selectedTracks: new Set(\n Array.from(state.selectedTracks).filter((id) => actionIds.has(id))\n ),\n // TODO: This could probably be made to work, but we clear it just to be safe.\n lastSelectedIndex: null,\n };\n case REVERSE_LIST:\n return {\n ...state,\n trackOrder: [...state.trackOrder].reverse(),\n // TODO: This could probably be made to work, but we clear it just to be safe.\n lastSelectedIndex: null,\n };\n case RANDOMIZE_LIST:\n return {\n ...state,\n trackOrder: shuffle(state.trackOrder),\n };\n case SET_TRACK_ORDER:\n const { trackOrder } = action;\n return { ...state, trackOrder };\n case ADD_TRACK_FROM_URL:\n const atIndex =\n action.atIndex == null ? state.trackOrder.length : action.atIndex;\n return {\n ...state,\n trackOrder: [\n ...state.trackOrder.slice(0, atIndex),\n Number(action.id),\n ...state.trackOrder.slice(atIndex),\n ],\n // TODO: This could probably be made to work, but we clear it just to be safe.\n lastSelectedIndex: null,\n };\n case PLAY_TRACK:\n case BUFFER_TRACK:\n return {\n ...state,\n currentTrack: action.id,\n };\n case DRAG_SELECTED:\n return {\n ...state,\n trackOrder: moveSelected(\n state.trackOrder,\n (i) => state.selectedTracks.has(state.trackOrder[i]),\n action.offset\n ),\n // TODO: This could probably be made to work, but we clear it just to be safe.\n lastSelectedIndex: null,\n };\n default:\n return state;\n }\n};\n\nexport default playlist;\n","import { Action, WindowId, Box, Point } from \"../types\";\nimport { WINDOWS } from \"../constants\";\nimport {\n SET_FOCUSED_WINDOW,\n TOGGLE_WINDOW,\n CLOSE_WINDOW,\n UPDATE_WINDOW_POSITIONS,\n WINDOW_SIZE_CHANGED,\n TOGGLE_WINDOW_SHADE_MODE,\n LOAD_SERIALIZED_STATE,\n BROWSER_WINDOW_SIZE_CHANGED,\n RESET_WINDOW_SIZES,\n ENABLE_MILKDROP,\n} from \"../actionTypes\";\nimport * as Utils from \"../utils\";\nimport { WindowsSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport type WindowPositions = {\n [windowId: string]: Point;\n};\n\nexport interface WebampWindow {\n title: string;\n size: [number, number];\n open: boolean;\n shade?: boolean;\n canResize: boolean;\n canShade: boolean;\n canDouble: boolean;\n hotkey?: string;\n position: Point;\n}\n\nexport interface WindowInfo extends Box {\n key: WindowId;\n}\nexport interface WindowsState {\n focused: WindowId | null;\n genWindows: { [name: string]: WebampWindow };\n browserWindowSize: { height: number; width: number };\n positionsAreRelative: boolean;\n windowOrder: WindowId[];\n}\n\nconst defaultWindowsState: WindowsState = {\n focused: WINDOWS.MAIN,\n positionsAreRelative: true,\n genWindows: {\n // TODO: Remove static capabilities and derive them from ids/generic\n [WINDOWS.MAIN]: {\n title: \"Main Window\",\n size: [0, 0],\n open: true,\n shade: false,\n canResize: false,\n canShade: true,\n canDouble: true,\n hotkey: \"Alt+W\",\n position: { x: 0, y: 0 },\n },\n [WINDOWS.EQUALIZER]: {\n title: \"Equalizer\",\n size: [0, 0],\n open: true,\n shade: false,\n canResize: false,\n canShade: true,\n canDouble: true,\n hotkey: \"Alt+G\",\n position: { x: 0, y: 0 },\n },\n [WINDOWS.PLAYLIST]: {\n title: \"Playlist Editor\",\n size: [0, 0],\n open: true,\n shade: false,\n canResize: true,\n canShade: true,\n canDouble: false,\n hotkey: \"Alt+E\",\n position: { x: 0, y: 0 },\n },\n [WINDOWS.MILKDROP]: {\n title: \"Milkdrop\",\n size: [0, 0],\n open: false,\n shade: false,\n canResize: true,\n canShade: false,\n canDouble: false,\n position: { x: 0, y: 0 },\n },\n },\n browserWindowSize: { width: 0, height: 0 },\n windowOrder: [\n WINDOWS.PLAYLIST,\n WINDOWS.EQUALIZER,\n WINDOWS.MILKDROP,\n WINDOWS.MAIN,\n ],\n};\n\nconst windows = (\n state: WindowsState = defaultWindowsState,\n action: Action\n): WindowsState => {\n switch (action.type) {\n case ENABLE_MILKDROP:\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [WINDOWS.MILKDROP]: {\n ...state.genWindows[WINDOWS.MILKDROP],\n open: action.open,\n },\n },\n };\n case SET_FOCUSED_WINDOW:\n let windowOrder = state.windowOrder;\n if (action.window != null) {\n windowOrder = [\n ...state.windowOrder.filter((windowId) => windowId !== action.window),\n action.window,\n ];\n }\n return { ...state, focused: action.window, windowOrder };\n case TOGGLE_WINDOW_SHADE_MODE:\n const { canShade } = state.genWindows[action.windowId];\n if (!canShade) {\n throw new Error(\n `Tried to shade/unshade a window that cannot be shaded: ${action.windowId}`\n );\n }\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...state.genWindows[action.windowId],\n shade: !state.genWindows[action.windowId].shade,\n },\n },\n };\n case TOGGLE_WINDOW:\n const windowState = state.genWindows[action.windowId];\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...windowState,\n open: !windowState.open,\n },\n },\n };\n case CLOSE_WINDOW:\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...state.genWindows[action.windowId],\n open: false,\n },\n },\n };\n case WINDOW_SIZE_CHANGED:\n const { canResize } = state.genWindows[action.windowId];\n if (!canResize) {\n throw new Error(\n `Tried to resize a window that cannot be resized: ${action.windowId}`\n );\n }\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...state.genWindows[action.windowId],\n size: action.size,\n },\n },\n };\n case UPDATE_WINDOW_POSITIONS:\n return {\n ...state,\n positionsAreRelative:\n action.absolute === true ? false : state.positionsAreRelative,\n genWindows: Utils.objectMap(state.genWindows, (w, windowId) => {\n const newPosition = action.positions[windowId];\n if (newPosition == null) {\n return w;\n }\n return { ...w, position: newPosition };\n }),\n };\n case RESET_WINDOW_SIZES:\n return {\n ...state,\n genWindows: Utils.objectMap(state.genWindows, (w) => ({\n ...w,\n // Not sure why TypeScript can't figure this out for itself.\n size: [0, 0] as [number, number],\n })),\n };\n case LOAD_SERIALIZED_STATE: {\n const { genWindows, focused, positionsAreRelative } =\n action.serializedState.windows;\n return {\n ...state,\n positionsAreRelative,\n genWindows: Utils.objectMap(state.genWindows, (w, windowId) => {\n const serializedW = genWindows[windowId];\n if (serializedW == null) {\n return w;\n }\n // Pull out `hidden` since it's been removed from our state.\n const { hidden, ...rest } = serializedW;\n return { ...w, ...rest };\n }),\n focused,\n };\n }\n case BROWSER_WINDOW_SIZE_CHANGED:\n return {\n ...state,\n browserWindowSize: { height: action.height, width: action.width },\n };\n\n default:\n return state;\n }\n};\n\nexport function getSerializedState(\n state: WindowsState\n): WindowsSerializedStateV1 {\n return {\n positionsAreRelative: state.positionsAreRelative,\n genWindows: Utils.objectMap(state.genWindows, (w) => {\n return {\n size: w.size,\n open: w.open,\n hidden: false, // Not used any more\n shade: w.shade || false,\n position: w.position,\n };\n }),\n focused: state.focused,\n };\n}\n\nexport default windows;\n","import { Action, MediaStatus, TimeMode } from \"../types\";\nimport {\n PLAY,\n STOP,\n PAUSE,\n IS_STOPPED,\n IS_PLAYING,\n SET_VOLUME,\n SET_BALANCE,\n SET_MEDIA,\n TOGGLE_REPEAT,\n TOGGLE_SHUFFLE,\n TOGGLE_TIME_MODE,\n UPDATE_TIME_ELAPSED,\n LOAD_SERIALIZED_STATE,\n} from \"../actionTypes\";\nimport { TIME_MODE, MEDIA_STATUS } from \"../constants\";\nimport { MediaSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface MediaState {\n timeMode: TimeMode; // TODO: Convert this to an enum\n timeElapsed: number;\n volume: number;\n balance: number;\n shuffle: boolean;\n repeat: boolean;\n status: MediaStatus;\n}\n\nconst defaultState = {\n timeMode: TIME_MODE.ELAPSED,\n timeElapsed: 0,\n\n // The winamp ini file declares the default volume as \"200\".\n // The UI seems to show a default volume near 78, which would\n // math with the default value being 200 out of 255.\n volume: Math.round((200 / 255) * 100),\n balance: 0,\n shuffle: false,\n repeat: false,\n // TODO: Enforce possible values\n status: MEDIA_STATUS.STOPPED,\n};\n\nconst media = (\n state: MediaState = defaultState,\n action: Action\n): MediaState => {\n switch (action.type) {\n // TODO: Make these constants\n case PLAY:\n case IS_PLAYING:\n return { ...state, status: MEDIA_STATUS.PLAYING };\n case PAUSE:\n return { ...state, status: MEDIA_STATUS.PAUSED };\n case STOP:\n case IS_STOPPED:\n return { ...state, status: MEDIA_STATUS.STOPPED };\n case TOGGLE_TIME_MODE:\n const newMode =\n state.timeMode === TIME_MODE.REMAINING\n ? TIME_MODE.ELAPSED\n : TIME_MODE.REMAINING;\n return { ...state, timeMode: newMode };\n case UPDATE_TIME_ELAPSED:\n return { ...state, timeElapsed: action.elapsed };\n case SET_MEDIA:\n return {\n ...state,\n };\n case SET_VOLUME:\n return { ...state, volume: action.volume };\n case SET_BALANCE:\n return { ...state, balance: action.balance };\n case TOGGLE_REPEAT:\n return { ...state, repeat: !state.repeat };\n case TOGGLE_SHUFFLE:\n return { ...state, shuffle: !state.shuffle };\n case LOAD_SERIALIZED_STATE:\n return { ...state, ...action.serializedState.media };\n default:\n return state;\n }\n};\n\nexport function getSerializedState(state: MediaState): MediaSerializedStateV1 {\n const { volume, balance, shuffle, repeat } = state;\n return { volume, balance, shuffle, repeat };\n}\n\nexport default media;\n","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","import {\n Action,\n SkinImages,\n Cursors,\n SkinRegion,\n GenLetterWidths,\n PlaylistStyle,\n SkinGenExColors,\n DummyVizData,\n} from \"../types\";\nimport * as Utils from \"../utils\";\nimport { createSelector } from \"reselect\";\n\nimport {\n CLOSE_WINAMP,\n OPEN_WINAMP,\n SET_SKIN_DATA,\n START_WORKING,\n STEP_MARQUEE,\n STOP_WORKING,\n TOGGLE_DOUBLESIZE_MODE,\n TOGGLE_LLAMA_MODE,\n TOGGLE_VISUALIZER_STYLE,\n SET_PLAYLIST_SCROLL_POSITION,\n LOADED,\n SET_Z_INDEX,\n DISABLE_MARQUEE,\n SET_DUMMY_VIZ_DATA,\n LOADING,\n LOAD_SERIALIZED_STATE,\n LOAD_DEFAULT_SKIN,\n} from \"../actionTypes\";\nimport { DEFAULT_SKIN, VISUALIZER_ORDER } from \"../constants\";\nimport { DisplaySerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface DisplayState {\n visualizerStyle: number;\n doubled: boolean;\n llama: boolean;\n disableMarquee: boolean;\n marqueeStep: number;\n skinImages: SkinImages;\n skinCursors: Cursors | null;\n skinRegion: SkinRegion;\n skinGenLetterWidths: GenLetterWidths | null;\n skinColors: string[]; // Theoretically this could be a tuple of a specific length\n skinPlaylistStyle: PlaylistStyle | null;\n skinGenExColors: SkinGenExColors;\n working: boolean;\n closed: boolean;\n loading: boolean;\n playlistScrollPosition: number;\n zIndex: number;\n dummyVizData: DummyVizData | null;\n}\n\nconst defaultSkinGenExColors = {\n itemBackground: \"rgb(0,0,0)\",\n itemForeground: \"rgb(0,255,0)\",\n windowBackground: \"rgb(56,55,87)\",\n buttonText: \"rgb(57,57,66)\",\n windowText: \"rgb(255,255,255)\",\n divider: \"rgb(117,116,139)\",\n playlistSelection: \"rgb(0,0,198)\",\n listHeaderBackground: \"rgb(72,72,120)\",\n listHeaderText: \"rgb(255,255,255)\",\n listHeaderFrameTopAndLeft: \"rgb(108,108,180)\",\n listHeaderFrameBottomAndRight: \"rgb(36,36,60)\",\n listHeaderFramePressed: \"rgb(18,18,30)\",\n listHeaderDeadArea: \"rgb(36,36,60)\",\n scrollbarOne: \"rgb(36,36,60)\",\n scrollbarTwo: \"rgb(36,36,60)\",\n pressedScrollbarOne: \"rgb(121,130,150)\",\n pressedScrollbarTwo: \"rgb(78,88,110)\",\n scrollbarDeadArea: \"rgb(36,36,60)\",\n listTextHighlighted: \"rgb(0,198,255)\",\n listTextHighlightedBackground: \"rgb(0,198,255)\",\n listTextSelected: \"rgb(0,198,255)\",\n listTextSelectedBackground: \"rgb(0,198,255)\",\n};\n\nconst defaultDisplayState = {\n doubled: false,\n marqueeStep: 0,\n disableMarquee: false,\n loading: true,\n llama: false,\n closed: false,\n working: false,\n skinImages: DEFAULT_SKIN.images,\n skinColors: DEFAULT_SKIN.colors,\n skinCursors: null,\n skinPlaylistStyle: null,\n skinRegion: {},\n visualizerStyle: 0, // Index into VISUALIZER_ORDER\n dummyVizData: null,\n playlistScrollPosition: 0,\n skinGenLetterWidths: null, // TODO: Get the default value for this?\n skinGenExColors: defaultSkinGenExColors,\n additionalVisualizers: [],\n zIndex: 0,\n};\n\nconst display = (\n state: DisplayState = defaultDisplayState,\n action: Action\n): DisplayState => {\n switch (action.type) {\n case LOAD_DEFAULT_SKIN: {\n const {\n skinImages,\n skinColors,\n skinCursors,\n skinPlaylistStyle,\n skinRegion,\n skinGenLetterWidths,\n skinGenExColors,\n } = defaultDisplayState;\n return {\n ...state,\n skinImages,\n skinColors,\n skinCursors,\n skinPlaylistStyle,\n skinRegion,\n skinGenLetterWidths,\n skinGenExColors,\n };\n }\n case TOGGLE_DOUBLESIZE_MODE:\n return { ...state, doubled: !state.doubled };\n case TOGGLE_LLAMA_MODE:\n return { ...state, llama: !state.llama };\n case STEP_MARQUEE:\n return state.disableMarquee\n ? state\n : { ...state, marqueeStep: state.marqueeStep + 1 };\n case DISABLE_MARQUEE:\n return { ...state, disableMarquee: true };\n case STOP_WORKING:\n return { ...state, working: false };\n case START_WORKING:\n return { ...state, working: true };\n case CLOSE_WINAMP:\n return { ...state, closed: true };\n case OPEN_WINAMP:\n return { ...state, closed: false };\n case LOADING:\n return { ...state, loading: true };\n case LOADED:\n return { ...state, loading: false };\n case SET_SKIN_DATA:\n const { data } = action;\n return {\n ...state,\n loading: false,\n skinImages: data.skinImages,\n skinColors: data.skinColors,\n skinPlaylistStyle: data.skinPlaylistStyle,\n skinCursors: data.skinCursors,\n skinRegion: data.skinRegion,\n skinGenLetterWidths: data.skinGenLetterWidths,\n skinGenExColors: data.skinGenExColors || defaultSkinGenExColors,\n };\n case TOGGLE_VISUALIZER_STYLE:\n return {\n ...state,\n visualizerStyle: (state.visualizerStyle + 1) % VISUALIZER_ORDER.length,\n };\n case SET_PLAYLIST_SCROLL_POSITION:\n return { ...state, playlistScrollPosition: action.position };\n case SET_Z_INDEX:\n return { ...state, zIndex: action.zIndex };\n case SET_DUMMY_VIZ_DATA:\n return { ...state, dummyVizData: action.data };\n case LOAD_SERIALIZED_STATE: {\n const { skinCursors, ...rest } = action.serializedState.display;\n const upgrade = (url: string) => ({ type: \"cur\", url } as const);\n const newSkinCursors =\n skinCursors == null ? null : Utils.objectMap(skinCursors, upgrade);\n return { ...state, skinCursors: newSkinCursors, ...rest };\n }\n default:\n return state;\n }\n};\nexport default display;\n\nexport const getSerializedState = (\n state: DisplayState\n): DisplaySerializedStateV1 => {\n // My kingdom for a type-safe `_.pick`.\n const {\n visualizerStyle,\n doubled,\n llama,\n marqueeStep,\n skinImages,\n skinCursors,\n skinRegion,\n skinGenLetterWidths,\n skinColors,\n skinPlaylistStyle,\n } = state;\n\n let newCursors: { [cursor: string]: string } | null = null;\n if (skinCursors != null) {\n // @ts-ignore Typescript does not like that we can have `undefined` as\n // values here. Since this is going to get serialized to JSON (which will\n // drop undefined) it's fine.\n // This code is geting removed soon anyway.\n newCursors = Utils.objectMap(skinCursors, (cursor) => {\n return cursor.type === \"cur\" ? cursor.url : undefined;\n });\n }\n return {\n visualizerStyle,\n doubled,\n llama,\n marqueeStep,\n skinImages,\n skinCursors: newCursors,\n skinRegion,\n skinGenLetterWidths,\n skinColors,\n skinPlaylistStyle,\n };\n};\n\nexport const getVisualizerStyle = createSelector(\n (state: DisplayState) => state.visualizerStyle,\n (visualizationStyle): string => {\n return VISUALIZER_ORDER[visualizationStyle];\n }\n);\n","import { Action, Slider } from \"../types\";\nimport {\n SET_FOCUS,\n SET_BAND_FOCUS,\n SET_SCRUB_POSITION,\n UNSET_FOCUS,\n SET_USER_MESSAGE,\n UNSET_USER_MESSAGE,\n} from \"../actionTypes\";\n\nexport interface UserInputState {\n focus: string | null; // TODO: Convert this to an enum?\n bandFocused: Slider | null;\n scrubPosition: number;\n userMessage: string | null;\n}\n\nconst defaultUserInput = {\n focus: null,\n bandFocused: null,\n scrubPosition: 0,\n userMessage: null,\n};\n\nexport const userInput = (\n state: UserInputState = defaultUserInput,\n action: Action\n): UserInputState => {\n switch (action.type) {\n case SET_FOCUS:\n return { ...state, focus: action.input, bandFocused: null };\n case SET_BAND_FOCUS:\n return { ...state, focus: action.input, bandFocused: action.bandFocused };\n case UNSET_FOCUS:\n return { ...state, focus: null, bandFocused: null };\n case SET_SCRUB_POSITION:\n return { ...state, scrubPosition: action.position };\n case SET_USER_MESSAGE:\n return { ...state, userMessage: action.message };\n case UNSET_USER_MESSAGE:\n return { ...state, userMessage: null };\n default:\n return state;\n }\n};\n\nexport default userInput;\n","import { Slider, Action } from \"./../types\";\n\nimport {\n SET_BAND_VALUE,\n SET_EQ_AUTO,\n SET_EQ_ON,\n SET_EQ_OFF,\n LOAD_SERIALIZED_STATE,\n} from \"../actionTypes\";\nimport { EqualizerSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface EqualizerState {\n on: boolean;\n auto: boolean;\n sliders: Record<Slider, number>;\n}\n\nconst defaultState = {\n on: true,\n auto: false,\n sliders: {\n preamp: 50,\n 60: 50,\n 170: 50,\n 310: 50,\n 600: 50,\n 1000: 50,\n 3000: 50,\n 6000: 50,\n 12000: 50,\n 14000: 50,\n 16000: 50,\n },\n};\n\nconst equalizer = (\n state: EqualizerState = defaultState,\n action: Action\n): EqualizerState => {\n switch (action.type) {\n case SET_BAND_VALUE:\n const newSliders = { ...state.sliders, [action.band]: action.value };\n return { ...state, sliders: newSliders };\n case SET_EQ_ON:\n return { ...state, on: true };\n case SET_EQ_OFF:\n return { ...state, on: false };\n case SET_EQ_AUTO:\n return { ...state, auto: action.value };\n case LOAD_SERIALIZED_STATE:\n return action.serializedState.equalizer || state;\n default:\n return state;\n }\n};\n\nexport function getSerializedState(\n state: EqualizerState\n): EqualizerSerializedStateV1 {\n return state;\n}\n\nexport default equalizer;\n","import { Action } from \"../types\";\nimport { NETWORK_CONNECTED, NETWORK_DISCONNECTED } from \"../actionTypes\";\n\nexport interface NetworkState {\n connected: boolean;\n}\n\nconst network = (\n state: NetworkState = { connected: true },\n action: Action\n): NetworkState => {\n switch (action.type) {\n case NETWORK_CONNECTED:\n return { ...state, connected: true };\n case NETWORK_DISCONNECTED:\n return { ...state, connected: false };\n default:\n return state;\n }\n};\n\nexport default network;\n","import { Action, Skin } from \"../types\";\nimport { SET_AVAILABLE_SKINS } from \"../actionTypes\";\n\nexport interface SettingsState {\n availableSkins: Array<Skin>;\n}\n\nconst defaultSettingsState = {\n availableSkins: [],\n};\n\nconst settings = (\n state: SettingsState = defaultSettingsState,\n action: Action\n): SettingsState => {\n switch (action.type) {\n case SET_AVAILABLE_SKINS:\n return { ...state, availableSkins: action.skins };\n default:\n return state;\n }\n};\n\nexport default settings;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar NODE_ENV = process.env.NODE_ENV;\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","import invariant from \"invariant\";\nimport { IMusicMetadataBrowserApi } from \"./types\";\nimport { IAudioMetadata } from \"music-metadata-browser\"; // Import music-metadata type definitions\nimport * as Utils from \"./utils\";\n\ntype MediaDataType = string | ArrayBuffer | Blob;\n\nexport function genMediaTags(\n file: MediaDataType,\n musicMetadata: IMusicMetadataBrowserApi\n): Promise<IAudioMetadata> {\n invariant(\n file != null,\n \"Attempted to get the tags of media file without passing a file\"\n );\n\n const options = {\n duration: true,\n skipPostHeaders: true, // avoid unnecessary data to be read\n };\n\n if (typeof file === \"string\") {\n return musicMetadata.fetchFromUrl(file, options);\n }\n // Assume Blob\n return musicMetadata.parseBlob(file as Blob, options);\n}\n\nexport function genMediaDuration(url: string): Promise<number> {\n invariant(\n typeof url === \"string\",\n \"Attempted to get the duration of media file without passing a url\"\n );\n return new Promise((resolve, reject) => {\n // TODO: Does this actually stop downloading the file once it's\n // got the duration?\n const audio = document.createElement(\"audio\");\n audio.crossOrigin = \"anonymous\";\n const durationChange = () => {\n resolve(audio.duration);\n audio.removeEventListener(\"durationchange\", durationChange);\n audio.src = \"\";\n // TODO: Not sure if this really gets cleaned up.\n };\n audio.addEventListener(\"durationchange\", durationChange);\n audio.addEventListener(\"error\", (e) => {\n reject(e);\n });\n audio.src = url;\n });\n}\n\nexport async function genArrayBufferFromFileReference(\n fileReference: File\n): Promise<any> {\n invariant(\n fileReference != null,\n \"Attempt to get an ArrayBuffer without assigning a fileReference\"\n );\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as ArrayBuffer);\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(fileReference);\n });\n}\n\nexport async function genStringFromFileReference(\n fileReference: File\n): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as string);\n };\n reader.onerror = reject;\n reader.readAsText(fileReference);\n });\n}\n\ninterface PromptForFileReferenceOptions {\n accept?: string | null;\n directory?: boolean;\n}\n\nexport async function promptForFileReferences(\n { accept, directory = false }: PromptForFileReferenceOptions = {\n accept: null,\n directory: false,\n }\n): Promise<FileList> {\n return new Promise<FileList>((resolve) => {\n // Does this represent a memory leak somehow?\n // Can this fail? Do we ever reject?\n const fileInput = document.createElement(\"input\");\n if (accept) fileInput.setAttribute(\"accept\", accept);\n fileInput.type = \"file\";\n fileInput.multiple = true;\n // @ts-ignore Non-standard\n fileInput.webkitdirectory = directory;\n // @ts-ignore Non-standard\n fileInput.directory = directory;\n // @ts-ignore Non-standard\n fileInput.mozdirectory = directory;\n // Not entirely sure why this is needed, since the input\n // was just created, but somehow this helps prevent change\n // events from getting swallowed.\n // https://stackoverflow.com/a/12102992/1263117\n\n // @ts-ignore Technically you can't set this to null, it has to be a string.\n // But I don't feel like retesting it, so I'll leave it as null\n fileInput.value = null;\n fileInput.addEventListener(\"change\", (e: Event) => {\n const files = (<HTMLInputElement>e.target).files;\n resolve(files as FileList);\n });\n fileInput.click();\n });\n}\n\nfunction urlIsBlobUrl(url: string): boolean {\n return /^blob:/.test(url);\n}\n\nexport function curUrlFromByteArray(arr: Uint8Array) {\n const base64 = Utils.base64FromDataArray(arr);\n return `data:image/x-win-bitmap;base64,${base64}`;\n}\n\n// This is not perfect, but... meh: https://stackoverflow.com/a/36756650/1263117\nexport function filenameFromUrl(url: string): string | null {\n if (urlIsBlobUrl(url)) {\n return null;\n }\n\n const lastSegment = url.split(\"/\").pop();\n if (lastSegment == null) {\n return null;\n }\n return lastSegment.split(\"#\")[0].split(\"?\")[0];\n}\n","import { PlaylistTrack } from \"./types\";\nimport * as Utils from \"./utils\";\nimport * as FileUtils from \"./fileUtils\";\n\nexport const trackName = Utils.weakMapMemoize(\n (track: PlaylistTrack): string => {\n const { artist, title, defaultName, url } = track;\n if (artist && title) {\n return `${artist} - ${title}`;\n } else if (title) {\n return title;\n } else if (defaultName) {\n return defaultName;\n } else if (url) {\n const filename = FileUtils.filenameFromUrl(url);\n if (filename) {\n return filename;\n }\n }\n return \"???\";\n }\n);\n\nexport const trackFilename = Utils.weakMapMemoize(\n (track: PlaylistTrack): string => {\n if (track.url) {\n const urlFilename = FileUtils.filenameFromUrl(track.url);\n if (urlFilename != null) {\n return urlFilename;\n }\n }\n if (track.defaultName) {\n return track.defaultName;\n }\n return \"???\";\n }\n);\n","import { PlaylistTrack, Action } from \"../types\";\nimport {\n SET_MEDIA,\n SET_MEDIA_TAGS,\n SET_MEDIA_DURATION,\n MEDIA_TAG_REQUEST_INITIALIZED,\n MEDIA_TAG_REQUEST_FAILED,\n ADD_TRACK_FROM_URL,\n} from \"../actionTypes\";\nimport { MEDIA_TAG_REQUEST_STATUS } from \"../constants\";\nimport * as TrackUtils from \"../trackUtils\";\n\nexport interface TracksState {\n [id: string]: PlaylistTrack;\n}\n\nconst defaultPlaylistState: TracksState = {};\n\nconst tracks = (\n state: TracksState = defaultPlaylistState,\n action: Action\n): TracksState => {\n switch (action.type) {\n case ADD_TRACK_FROM_URL:\n return {\n ...state,\n [action.id]: {\n id: action.id,\n defaultName: action.defaultName || null,\n duration: action.duration ?? null,\n url: action.url,\n mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.INITIALIZED,\n },\n };\n case SET_MEDIA: {\n const newTrack = {\n ...state[action.id],\n duration: action.length,\n };\n return {\n ...state,\n [action.id]: newTrack,\n };\n }\n case MEDIA_TAG_REQUEST_INITIALIZED:\n return {\n ...state,\n [action.id]: {\n ...state[action.id],\n mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.INITIALIZED,\n },\n };\n case MEDIA_TAG_REQUEST_FAILED:\n return {\n ...state,\n [action.id]: {\n ...state[action.id],\n mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.FAILED,\n },\n };\n case SET_MEDIA_DURATION: {\n return {\n ...state,\n [action.id]: {\n ...state[action.id],\n duration: action.duration,\n },\n };\n }\n case SET_MEDIA_TAGS:\n const track = state[action.id];\n const {\n sampleRate,\n bitrate,\n numberOfChannels,\n title,\n artist,\n album,\n albumArtUrl,\n } = action;\n const { kbps, khz, channels } = track;\n return {\n ...state,\n [action.id]: {\n ...track,\n mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.COMPLETE,\n title,\n artist,\n album,\n albumArtUrl,\n kbps: bitrate != null ? String(Math.round(bitrate / 1000)) : kbps,\n khz: sampleRate != null ? String(Math.round(sampleRate / 1000)) : khz,\n channels: numberOfChannels != null ? numberOfChannels : channels,\n },\n };\n default:\n return state;\n }\n};\n\nexport default tracks;\n\nexport const getTrackDisplayName = (\n state: TracksState,\n id: number | null = null\n): string | null => {\n if (id == null) {\n return null;\n }\n const track = state[id];\n if (track == null) {\n return null;\n }\n\n return TrackUtils.trackName(track);\n};\n","import { PlaylistState } from \"./reducers/playlist\";\nimport { SettingsState } from \"./reducers/settings\";\nimport { UserInputState } from \"./reducers/userInput\";\nimport { MediaState } from \"./reducers/media\";\nimport { ThunkDispatch, ThunkAction } from \"redux-thunk\";\nimport { DisplayState } from \"./reducers/display\";\nimport {\n WindowsState,\n WindowPositions as _WindowPositions,\n WebampWindow as _WebampWindow,\n WindowInfo as _WindowInfo,\n} from \"./reducers/windows\";\nimport { EqualizerState } from \"./reducers/equalizer\";\nimport { NetworkState } from \"./reducers/network\";\nimport { MilkdropState } from \"./reducers/milkdrop\";\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\nimport { TracksState } from \"./reducers/tracks\";\nimport { IAudioMetadata, IOptions } from \"music-metadata-browser\";\nimport { Store as ReduxStore } from \"redux\";\n\n// Avoid warnings from Webpack: https://github.com/webpack/webpack/issues/7378\nexport type WebampWindow = _WebampWindow;\nexport type WindowInfo = _WindowInfo;\nexport type WindowPositions = _WindowPositions;\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface Diff {\n x?: number;\n y?: number;\n}\n\nexport interface BoundingBox {\n width: number;\n height: number;\n}\n\nexport interface Box extends Point {\n width: number;\n height: number;\n}\n\nexport interface FilePicker {\n contextMenuName: string;\n filePicker: () => Promise<Track[]>;\n requiresNetwork: boolean;\n}\n\nexport type Skin = {\n url: string;\n name: string;\n};\n\nexport interface MilkdropMessage {\n text: string;\n time: number;\n}\n\nexport type Band =\n | 60\n | 170\n | 310\n | 600\n | 1000\n | 3000\n | 6000\n | 12000\n | 14000\n | 16000;\n\nexport type Slider = Band | \"preamp\";\n\nexport type CursorImage =\n | {\n type: \"cur\";\n url: string;\n }\n | {\n type: \"ani\";\n aniData: Uint8Array;\n };\n\n// TODO: Use a type to ensure these keys mirror the CURSORS constant in\n// skinParser.js\nexport type Cursors = { [cursor: string]: CursorImage };\n\nexport type GenLetterWidths = { [letter: string]: number };\n\nexport interface PlaylistStyle {\n normal: string;\n current: string;\n normalbg: string;\n selectedbg: string;\n font: string;\n}\n\n// TODO: Type these keys.\nexport type SkinImages = { [sprite: string]: string };\n\n// TODO: type these keys\nexport type SkinRegion = { [windowName: string]: string[] };\n\nexport type DummyVizData = {\n 0: 11.75;\n 8: 11.0625;\n 16: 8.5;\n 24: 7.3125;\n 32: 6.75;\n 40: 6.4375;\n 48: 6.25;\n 56: 5.875;\n 64: 5.625;\n 72: 5.25;\n 80: 5.125;\n 88: 4.875;\n 96: 4.8125;\n 104: 4.375;\n 112: 3.625;\n 120: 1.5625;\n};\n\nexport interface SkinGenExColors {\n itemBackground: string;\n itemForeground: string;\n windowBackground: string;\n buttonText: string;\n windowText: string;\n divider: string;\n playlistSelection: string;\n listHeaderBackground: string;\n listHeaderText: string;\n listHeaderFrameTopAndLeft: string;\n listHeaderFrameBottomAndRight: string;\n listHeaderFramePressed: string;\n listHeaderDeadArea: string;\n scrollbarOne: string;\n scrollbarTwo: string;\n pressedScrollbarOne: string;\n pressedScrollbarTwo: string;\n scrollbarDeadArea: string;\n listTextHighlighted: string;\n listTextHighlightedBackground: string;\n listTextSelected: string;\n listTextSelectedBackground: string;\n}\n\nexport type WindowId = \"main\" | \"playlist\" | \"equalizer\" | \"milkdrop\";\n\n// TODO: Fill these out once we actually use them.\nexport type SkinData = {\n skinImages: SkinImages;\n skinColors: string[];\n skinPlaylistStyle: PlaylistStyle;\n skinCursors: Cursors;\n skinRegion: SkinRegion;\n skinGenLetterWidths: GenLetterWidths;\n skinGenExColors: SkinGenExColors | null;\n};\n\n// This is what we actually pass to butterchurn\nexport type ButterchurnPresetJson = {\n name: string;\n butterchurnPresetObject: Object;\n};\n\n// A URL that points to a Butterchurn preset\nexport interface ButterchurnPresetUrl {\n name: string;\n butterchurnPresetUrl: string;\n}\n\nexport type LazyButterchurnPresetJson = {\n name: string;\n getButterchrunPresetObject: () => Promise<Object>;\n};\n\nexport type Preset =\n | ButterchurnPresetJson\n | ButterchurnPresetUrl\n | LazyButterchurnPresetJson;\n\nexport type StatePreset =\n | { type: \"RESOLVED\"; name: string; preset: Object }\n | { type: \"UNRESOLVED\"; name: string; getPreset: () => Promise<Object> };\n\nexport interface ButterchurnOptions {\n getPresets(): Promise<Preset[]>;\n importButterchurn(): Promise<any>;\n importConvertPreset?: () => Promise<{\n convertPreset(file: string, endpoint: string): Promise<Object>;\n }>;\n presetConverterEndpoint?: string;\n butterchurnOpen: boolean;\n}\n\nexport interface EqfPreset {\n name: string;\n hz60: number;\n hz170: number;\n hz310: number;\n hz600: number;\n hz1000: number;\n hz3000: number;\n hz12000: number;\n hz14000: number;\n hz16000: number;\n hz6000: number;\n preamp: number;\n}\n\nexport enum TransitionType {\n IMMEDIATE,\n DEFAULT,\n USER_PRESET,\n}\n\nexport interface Size {\n width: number;\n height: number;\n}\n\nexport type Action =\n | {\n type: \"@@init\";\n }\n | {\n type: \"NETWORK_CONNECTED\";\n }\n | {\n type: \"NETWORK_DISCONNECTED\";\n }\n | {\n type: \"SET_AVAILABLE_SKINS\";\n skins: Array<Skin>;\n }\n | {\n type: \"PLAY\";\n }\n | {\n type: \"IS_PLAYING\";\n }\n | {\n type: \"PAUSE\";\n }\n | {\n type: \"STOP\";\n }\n | {\n type: \"IS_STOPPED\";\n }\n | {\n type: \"TOGGLE_TIME_MODE\";\n }\n | {\n type: \"UPDATE_TIME_ELAPSED\";\n elapsed: number;\n }\n | {\n type: \"ADD_TRACK_FROM_URL\";\n atIndex: number | null;\n id: number;\n defaultName?: string;\n duration?: number;\n url: string;\n }\n | {\n type: \"SET_MEDIA\";\n id: number;\n length: number;\n kbps: string;\n khz: string;\n channels: number;\n }\n | {\n type: \"SET_VOLUME\";\n volume: number;\n }\n | {\n type: \"SET_BALANCE\";\n balance: number;\n }\n | {\n type: \"TOGGLE_REPEAT\";\n }\n | {\n type: \"TOGGLE_SHUFFLE\";\n }\n | {\n type: \"SET_FOCUS\";\n input: string;\n }\n | {\n type: \"SET_BAND_FOCUS\";\n input: string;\n bandFocused: Slider;\n }\n | {\n type: \"UNSET_FOCUS\";\n }\n | {\n type: \"SET_SCRUB_POSITION\";\n position: number;\n }\n | {\n type: \"SET_USER_MESSAGE\";\n message: string;\n }\n | {\n type: \"UNSET_USER_MESSAGE\";\n }\n | {\n type: \"TOGGLE_DOUBLESIZE_MODE\";\n }\n | {\n type: \"TOGGLE_LLAMA_MODE\";\n }\n | {\n type: \"STEP_MARQUEE\";\n }\n | {\n type: \"DISABLE_MARQUEE\";\n }\n | {\n type: \"STOP_WORKING\";\n }\n | {\n type: \"START_WORKING\";\n }\n | {\n type: \"CLOSE_WINAMP\";\n }\n | {\n type: \"OPEN_WINAMP\";\n }\n | {\n type: \"LOADING\";\n }\n | {\n type: \"LOADED\";\n }\n | {\n type: \"SET_SKIN_DATA\";\n data: SkinData;\n }\n | {\n type: \"TOGGLE_VISUALIZER_STYLE\";\n }\n | {\n type: \"SET_PLAYLIST_SCROLL_POSITION\";\n position: number;\n }\n | {\n type: \"SET_Z_INDEX\";\n zIndex: number;\n }\n | {\n type: \"SET_DUMMY_VIZ_DATA\";\n data: DummyVizData;\n }\n | {\n type: \"SET_BAND_VALUE\";\n band: Slider;\n value: number;\n }\n | {\n type: \"SET_EQ_ON\";\n }\n | {\n type: \"SET_EQ_OFF\";\n }\n | {\n type: \"SET_EQ_AUTO\";\n value: boolean;\n }\n | {\n type: \"SET_FOCUSED_WINDOW\";\n window: WindowId | null;\n }\n | {\n type: \"TOGGLE_WINDOW_SHADE_MODE\";\n windowId: WindowId;\n }\n | {\n type: \"TOGGLE_WINDOW\";\n windowId: WindowId;\n }\n | {\n type: \"CLOSE_WINDOW\";\n windowId: WindowId;\n }\n | {\n type: \"SET_WINDOW_VISIBILITY\";\n windowId: WindowId;\n hidden: boolean;\n }\n | {\n type: \"ADD_GEN_WINDOW\";\n windowId: WindowId;\n title: string;\n open: boolean;\n }\n | {\n type: \"WINDOW_SIZE_CHANGED\";\n windowId: WindowId;\n size: [number, number];\n }\n | {\n type: \"UPDATE_WINDOW_POSITIONS\";\n positions: WindowPositions;\n absolute?: boolean;\n }\n | {\n type: \"CLICKED_TRACK\";\n index: number;\n }\n | {\n type: \"CTRL_CLICKED_TRACK\";\n index: number;\n }\n | {\n type: \"SHIFT_CLICKED_TRACK\";\n index: number;\n }\n | {\n type: \"SELECT_ALL\";\n }\n | {\n type: \"SELECT_ZERO\";\n }\n | {\n type: \"INVERT_SELECTION\";\n }\n | {\n type: \"REMOVE_ALL_TRACKS\";\n }\n | {\n type: \"REMOVE_TRACKS\";\n ids: number[];\n }\n | {\n type: \"REVERSE_LIST\";\n }\n | {\n type: \"RANDOMIZE_LIST\";\n }\n | {\n type: \"SET_TRACK_ORDER\";\n trackOrder: number[];\n }\n | {\n type: \"SET_MEDIA_TAGS\";\n id: number;\n title: string;\n artist: string;\n album?: string;\n albumArtUrl?: string | null;\n numberOfChannels?: number;\n bitrate?: number;\n sampleRate?: number;\n }\n | {\n type: \"MEDIA_TAG_REQUEST_INITIALIZED\";\n id: number;\n }\n | {\n type: \"MEDIA_TAG_REQUEST_FAILED\";\n id: number;\n }\n | {\n type: \"SET_MEDIA_DURATION\";\n id: number;\n duration: number;\n }\n | {\n type: \"PLAY_TRACK\";\n id: number;\n }\n | {\n type: \"BUFFER_TRACK\";\n id: number;\n }\n | {\n type: \"DRAG_SELECTED\";\n offset: number;\n }\n | {\n type: \"PLAY\";\n }\n | {\n type: \"PAUSE\";\n }\n | {\n type: \"SEEK_TO_PERCENT_COMPLETE\";\n percent: number;\n }\n | {\n type: \"MINIMIZE_WINAMP\";\n }\n | {\n type: \"CLOSE_REQUESTED\";\n cancel: () => void;\n }\n | {\n type: \"LOAD_SERIALIZED_STATE\";\n serializedState: SerializedStateV1;\n }\n | { type: \"RESET_WINDOW_SIZES\" }\n | { type: \"BROWSER_WINDOW_SIZE_CHANGED\"; height: number; width: number }\n | { type: \"LOAD_DEFAULT_SKIN\" }\n | { type: \"ENABLE_MILKDROP\"; open: boolean }\n | { type: \"SCHEDULE_MILKDROP_MESSAGE\"; message: string }\n | {\n type: \"SET_MILKDROP_DESKTOP\";\n enabled: boolean;\n }\n | {\n type: \"SET_MILKDROP_FULLSCREEN\";\n enabled: boolean;\n }\n | { type: \"PRESET_REQUESTED\"; index: number; addToHistory: boolean }\n | {\n type: \"GOT_BUTTERCHURN_PRESETS\";\n presets: StatePreset[];\n }\n | {\n type: \"GOT_BUTTERCHURN\";\n butterchurn: any;\n }\n | {\n type: \"TOGGLE_RANDOMIZE_PRESETS\";\n }\n | { type: \"TOGGLE_PRESET_CYCLING\" }\n | {\n type: \"RESOLVE_PRESET_AT_INDEX\";\n index: number;\n json: Object;\n }\n | {\n type: \"SELECT_PRESET_AT_INDEX\";\n index: number;\n transitionType: TransitionType;\n }\n | { type: \"TOGGLE_PRESET_OVERLAY\" }\n | { type: \"MAIN_CONTEXT_MENU_OPENED\" }\n | {\n type: \"DROPPED_FILES\";\n count: number;\n firstFileName: string | null;\n windowId: WindowId;\n }\n | {\n type: \"OPENED_FILES\";\n expectedType: \"SKIN\" | \"MEDIA\" | \"EQ\";\n count: number;\n firstFileName: string | null;\n };\n\nexport type MediaTagRequestStatus =\n | \"INITIALIZED\"\n | \"FAILED\"\n | \"COMPLETE\"\n | \"NOT_REQUESTED\";\n\nexport type MediaStatus = \"PLAYING\" | \"STOPPED\" | \"PAUSED\";\n\nexport type LoadStyle = \"BUFFER\" | \"PLAY\" | \"NONE\";\n\nexport type TimeMode = \"ELAPSED\" | \"REMAINING\";\n\ninterface TrackInfo {\n /**\n * Name to be used until ID3 tags can be resolved.\n *\n * If the track has a `url`, and this property is not given,\n * the filename will be used instead.\n *\n * Example: `'My Song'`\n */\n defaultName?: string;\n\n /**\n * Data to be used _instead_ of trying to fetch ID3 tags.\n *\n * Example: `{ artist: 'Jordan Eldredge', title: \"Jordan's Song\" }`\n */\n metaData?: {\n artist: string;\n title: string;\n album?: string;\n albumArtUrl?: string;\n };\n\n /**\n * Duration (in seconds) to be used instead of fetching enough of the file to measure its length.\n *\n * Example: 95\n */\n duration?: number;\n}\n\nexport interface URLTrack extends TrackInfo {\n /**\n * Source URL of the track\n *\n * Note: This URL must be served the with correct CORs headers.\n *\n * Example: `'https://example.com/song.mp3'`\n */\n url: string;\n}\n\nexport interface BlobTrack extends TrackInfo {\n /**\n * Blob source of the track\n */\n blob: Blob;\n}\n\nexport interface LoadedURLTrack {\n url: string;\n metaData: {\n artist: string | null;\n title: string | null;\n album: string | null;\n albumArtUrl: string | null;\n };\n}\n\nexport interface Options {\n /**\n * An object representing the initial skin to use.\n *\n * If omitted, the default skin, included in the bundle, will be used.\n * Note: This URL must be served the with correct CORs headers.\n *\n * Example: `{ url: './path/to/skin.wsz' }`\n */\n initialSkin?: {\n url: string;\n };\n\n /**\n * An array of `Track`s to prepopulate the playlist with.\n */\n initialTracks?: Track[];\n\n /**\n * An array of objects representing available skins.\n *\n * These will appear in the \"Options\" menu under \"Skins\".\n * Note: These URLs must be served with the correct CORs headers.\n *\n * Example: `[ { url: \"./green.wsz\", name: \"Green Dimension V2\" } ]`\n */\n availableSkins?: { url: string; name: string }[];\n\n /**\n * Configure how the Winamp windows should be laid out on initial render.\n */\n windowLayout?: WindowLayout;\n\n /**\n * Controls if \"double size mode\", where the fixed sized windows are rendered\n * at 2x, should be enabled\n *\n * **Note:** In keeping with the original Winamp, double size mode does not\n * apply to resizable windows like the equalizer or Milkdrop.\n *\n * Default: `false`\n */\n enableDoubleSizeMode?: boolean;\n\n /**\n * Should global hotkeys be enabled?\n *\n * Default: `false`\n */\n enableHotkeys?: boolean;\n\n /**\n * An array of additional file pickers.\n *\n * These will appear in the \"Options\" menu under \"Play\".\n *\n * For example, this option can be used to provide a \"Dropbox\" file picker.\n */\n filePickers?: [\n {\n /**\n * The name that will appear in the context menu.\n *\n * Example: `\"My File Picker...\"`\n */\n contextMenuName: string;\n\n /**\n * A function which returns a Promise that resolves to an array of `Track`s\n *\n * Example: `() => Promise.resolve([{ url: './rick_roll.mp3' }])`\n */\n filePicker: () => Promise<Track[]>;\n\n /**\n * Indicates if this options should be made available when the user is offline.\n */\n requiresNetwork: boolean;\n }\n ];\n zIndex?: number;\n handleTrackDropEvent?: (\n e: React.DragEvent<HTMLDivElement>\n ) => Track[] | null | Promise<Track[] | null>;\n handleAddUrlEvent?: () => Track[] | null | Promise<Track[] | null>;\n handleLoadListEvent?: () => Track[] | null | Promise<Track[] | null>;\n handleSaveListEvent?: (tracks: Track[]) => null | Promise<null>;\n}\n\n/**\n * Specifies the initial position and size of a the Winamp windows.\n *\n * Positions are specified in pixels from the top left corner of an imaginary\n * box. On initial render, the collection of visible windows will be centered\n * within the HTML element passed to `Webamp.renderWhenReady(element)`. In other\n * words, the positions given here will determine the _relative_ position of the\n * windows. The absolute position will be determined by the HTML element in\n * which Webamp is centered.\n *\n * Enabling \"shade mode\" for a window that supports it, will cause it to be\n * rendered minimized. Be default windows are not in shade mode.\n *\n * Windows which support resizing can have their size specified. If omitted,\n * they default to their small base size.\n *\n * Windows that are omitted will start closed. Enabling \"closed\" for a window\n * that supports it, will cause it to start closed.\n */\nexport type WindowLayout = {\n main?: {\n position: WindowPosition;\n shadeMode?: boolean;\n closed?: boolean;\n };\n equalizer?: {\n position: WindowPosition;\n shadeMode?: boolean;\n closed?: boolean;\n };\n playlist?: {\n position: WindowPosition;\n shadeMode?: boolean;\n size?: WindowSize | null;\n closed?: boolean;\n };\n milkdrop?: {\n position: WindowPosition;\n size?: WindowSize | null;\n closed?: boolean;\n };\n};\n\n/**\n * Offset from the top left corner of an imaginary box.\n */\nexport type WindowPosition = { top: number; left: number };\n\n/**\n * Resizable windows in Winamp have a base size and can be expanded in\n * increments based on the size of the skin sprite.\n *\n * To specify a window being larger than its base size, use `extraHeight` to\n * specify how many sprite increments to expand the window's height by, and\n * `extraWidth` to specify how many sprite increments to expand the window's\n * width by.\n */\nexport type WindowSize = {\n extraHeight: number;\n extraWidth: number;\n};\n\n/**\n * Many methods on the webamp instance deal with track.\n *\n * Either `url` or `blob` must be specified\n */\nexport type Track = URLTrack | BlobTrack;\n\nexport interface PlaylistTrack {\n id: number;\n artist?: string;\n title?: string;\n album?: string;\n url: string;\n defaultName: string | null;\n albumArtUrl?: string | null;\n mediaTagsRequestStatus: MediaTagRequestStatus;\n duration: number | null;\n kbps?: string;\n khz: string;\n channels?: number;\n}\n\nexport interface AppState {\n userInput: UserInputState;\n windows: WindowsState;\n display: DisplayState;\n settings: SettingsState;\n equalizer: EqualizerState;\n playlist: PlaylistState;\n media: MediaState;\n network: NetworkState;\n tracks: TracksState;\n milkdrop: MilkdropState;\n}\n\nexport type PartialState = any;\n\n/**\n * Type definition of the music-metadata-browser module.\n * Ref: https://github.com/Borewit/music-metadata-browser/blob/master/src/index.ts\n */\nexport interface IMusicMetadataBrowserApi {\n /**\n * Parse Web API File\n * @param {Blob} blob\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\n parseBlob(blob: Blob, options?: IOptions): Promise<IAudioMetadata>;\n\n /**\n * Parse fetched file, using the Web Fetch API\n * @param {string} audioTrackUrl URL to download the audio track from\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\n fetchFromUrl(\n audioTrackUrl: string,\n options?: IOptions\n ): Promise<IAudioMetadata>;\n\n /**\n * Parse audio from Node Buffer\n * @param {Stream.Readable} stream Audio input stream\n * @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\n parseBuffer(\n buf: Buffer,\n mimeType?: string,\n options?: IOptions\n ): Promise<IAudioMetadata>;\n}\n\nexport interface Extras {\n requireJSZip(): Promise<any>;\n requireMusicMetadata(): Promise<IMusicMetadataBrowserApi>;\n convertPreset: ((file: File) => Promise<Object>) | null;\n handleTrackDropEvent?: (\n e: React.DragEvent<HTMLDivElement>\n ) => Track[] | null | Promise<Track[] | null>;\n handleAddUrlEvent?: () => Track[] | null | Promise<Track[] | null>;\n handleLoadListEvent?: () => Track[] | null | Promise<Track[] | null>;\n handleSaveListEvent?: (tracks: Track[]) => null | Promise<null>;\n}\n\nexport type GetState = () => AppState;\n\nexport type Thunk = ThunkAction<void, AppState, Extras, Action>;\n\nexport type Dispatch = ThunkDispatch<AppState, Extras, Action>;\n\nexport type Reducer = (state: AppState, action: Action) => AppState;\n\nexport type Middleware = (\n store: MiddlewareStore\n) => (next: Dispatch) => (action: Action) => any;\n\nexport interface Store extends ReduxStore {\n subscribe(cb: () => void): () => void;\n dispatch: Dispatch;\n getState: GetState;\n}\n\nexport interface MiddlewareStore {\n dispatch: Dispatch;\n getState: GetState;\n}\n","import { Action, StatePreset, TransitionType, MilkdropMessage } from \"../types\";\nimport {\n SET_MILKDROP_DESKTOP,\n SET_MILKDROP_FULLSCREEN,\n GOT_BUTTERCHURN_PRESETS,\n GOT_BUTTERCHURN,\n RESOLVE_PRESET_AT_INDEX,\n SELECT_PRESET_AT_INDEX,\n TOGGLE_PRESET_OVERLAY,\n PRESET_REQUESTED,\n TOGGLE_RANDOMIZE_PRESETS,\n TOGGLE_PRESET_CYCLING,\n SCHEDULE_MILKDROP_MESSAGE,\n} from \"../actionTypes\";\nimport * as Utils from \"../utils\";\n\nexport interface MilkdropState {\n display: \"WINDOW\" | \"DESKTOP\" | \"FULLSCREEN\";\n overlay: boolean;\n presetHistory: number[];\n presets: StatePreset[];\n currentPresetIndex: number | null;\n butterchurn: any;\n transitionType: TransitionType;\n randomize: boolean;\n cycling: boolean;\n // TODO: This could probably be simplified to just a date and we could assume\n // the song title is the message.\n message: MilkdropMessage | null;\n}\n\nconst defaultMilkdropState: MilkdropState = {\n display: \"WINDOW\",\n overlay: false,\n presetHistory: [],\n presets: [],\n currentPresetIndex: null,\n butterchurn: null,\n transitionType: TransitionType.DEFAULT,\n randomize: true,\n cycling: true,\n message: null,\n};\n\nexport const milkdrop = (\n state: MilkdropState = defaultMilkdropState,\n action: Action\n): MilkdropState => {\n switch (action.type) {\n case SET_MILKDROP_DESKTOP:\n return { ...state, display: action.enabled ? \"DESKTOP\" : \"WINDOW\" };\n case SET_MILKDROP_FULLSCREEN:\n return { ...state, display: action.enabled ? \"FULLSCREEN\" : \"WINDOW\" };\n case GOT_BUTTERCHURN:\n return { ...state, butterchurn: action.butterchurn };\n case GOT_BUTTERCHURN_PRESETS:\n return {\n ...state,\n presets: state.presets.concat(action.presets),\n };\n case PRESET_REQUESTED:\n if (action.addToHistory) {\n return {\n ...state,\n presetHistory: [...state.presetHistory, action.index],\n };\n }\n return {\n ...state,\n presetHistory: state.presetHistory.slice(0, -1),\n };\n case RESOLVE_PRESET_AT_INDEX:\n const preset = state.presets[action.index];\n return {\n ...state,\n presets: Utils.replaceAtIndex(state.presets, action.index, {\n type: \"RESOLVED\",\n name: preset.name,\n preset: action.json,\n }),\n };\n case SELECT_PRESET_AT_INDEX:\n return {\n ...state,\n currentPresetIndex: action.index,\n transitionType: action.transitionType,\n };\n case TOGGLE_PRESET_OVERLAY:\n return { ...state, overlay: !state.overlay };\n case TOGGLE_RANDOMIZE_PRESETS:\n return { ...state, randomize: !state.randomize };\n case TOGGLE_PRESET_CYCLING:\n return { ...state, cycling: !state.cycling };\n case SCHEDULE_MILKDROP_MESSAGE:\n return {\n ...state,\n message: {\n text: action.message,\n time: Date.now(),\n },\n };\n default:\n return state;\n }\n};\n\nexport default milkdrop;\n","import { AppState, Action } from \"../types\";\nimport { Reducer, combineReducers } from \"redux\";\n\nimport playlist from \"./playlist\";\nimport windows from \"./windows\";\nimport media from \"./media\";\nimport display from \"./display\";\nimport userInput from \"./userInput\";\nimport equalizer from \"./equalizer\";\nimport network from \"./network\";\nimport settings from \"./settings\";\nimport tracks from \"./tracks\";\nimport milkdrop from \"./milkdrop\";\n\nconst reducer: Reducer<AppState, Action, never> = combineReducers({\n userInput,\n windows,\n display,\n settings,\n equalizer,\n playlist,\n media,\n network,\n tracks,\n milkdrop,\n});\n\nexport default reducer;\n","import { createRoot } from \"react-dom/client\";\n\ninterface Props {\n averageTrackLength: string;\n numberOfTracks: number;\n playlistLengthSeconds: number;\n playlistLengthMinutes: number;\n tracks: string[];\n}\n\nexport const getAsDataURI = (text: string): string =>\n `data:text/html;base64,${window.btoa(text)}`;\n\n// Replaces deprecated \"noshade\" attribute\nconst noshadeStyle = {\n height: \"2px\",\n borderWidth: 0,\n color: \"gray\",\n backgroundColor: \"gray\",\n};\n\n// We use all kinds of non-standard attributes and tags. So we create these fake\n// components to trick Typescript.\nconst Body = (props: any) => {\n // @ts-ignore\n return <body {...props} />;\n};\n\nconst Font = (props: any) => {\n // @ts-ignore\n return <font {...props} />;\n};\n\nconst Hr = (props: any) => {\n // @ts-ignore\n return <hr {...props} />;\n};\n\nconst Div = (props: any) => {\n // @ts-ignore\n return <div {...props} />;\n};\n\nconst Table = (props: any) => {\n // @ts-ignore\n return <table {...props} />;\n};\n\n// TODO: Move <html> tag out to the string creation step in order\n// to avoid the warning.\nconst Playlist = (props: Props) => (\n <html>\n <head>\n <link rel=\"stylesheet\" href=\"null\" />\n <style type=\"text/css\">\n {`\n body { background: #000040; }\n .para1 { margin-top: -42px; margin-left: 145px; margin-right: 10px; font-family: \"font2, Arial\"; font-size: 30px; line-height: 35px; text-align: left; color: #E1E1E1; }\n .para2 { margin-top: 15px; margin-left: 15px; margin-right: 50px; font-family: \"font1, Arial Black\"; font-size: 50px; line-height: 40px; text-align: left; color: #004080; }\n `}\n </style>\n <title>Winamp Generated PlayList</title>\n </head>\n <Body bgcolor=\"#000080\" topmargin=\"0\" leftmargin=\"0\" text=\"#FFFFFF\">\n <Div align=\"center\">\n <Div className=\"para2\" align=\"center\">\n <p>WINAMP</p>\n </Div>\n <Div className=\"para1\" align=\"center\">\n <p>playlist</p>\n </Div>\n </Div>\n <Hr\n align=\"left\"\n width=\"90%\"\n size=\"1\"\n color=\"#FFBF00\"\n style={noshadeStyle}\n />\n <Div align=\"right\">\n <Table border=\"0\" cellSpacing=\"0\" cellPadding=\"0\" width=\"98%\">\n {/* Added <tbody> tag */}\n <tbody>\n <tr>\n <td>\n <small>\n <small>\n <Font face=\"Arial\" color=\"#FFBF00\">\n {props.numberOfTracks}\n </Font>\n <Font color=\"#409FFF\" face=\"Arial\">\n {\" track in playlist, average track length: \"}\n </Font>\n <Font face=\"Arial\" color=\"#FFBF00\">\n {props.averageTrackLength}\n </Font>\n </small>\n </small>\n <br />\n <small>\n <small>\n <Font color=\"#409FFF\" face=\"Arial\">\n {\"Playlist length: \"}\n </Font>\n <Font face=\"Arial\" color=\"#FFBF00\">\n {props.playlistLengthMinutes}\n </Font>\n <Font color=\"#409FFF\" face=\"Arial\">\n {\" minutes \"}\n </Font>\n <Font face=\"Arial\" color=\"#FFBF00\">\n {props.playlistLengthSeconds}\n </Font>\n <Font color=\"#409FFF\" face=\"Arial\">\n {\" second \"}\n </Font>\n <br />\n <Font color=\"#409FFF\" face=\"Arial\">\n Right-click <a href=\"./\">here</a> to save this HTML file.\n </Font>\n </small>\n </small>\n </td>\n </tr>\n </tbody>\n </Table>\n </Div>\n <blockquote>\n <p>\n <Font color=\"#FFBF00\" face=\"Arial\">\n <big>Playlist files:</big>\n </Font>\n {/* Added closing tag here */}\n </p>\n <ul>\n <Font face=\"Arial\" color=\"#FFFFFF\">\n <small>\n {props.tracks.map((track) => (\n <span key={track}>\n {track}\n <br />\n </span>\n ))}\n {/* Added closing tag here */}\n </small>\n </Font>\n </ul>\n </blockquote>\n <Hr\n align=\"left\"\n width=\"90%\"\n size=\"1\"\n color=\"#FFBF00\"\n style={noshadeStyle}\n />\n </Body>\n </html>\n);\n\nconst createPlaylistHTML = (props: Props): string => {\n const node = document.createElement(\"div\");\n const root = createRoot(node);\n root.render(<Playlist {...props} />);\n return node.innerHTML;\n};\n\nexport const createPlaylistURL = (props: Props): string =>\n getAsDataURI(createPlaylistHTML(props));\n","import { Slider } from \"./types\";\n\nimport * as Utils from \"./utils\";\n\nexport const getBalanceText = (balance: number): string => {\n if (balance === 0) {\n return \"Balance: Center\";\n }\n const direction = balance > 0 ? \"Right\" : \"Left\";\n return `Balance: ${Math.abs(balance)}% ${direction}`;\n};\n\nexport const getVolumeText = (volume: number): string => `Volume: ${volume}%`;\n\nexport const getPositionText = (\n duration: number,\n seekToPercent: number\n): string => {\n const newElapsedStr = Utils.getTimeStr(\n (duration * seekToPercent) / 100,\n false\n );\n const durationStr = Utils.getTimeStr(duration, false);\n return `Seek to: ${newElapsedStr}/${durationStr} (${seekToPercent}%)`;\n};\n\nexport const getDoubleSizeModeText = (enabled: boolean): string =>\n `${enabled ? \"Disable\" : \"Enable\"} doublesize mode`;\n\nconst formatHz = (hz: number): string =>\n hz < 1000 ? `${hz}HZ` : `${hz / 1000}KHZ`;\n\n// Format a number as a string, ensuring it has a + or - sign\nconst ensureSign = (num: number): string =>\n num > 0 ? `+${num}` : num.toString();\n\n// Round to 1 and exactly 1 decimal point\nconst roundToTenths = (num: number): string =>\n (Math.round(num * 10) / 10).toFixed(1);\n\nexport const getEqText = (band: Slider, level: number): string => {\n const db = roundToTenths(((level - 50) / 50) * 12);\n const label = band === \"preamp\" ? \"Preamp\" : formatHz(band);\n return `EQ: ${label} ${ensureSign(Number(db))} DB`;\n};\n","import {\n AppState,\n PlaylistTrack,\n WebampWindow,\n WindowId,\n WindowInfo,\n LoadedURLTrack,\n WindowPositions,\n PlaylistStyle,\n TransitionType,\n MediaStatus,\n TimeMode,\n SkinImages,\n Cursors,\n SkinRegion,\n GenLetterWidths,\n MilkdropMessage,\n DummyVizData,\n} from \"./types\";\nimport { createSelector, defaultMemoize } from \"reselect\";\nimport * as Utils from \"./utils\";\nimport {\n BANDS,\n TRACK_HEIGHT,\n WINDOW_RESIZE_SEGMENT_WIDTH,\n WINDOW_RESIZE_SEGMENT_HEIGHT,\n WINDOW_WIDTH,\n MEDIA_STATUS,\n MEDIA_TAG_REQUEST_STATUS,\n WINDOWS,\n VISUALIZERS,\n} from \"./constants\";\nimport { createPlaylistURL } from \"./playlistHtml\";\nimport * as fromTracks from \"./reducers/tracks\";\nimport * as fromDisplay from \"./reducers/display\";\nimport * as fromEqualizer from \"./reducers/equalizer\";\nimport * as fromMedia from \"./reducers/media\";\nimport * as fromWindows from \"./reducers/windows\";\nimport * as MarqueeUtils from \"./marqueeUtils\";\nimport { generateGraph } from \"./resizeUtils\";\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\n\nexport const getSliders = (state: AppState) => state.equalizer.sliders;\n\nexport const getEqfData = createSelector(getSliders, (sliders) => {\n const preset: { [key: string]: number | string } = {\n name: \"Entry1\",\n preamp: Utils.denormalizeEqBand(sliders.preamp),\n };\n BANDS.forEach((band) => {\n preset[`hz${band}`] = Utils.denormalizeEqBand(sliders[band]);\n });\n const eqfData = {\n presets: [preset],\n type: \"Winamp EQ library file v1.1\",\n };\n return eqfData;\n});\n\nexport const getTracks = (state: AppState) => state.tracks;\nexport const getTrackUrl = (state: AppState) => {\n return (id: number): string | null => {\n return state.tracks[id]?.url;\n };\n};\nexport const getTrackOrder = (state: AppState) => state.playlist.trackOrder;\n\nexport const getTrackCount = createSelector(\n getTrackOrder,\n (trackOrder) => trackOrder.length\n);\n\nexport const getOrderedTracks = createSelector(\n getTracks,\n getTrackOrder,\n (tracks, trackOrder) => trackOrder.filter((id) => tracks[id])\n);\n\nexport const getUserTracks = createSelector(\n getTracks,\n getTrackOrder,\n (tracks, trackOrder) =>\n trackOrder.map((id) => {\n const track = tracks[id];\n\n return {\n url: track.url,\n metaData: {\n artist: track.artist || \"\",\n title: track.title || \"\",\n album: track.album,\n albumArtUrl: track.albumArtUrl || \"\",\n },\n };\n })\n);\n\nconst getOrderedTrackObjects = createSelector(\n getTracks,\n getOrderedTracks,\n (tracks, trackOrder): PlaylistTrack[] => trackOrder.map((id) => tracks[id])\n);\n\nexport const getSelectedTrackIds = (state: AppState): Set<number> => {\n return state.playlist.selectedTracks;\n};\n\nexport const getSelectedTrackObjects = createSelector(\n getOrderedTrackObjects,\n getSelectedTrackIds,\n (tracks, selectedIds) => tracks.filter((track) => selectedIds.has(track.id))\n);\n\n// If a duration is `null`, it counts as zero, which seems fine enough.\nconst runningTimeFromTracks = (tracks: PlaylistTrack[]) =>\n tracks.reduce((time, track) => time + Number(track.duration), 0);\n\nconst getTotalRunningTime = createSelector(\n getOrderedTrackObjects,\n runningTimeFromTracks\n);\n\nconst getSelectedRunningTime = createSelector(\n getSelectedTrackObjects,\n runningTimeFromTracks\n);\n\n// Note: We should append \"+\" to these values if some of the tracks are of unknown time.\nexport const getRunningTimeMessage = createSelector(\n getTotalRunningTime,\n getSelectedRunningTime,\n (totalRunningTime, selectedRunningTime) =>\n `${Utils.getTimeStr(selectedRunningTime)}/${Utils.getTimeStr(\n totalRunningTime\n )}`\n);\n\n// TODO: use slectors to get memoization\nexport const getCurrentTrackIndex = (state: AppState): number => {\n const { playlist } = state;\n if (playlist.currentTrack == null) {\n return -1;\n }\n return playlist.trackOrder.indexOf(playlist.currentTrack);\n};\n\nexport const getCurrentTrackNumber = createSelector(\n getCurrentTrackIndex,\n (currentTrackIndex) => currentTrackIndex + 1\n);\n\nexport const getCurrentTrackId = (state: AppState) =>\n state.playlist.currentTrack;\n\n// TODO: Sigh... Technically, we should detect if we are looping only repeat if we are.\n// I think this would require pre-computing the \"random\" order of a playlist.\nexport const getRandomTrackId = (state: AppState): number | null => {\n const {\n playlist: { trackOrder, currentTrack },\n } = state;\n if (trackOrder.length === 0) {\n return null;\n }\n let nextId;\n do {\n nextId = trackOrder[Math.floor(trackOrder.length * Math.random())];\n } while (nextId === currentTrack && trackOrder.length > 1);\n return nextId;\n};\n\nexport const getNextTrackId = (state: AppState, n = 1) => {\n const {\n playlist: { trackOrder },\n media: { repeat, shuffle },\n } = state;\n if (shuffle) {\n return getRandomTrackId(state);\n }\n const trackCount = getTrackCount(state);\n if (trackCount === 0) {\n return null;\n }\n\n const currentIndex = getCurrentTrackIndex(state);\n\n let nextIndex = currentIndex + n;\n if (repeat) {\n nextIndex = nextIndex % trackCount;\n if (nextIndex < 0) {\n // Handle wrapping around backwards\n nextIndex += trackCount;\n }\n return trackOrder[nextIndex];\n }\n\n if (currentIndex === trackCount - 1 && n > 0) {\n return null;\n } else if (currentIndex === 0 && n < 0) {\n return null;\n }\n\n nextIndex = Utils.clamp(nextIndex, 0, trackCount - 1);\n return trackOrder[nextIndex];\n};\n\nexport const getGenWindows = (\n state: AppState\n): { [name: string]: WebampWindow } => {\n return state.windows.genWindows;\n};\n\nexport const getWindowOpen = createSelector(getGenWindows, (genWindows) => {\n return (windowId: WindowId) => genWindows[windowId].open;\n});\n\nexport const getWindowHidden = createSelector(\n getMilkdropWindowEnabled,\n (milkdropWindowEnabled) => {\n return (windowId: WindowId) => {\n return windowId === WINDOWS.MILKDROP && !milkdropWindowEnabled;\n };\n }\n);\n\nexport const getWindowShade = createSelector(getGenWindows, (genWindows) => {\n return (windowId: WindowId) => genWindows[windowId].shade;\n});\n\nexport const getWindowSize = createSelector(getGenWindows, (genWindows) => {\n return (windowId: WindowId) => genWindows[windowId].size;\n});\n\nexport const getWindowPositions = createSelector(\n getGenWindows,\n (windows): WindowPositions => Utils.objectMap(windows, (w) => w.position)\n);\n\nconst BASE_WINDOW_HEIGHT = 58;\nexport const getNumberOfVisibleTracks = createSelector(\n getWindowSize,\n (getWindowSize_) => {\n const playlistSize = getWindowSize_(\"playlist\");\n return Math.floor(\n (BASE_WINDOW_HEIGHT + WINDOW_RESIZE_SEGMENT_HEIGHT * playlistSize[1]) /\n TRACK_HEIGHT\n );\n }\n);\n\nexport const getOverflowTrackCount = createSelector(\n getTrackCount,\n getNumberOfVisibleTracks,\n (trackCount, numberOfVisibleTracks) =>\n Math.max(0, trackCount - numberOfVisibleTracks)\n);\n\nconst _getPlaylistScrollPosition = (state: AppState) =>\n state.display.playlistScrollPosition;\n\nexport const getPlaylistScrollPosition = createSelector(\n getOverflowTrackCount,\n _getPlaylistScrollPosition,\n (overflowTrackCount, playlistScrollPosition) => {\n if (overflowTrackCount === 0) {\n return 0;\n }\n return Math.round(\n (Math.round((overflowTrackCount * playlistScrollPosition) / 100) /\n overflowTrackCount) *\n 100\n );\n }\n);\n\nexport const getScrollOffset = createSelector(\n _getPlaylistScrollPosition,\n getTrackCount,\n getNumberOfVisibleTracks,\n (playlistScrollPosition, trackCount, numberOfVisibleTracks) => {\n const overflow = Math.max(0, trackCount - numberOfVisibleTracks);\n return Utils.percentToIndex(playlistScrollPosition / 100, overflow + 1);\n }\n);\n\nexport const getVisibleTrackIds = createSelector(\n getScrollOffset,\n getTrackOrder,\n getNumberOfVisibleTracks,\n (offset, trackOrder, numberOfVisibleTracks) =>\n trackOrder.slice(offset, offset + numberOfVisibleTracks)\n);\n\nexport function getAllTracksAreVisible(state: AppState): boolean {\n return getVisibleTrackIds(state).length === state.playlist.trackOrder.length;\n}\n\nexport const getTrackIsVisibleFunction = createSelector(\n getVisibleTrackIds,\n (visibleTrackIds) => {\n return (id: number) => visibleTrackIds.includes(id);\n }\n);\n\nexport const getVisibleTracks = createSelector(\n getVisibleTrackIds,\n getTracks,\n (visibleTrackIds, tracks) => visibleTrackIds.map((id) => tracks[id])\n);\n\nexport const getPlaylist = (state: AppState) => state.playlist;\n\nexport const getDuration = (state: AppState): number | null => {\n const { playlist, tracks } = state;\n if (playlist.currentTrack == null) {\n return null;\n }\n const currentTrack = tracks[playlist.currentTrack];\n return currentTrack && currentTrack.duration;\n};\n\nexport const getTrackDisplayName = createSelector(getTracks, (tracks) => {\n return defaultMemoize((trackId: number | null) =>\n fromTracks.getTrackDisplayName(tracks, trackId)\n );\n});\n\nexport const getCurrentTrackDisplayName = createSelector(\n getCurrentTrackId,\n getTrackDisplayName,\n (id, getName) => {\n return getName(id);\n }\n);\n\nexport const getMediaStatus = (state: AppState): MediaStatus => {\n return state.media.status;\n};\n\nexport const getMediaIsPlaying = (state: AppState) =>\n state.media.status === MEDIA_STATUS.PLAYING;\n\nexport const getCurrentTrack = createSelector(\n getCurrentTrackId,\n getTracks,\n (trackId, tracks): PlaylistTrack | null => {\n return trackId == null ? null : tracks[trackId];\n }\n);\nexport const getCurrentlyPlayingTrackIdIfLoaded = createSelector(\n getMediaIsPlaying,\n getCurrentTrack,\n (mediaIsPlaying, currentTrack) => {\n if (\n !mediaIsPlaying ||\n !currentTrack ||\n currentTrack.mediaTagsRequestStatus ===\n MEDIA_TAG_REQUEST_STATUS.INITIALIZED\n ) {\n return null;\n }\n return currentTrack.id;\n }\n);\n\nexport const getCurrentTrackInfo = createSelector(\n getCurrentTrack,\n (track: PlaylistTrack | null): LoadedURLTrack | null => {\n if (track == null) {\n return null;\n }\n return {\n url: track.url,\n metaData: {\n title: track.title || null,\n artist: track.artist || null,\n album: track.album || null,\n albumArtUrl: track.albumArtUrl || null,\n },\n };\n }\n);\n\nexport const getMinimalMediaText = createSelector(\n getCurrentTrackNumber,\n getCurrentTrackDisplayName,\n (trackNumber, name) => (name == null ? null : `${trackNumber}. ${name}`)\n);\n\nexport const getMediaText = createSelector(\n getMinimalMediaText,\n getDuration,\n (minimalMediaText, duration) =>\n minimalMediaText == null\n ? null\n : `${minimalMediaText} (${Utils.getTimeStr(duration)})`\n);\n\nexport const getNumberOfTracks = (state: AppState) =>\n getTrackOrder(state).length;\nconst getPlaylistDuration = createSelector(getTracks, (tracks) =>\n Object.values(tracks).reduce(\n (total, track) => total + (track.duration || 0),\n 0\n )\n);\n\nexport const getPlaylistURL = createSelector(\n getNumberOfTracks,\n getPlaylistDuration,\n getTrackOrder,\n getTracks,\n getTrackDisplayName,\n (numberOfTracks, playlistDuration, trackOrder, tracks, getDisplayName) =>\n createPlaylistURL({\n numberOfTracks,\n averageTrackLength: Utils.getTimeStr(playlistDuration / numberOfTracks),\n // TODO: Handle hours\n playlistLengthMinutes: Math.floor(playlistDuration / 60),\n playlistLengthSeconds: Math.floor(playlistDuration % 60),\n tracks: trackOrder.map(\n (id, i) =>\n `${i + 1}. ${getDisplayName(id)} (${Utils.getTimeStr(\n tracks[id].duration\n )})`\n ),\n })\n);\n\nconst WINDOW_HEIGHT = 116;\nconst SHADE_WINDOW_HEIGHT = 14;\n\nfunction getWPixelSize(w: WebampWindow, doubled: boolean) {\n const [width, height] = w.size;\n const doubledMultiplier = doubled && w.canDouble ? 2 : 1;\n const pix = {\n height: WINDOW_HEIGHT + height * WINDOW_RESIZE_SEGMENT_HEIGHT,\n width: WINDOW_WIDTH + width * WINDOW_RESIZE_SEGMENT_WIDTH,\n };\n return {\n height: (w.shade ? SHADE_WINDOW_HEIGHT : pix.height) * doubledMultiplier,\n width: pix.width * doubledMultiplier,\n };\n}\n\nexport function getFocusedWindow(state: AppState): WindowId | null {\n return state.windows.focused;\n}\n\nexport function getWindowPosition(state: AppState) {\n return (windowId: WindowId) => state.windows.genWindows[windowId].position;\n}\n\nexport function getPositionsAreRelative(state: AppState) {\n return state.windows.positionsAreRelative;\n}\n\nexport function getDoubled(state: AppState) {\n return state.display.doubled;\n}\n\nexport function getLlamaMode(state: AppState) {\n return state.display.llama;\n}\n\nexport function getZIndex(state: AppState): number {\n return state.display.zIndex;\n}\n\n// TODO: This is poorly memoized. It invalidates when a window moves.\nexport const getWindowSizes = createSelector(\n getGenWindows,\n getDoubled,\n (windows, doubled) => {\n return Utils.objectMap(windows, (w) => getWPixelSize(w, doubled));\n }\n);\n\nexport const getWindowPixelSize = createSelector(getWindowSizes, (sizes) => {\n return (windowId: WindowId) => sizes[windowId];\n});\n\nconst getWindowOrder = (state: AppState): WindowId[] =>\n state.windows.windowOrder;\n\nexport const getNormalizedWindowOrder = createSelector(\n getWindowOrder,\n getGenWindows,\n (windowOrder, genWindows): WindowId[] => {\n return [\n WINDOWS.MAIN,\n ...windowOrder.filter(\n (windowId) => windowId !== WINDOWS.MAIN && genWindows[windowId] != null\n ),\n ];\n }\n);\n\n// TODO: Now that both size and position are stored on genWindows this seems a bit silly.\nexport const getWindowsInfo = createSelector(\n getWindowSizes,\n getWindowPositions,\n getNormalizedWindowOrder,\n (sizes, positions, windowOrder): WindowInfo[] => {\n return windowOrder.map((key) => ({\n key,\n ...sizes[key],\n ...positions[key],\n }));\n }\n);\n\nexport const getWindowGraph = createSelector(getWindowsInfo, generateGraph);\n\nconst defaultPlaylistStyle = {\n normal: \"#00FF00\",\n current: \"#FFFFFF\",\n normalbg: \"#000000\",\n selectedbg: \"#0000C6\",\n font: \"Arial\",\n};\n\nexport function getSkinColors(state: AppState): string[] {\n return state.display.skinColors;\n}\n\nexport const getSkinPlaylistStyle = (state: AppState): PlaylistStyle => {\n return state.display.skinPlaylistStyle || defaultPlaylistStyle;\n};\n\nexport const getVisualizerStyle = (state: AppState): string => {\n const milkdrop = state.windows.genWindows[WINDOWS.MILKDROP];\n if (milkdrop != null && milkdrop.open) {\n return VISUALIZERS.MILKDROP;\n }\n return fromDisplay.getVisualizerStyle(state.display);\n};\n\nexport const getVolume = (state: AppState) => state.media.volume;\nexport const getBalance = (state: AppState) => state.media.balance;\nexport const getShuffle = (state: AppState) => state.media.shuffle;\nexport const getRepeat = (state: AppState) => state.media.repeat;\n\nexport const getChannels = createSelector(\n getCurrentTrack,\n (track: PlaylistTrack | null): number | null => {\n return track != null ? track.channels || null : null;\n }\n);\n\nexport const getTimeElapsed = (state: AppState): number => {\n return state.media.timeElapsed;\n};\n\nexport function getSerlializedState(state: AppState): SerializedStateV1 {\n return {\n version: 1,\n media: fromMedia.getSerializedState(state.media),\n equalizer: fromEqualizer.getSerializedState(state.equalizer),\n display: fromDisplay.getSerializedState(state.display),\n windows: fromWindows.getSerializedState(state.windows),\n };\n}\n\nexport function getEqualizerEnabled(state: AppState): boolean {\n return state.equalizer.on;\n}\n\nexport function getEqualizerAuto(state: AppState): boolean {\n return state.equalizer.auto;\n}\n\nexport function getBrowserWindowSize(state: AppState): {\n height: number;\n width: number;\n} {\n return state.windows.browserWindowSize;\n}\n\nexport const getOpenWindows = createSelector(getGenWindows, (genWindows) =>\n Utils.objectFilter(genWindows, (w) => w.open)\n);\n\nexport const getStackedLayoutPositions = createSelector(\n getOpenWindows,\n getDoubled,\n (openWindows, doubled): WindowPositions => {\n let offset = 0;\n return Utils.objectMap(openWindows, (w) => {\n const position = { x: 0, y: offset };\n offset += getWPixelSize(w, doubled).height;\n return position;\n });\n }\n);\n\nexport const getUserInputFocus = (state: AppState): string | null => {\n return state.userInput.focus;\n};\n\nexport const getUserInputScrubPosition = (state: AppState): number => {\n return state.userInput.scrubPosition;\n};\n// TODO: Make this a reselect selector\nexport const getMarqueeText = (state: AppState): string => {\n const defaultText = \"Winamp 2.91\";\n if (state.userInput.userMessage != null) {\n return state.userInput.userMessage;\n }\n switch (getUserInputFocus(state)) {\n case \"balance\":\n return MarqueeUtils.getBalanceText(state.media.balance);\n case \"volume\":\n return MarqueeUtils.getVolumeText(state.media.volume);\n case \"position\":\n const duration = getDuration(state);\n if (duration == null) {\n // This probably can't ever happen.\n return defaultText;\n }\n return MarqueeUtils.getPositionText(\n duration,\n getUserInputScrubPosition(state)\n );\n case \"double\":\n return MarqueeUtils.getDoubleSizeModeText(state.display.doubled);\n case \"eq\":\n const band = state.userInput.bandFocused;\n if (band == null) {\n // This probably can't ever happen.\n return defaultText;\n }\n return MarqueeUtils.getEqText(band, state.equalizer.sliders[band]);\n default:\n break;\n }\n if (state.playlist.currentTrack != null) {\n const mediaText = getMediaText(state);\n if (mediaText == null) {\n // This probably can't ever happen.\n return defaultText;\n }\n return mediaText;\n }\n return defaultText;\n};\n\nexport const getKbps = createSelector(\n getCurrentTrack,\n (track: PlaylistTrack | null): string | null => {\n return track != null ? track.kbps || null : null;\n }\n);\n\nexport const getKhz = createSelector(\n getCurrentTrack,\n (track: PlaylistTrack | null): string | null => {\n return track != null ? track.khz || null : null;\n }\n);\n\nexport function getMilkdropMessage(state: AppState): MilkdropMessage | null {\n return state.milkdrop.message;\n}\n\nexport function getMilkdropWindowEnabled(state: AppState): boolean {\n return state.milkdrop.display === \"WINDOW\";\n}\n\nexport function getMilkdropDesktopEnabled(state: AppState): boolean {\n return state.milkdrop.display === \"DESKTOP\";\n}\n\nexport function getMilkdropFullscreenEnabled(state: AppState): boolean {\n return state.milkdrop.display === \"FULLSCREEN\";\n}\n\nexport function getPresets(state: AppState): any {\n return state.milkdrop.presets;\n}\n\nexport function getButterchurn(state: AppState): any {\n return state.milkdrop.butterchurn;\n}\n\nexport function getPresetTransitionType(state: AppState): TransitionType {\n return state.milkdrop.transitionType;\n}\n\nexport function getCurrentPresetIndex(state: AppState): number | null {\n return state.milkdrop.currentPresetIndex;\n}\nexport function getCurrentPreset(state: AppState): any | null {\n const index = getCurrentPresetIndex(state);\n if (index == null) {\n return null;\n }\n const preset = state.milkdrop.presets[index];\n if (preset == null || preset.type === \"UNRESOLVED\") {\n return null;\n }\n return preset.preset;\n}\n\nexport function getPresetNames(state: AppState): string[] {\n return state.milkdrop.presets.map((preset) => preset.name);\n}\n\nexport function getPresetOverlayOpen(state: AppState): boolean {\n return state.milkdrop.overlay;\n}\n\nexport function getPresetsAreCycling(state: AppState): boolean {\n return state.milkdrop.cycling;\n}\n\nexport function getRandomizePresets(state: AppState): boolean {\n return state.milkdrop.randomize;\n}\n\nexport function getClosed(state: AppState): boolean {\n return state.display.closed;\n}\n\nexport function getSkinImages(state: AppState): SkinImages {\n return state.display.skinImages;\n}\n\nexport function getSkinCursors(state: AppState): Cursors | null {\n return state.display.skinCursors;\n}\n\nexport function getSkinRegion(state: AppState): SkinRegion {\n return state.display.skinRegion;\n}\n\nexport function getSkinLetterWidths(state: AppState): GenLetterWidths | null {\n return state.display.skinGenLetterWidths;\n}\n\nexport function getPreampLineUrl(state: AppState): string | null {\n return state.display.skinImages.EQ_PREAMP_LINE;\n}\n\nexport function getLineColorsUrl(state: AppState): string | null {\n return state.display.skinImages.EQ_GRAPH_LINE_COLORS;\n}\n\nexport const getPreampLineImage = createSelector(\n getPreampLineUrl,\n async (url): Promise<HTMLImageElement | null> => {\n if (url == null) {\n return null;\n }\n return Utils.imgFromUrl(url);\n }\n);\n\nexport const getLineColorsImage = createSelector(\n getLineColorsUrl,\n async (url): Promise<HTMLImageElement | null> => {\n if (url == null) {\n return null;\n }\n return Utils.imgFromUrl(url);\n }\n);\n\nexport function getDummyVizData(state: AppState): DummyVizData | null {\n return state.display.dummyVizData;\n}\n\nexport function getMarqueeStep(state: AppState): number {\n return state.display.marqueeStep;\n}\n\nexport function getNetworkConnected(state: AppState): boolean {\n return state.network.connected;\n}\n\nexport function getTimeMode(state: AppState): TimeMode {\n return state.media.timeMode;\n}\n\nexport function getLoading(state: AppState): boolean {\n return state.display.loading;\n}\n\nexport function getWorking(state: AppState): boolean {\n return state.display.working;\n}\n\nexport function getAvaliableSkins(state: AppState) {\n return state.settings.availableSkins;\n}\n","import { WindowInfo, WindowId } from \"./types\";\n\ninterface NewGraph {\n [key: string]: {\n above: string[];\n left: string[];\n };\n}\n\ninterface PositionDiff {\n [key: string]: {\n x: number;\n y: number;\n };\n}\n\nexport interface SizeDiff {\n [key: string]: {\n width: number;\n height: number;\n };\n}\n\nexport function getPositionDiff(\n graph: Graph,\n sizeDiff: SizeDiff\n): PositionDiff {\n const newGraph: NewGraph = {};\n const positionDiff: PositionDiff = {};\n for (const key of Object.keys(graph)) {\n newGraph[key] = { above: [], left: [] };\n positionDiff[key] = { x: 0, y: 0 };\n }\n\n // Construct an inverted graph\n for (const [key, neighbors] of Object.entries(graph)) {\n const { below, right } = neighbors;\n if (right != null) {\n newGraph[right].left.push(key);\n }\n if (below != null) {\n newGraph[below].above.push(key);\n }\n }\n\n function walkRight(key: string) {\n const node = newGraph[key];\n const nodeSizeDiff = sizeDiff[key];\n node.left.forEach((left) => {\n positionDiff[left].x += nodeSizeDiff.width + positionDiff[key].x;\n walkRight(left);\n });\n }\n\n function walkDown(key: string) {\n const node = newGraph[key];\n const nodeSizeDiff = sizeDiff[key];\n node.above.forEach((above) => {\n positionDiff[above].y += nodeSizeDiff.height + positionDiff[key].y;\n walkDown(above);\n });\n }\n\n // Find disconnected nodes, and walk\n for (const [key, neighbors] of Object.entries(graph)) {\n if (neighbors.below == null) {\n walkDown(key);\n }\n if (neighbors.right == null) {\n walkRight(key);\n }\n }\n\n return positionDiff;\n}\n\ninterface Edges {\n below?: string;\n right?: string;\n}\n\nexport interface Graph {\n // TODO: Ensure this is a WindowId\n [id: string]: Edges;\n}\n\nexport function generateGraph(windows: WindowInfo[]): Graph {\n const bottoms: { [offset: number]: WindowInfo[] } = {};\n const rights: { [offset: number]: WindowInfo[] } = {};\n for (const w of windows) {\n const bottom = w.y + w.height;\n if (bottoms[bottom]) {\n bottoms[bottom].push(w);\n } else {\n bottoms[bottom] = [w];\n }\n\n const right = w.x + w.width;\n if (rights[right]) {\n rights[right].push(w);\n } else {\n rights[right] = [w];\n }\n }\n\n const graph: Graph = {};\n for (const w of windows) {\n const edges: Edges = {};\n const top = w.y;\n const left = w.x;\n\n const tops = bottoms[top];\n const lefts = rights[left];\n if (tops) {\n for (const below of tops) {\n const isToTheLeft = below.x + below.width < w.x;\n const isToTheRight = below.x > w.x + w.width;\n\n const overlapsInX = !(isToTheLeft || isToTheRight);\n if (overlapsInX) {\n edges.below = below.key;\n break;\n }\n }\n }\n if (lefts) {\n for (const right of lefts) {\n const isAbove = right.y + right.height < w.y;\n const isBelow = right.y > w.y + w.height;\n const overlapsInY = !(isAbove || isBelow);\n if (overlapsInY) {\n edges.right = right.key;\n break;\n }\n }\n }\n\n graph[w.key] = edges;\n }\n return graph;\n}\n","import { Box, Point, Diff, BoundingBox } from \"./types\";\n\nexport const SNAP_DISTANCE = 15;\n\nexport const top = (box: Box) => box.y;\nexport const bottom = (box: Box) => box.y + box.height;\nexport const left = (box: Box) => box.x;\nexport const right = (box: Box) => box.x + box.width;\n\nexport const near = (a: number, b: number) => Math.abs(a - b) < SNAP_DISTANCE;\n\n// http://stackoverflow.com/a/3269471/1263117\nexport const overlapX = (a: Box, b: Box) =>\n left(a) <= right(b) + SNAP_DISTANCE && left(b) <= right(a) + SNAP_DISTANCE;\nexport const overlapY = (a: Box, b: Box) =>\n top(a) <= bottom(b) + SNAP_DISTANCE && top(b) <= bottom(a) + SNAP_DISTANCE;\n\n// Give a new position for `boxA` that snaps it to `boxB` if neede.\nexport const snap = (boxA: Box, boxB: Box) => {\n let x, y;\n\n // TODO: Refactor/simplify this code\n if (overlapY(boxA, boxB)) {\n if (near(left(boxA), right(boxB))) {\n x = right(boxB);\n } else if (near(right(boxA), left(boxB))) {\n x = left(boxB) - boxA.width;\n } else if (near(left(boxA), left(boxB))) {\n x = left(boxB);\n } else if (near(right(boxA), right(boxB))) {\n x = right(boxB) - boxA.width;\n }\n }\n\n if (overlapX(boxA, boxB)) {\n if (near(top(boxA), bottom(boxB))) {\n y = bottom(boxB);\n } else if (near(bottom(boxA), top(boxB))) {\n y = top(boxB) - boxA.height;\n } else if (near(top(boxA), top(boxB))) {\n y = top(boxB);\n } else if (near(bottom(boxA), bottom(boxB))) {\n y = bottom(boxB) - boxA.height;\n }\n }\n return { x, y };\n};\n\nexport const snapDiff = (a: Box, b: Box): Point => {\n const newPos = snap(a, b);\n return {\n x: newPos.x === undefined ? 0 : newPos.x - a.x,\n y: newPos.y === undefined ? 0 : newPos.y - a.y,\n };\n};\n\n// TODO: Use the first x and y combo\nexport const snapDiffManyToMany = (as: Box[], bs: Box[]): Point => {\n let x: number | undefined = 0;\n let y: number | undefined = 0;\n for (const a of as) {\n for (const b of bs) {\n const diff = snapDiff(a, b);\n x = x || diff.x;\n y = y || diff.y;\n if (x !== undefined && x > 0 && y !== undefined && y > 0) {\n break;\n }\n }\n }\n return { x, y };\n};\n\nexport const snapToMany = (boxA: Box, otherBoxes: Box[]): Diff => {\n let x: number | undefined;\n let y: number | undefined;\n\n otherBoxes.forEach((boxB) => {\n const newPos = snap(boxA, boxB);\n x = newPos.x || x;\n y = newPos.y || y;\n });\n\n return { x, y };\n};\n\nexport const snapWithin = (boxA: Box, boundingBox: BoundingBox): Diff => {\n let x, y;\n\n if (boxA.x - SNAP_DISTANCE < 0) {\n x = 0;\n } else if (boxA.x + boxA.width + SNAP_DISTANCE > boundingBox.width) {\n x = boundingBox.width - boxA.width;\n }\n\n if (boxA.y - SNAP_DISTANCE < 0) {\n y = 0;\n } else if (boxA.y + boxA.height + SNAP_DISTANCE > boundingBox.height) {\n y = boundingBox.height - boxA.height;\n }\n\n return { x, y };\n};\n\nexport const snapWithinDiff = (a: Box, b: BoundingBox) => {\n const newPos = snapWithin(a, b);\n return {\n x: newPos.x === undefined ? 0 : newPos.x - a.x,\n y: newPos.y === undefined ? 0 : newPos.y - a.y,\n };\n};\n\nexport const applySnap = (original: Point, ...snaps: Diff[]) =>\n snaps.reduce(\n (previous, snapped) => ({\n ...previous,\n x: typeof snapped.x !== \"undefined\" ? snapped.x : previous.x,\n y: typeof snapped.y !== \"undefined\" ? snapped.y : previous.y,\n }),\n original\n );\n\nexport const boundingBox = (nodes: Box[]): Box => {\n const boxes = nodes.slice();\n const firstNode = boxes.pop();\n if (firstNode == null) {\n throw new Error(\"boundingBox must be called with at least one node\");\n }\n const bounding = {\n top: top(firstNode),\n right: right(firstNode),\n bottom: bottom(firstNode),\n left: left(firstNode),\n };\n\n boxes.forEach((node) => {\n bounding.top = Math.min(bounding.top, top(node));\n bounding.right = Math.max(bounding.right, right(node));\n bounding.bottom = Math.max(bounding.bottom, bottom(node));\n bounding.left = Math.min(bounding.left, left(node));\n });\n\n return {\n x: bounding.left,\n y: bounding.top,\n width: bounding.right - bounding.left,\n height: bounding.bottom - bounding.top,\n };\n};\n\nexport function traceConnection<B extends Box>(\n areConnected: (candidate: Box, n: Box) => boolean\n) {\n return (candidates: B[], node: B): Set<B> => {\n const connected = new Set<B>();\n const checkNode = (n: B) => {\n for (const candidate of candidates) {\n if (!connected.has(candidate) && areConnected(candidate, n)) {\n connected.add(candidate);\n checkNode(candidate);\n }\n }\n };\n checkNode(node);\n return connected;\n };\n}\n\nexport const applyDiff = (a: Point, b: Point) => ({\n x: a.x + b.x,\n y: a.y + b.y,\n});\n\n// TODO: This should not\nexport const applyMultipleDiffs = (initial: Point, ...diffs: Point[]) => {\n const metaDiff = diffs.reduce((m, diff) => ({\n // Use the smallest non-zero diff for each axis.\n // TODO: Min should be the absolute value\n x: m.x === 0 || diff.x === 0 ? m.x + diff.x : Math.min(m.x, diff.x),\n y: m.y === 0 || diff.y === 0 ? m.y + diff.y : Math.min(m.y, diff.y),\n }));\n return applyDiff(initial, metaDiff);\n};\n","import * as Selectors from \"../selectors\";\n\nimport * as Utils from \"../utils\";\nimport {\n UPDATE_WINDOW_POSITIONS,\n TOGGLE_DOUBLESIZE_MODE,\n WINDOW_SIZE_CHANGED,\n TOGGLE_WINDOW,\n CLOSE_WINDOW,\n TOGGLE_WINDOW_SHADE_MODE,\n BROWSER_WINDOW_SIZE_CHANGED,\n RESET_WINDOW_SIZES,\n TOGGLE_LLAMA_MODE,\n SET_FOCUSED_WINDOW,\n} from \"../actionTypes\";\n\nimport { getPositionDiff, SizeDiff } from \"../resizeUtils\";\nimport { applyDiff } from \"../snapUtils\";\nimport {\n Action,\n Thunk,\n WindowId,\n WindowPositions,\n Dispatch,\n WindowLayout,\n} from \"../types\";\n\n// Dispatch an action and, if needed rearrange the windows to preserve\n// the existing edge relationship.\n//\n// Works by checking the edges before the action is dispatched. Then,\n// after dispatching, calculating what position change would be required\n// to restore those relationships.\nfunction withWindowGraphIntegrity(action: Action): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const graph = Selectors.getWindowGraph(state);\n const originalSizes = Selectors.getWindowSizes(state);\n\n dispatch(action);\n\n const newSizes = Selectors.getWindowSizes(getState());\n const sizeDiff: SizeDiff = {};\n for (const window of Object.keys(newSizes)) {\n const original = originalSizes[window];\n const current = newSizes[window];\n sizeDiff[window] = {\n height: current.height - original.height,\n width: current.width - original.width,\n };\n }\n\n const positionDiff = getPositionDiff(graph, sizeDiff);\n const windowPositions = Selectors.getWindowPositions(state);\n\n const newPositions = Utils.objectMap(windowPositions, (position, key) =>\n applyDiff(position, positionDiff[key])\n );\n\n dispatch(updateWindowPositions(newPositions));\n };\n}\n\nexport function toggleDoubleSizeMode(): Thunk {\n return withWindowGraphIntegrity({ type: TOGGLE_DOUBLESIZE_MODE });\n}\n\nexport function toggleLlamaMode(): Action {\n return { type: TOGGLE_LLAMA_MODE };\n}\n\nexport function toggleEqualizerShadeMode(): Thunk {\n return withWindowGraphIntegrity({\n type: TOGGLE_WINDOW_SHADE_MODE,\n windowId: \"equalizer\",\n });\n}\n\nexport function toggleMainWindowShadeMode(): Thunk {\n return withWindowGraphIntegrity({\n type: TOGGLE_WINDOW_SHADE_MODE,\n windowId: \"main\",\n });\n}\n\nexport function togglePlaylistShadeMode(): Thunk {\n return withWindowGraphIntegrity({\n type: TOGGLE_WINDOW_SHADE_MODE,\n windowId: \"playlist\",\n });\n}\n\nexport function closeWindow(windowId: WindowId): Action {\n return { type: CLOSE_WINDOW, windowId };\n}\n\nexport function setFocusedWindow(window: WindowId | null): Action {\n return { type: SET_FOCUSED_WINDOW, window };\n}\n\nexport function setWindowSize(\n windowId: WindowId,\n size: [number, number]\n): Action {\n return { type: WINDOW_SIZE_CHANGED, windowId, size };\n}\n\nexport function toggleWindow(windowId: WindowId): Action {\n return { type: TOGGLE_WINDOW, windowId };\n}\n\nexport function updateWindowPositions(\n positions: WindowPositions,\n absolute?: boolean\n): Action {\n return { type: UPDATE_WINDOW_POSITIONS, positions, absolute };\n}\n\nexport function centerWindowsInContainer(container: HTMLElement): Thunk {\n return (dispatch, getState) => {\n if (!Selectors.getPositionsAreRelative(getState())) {\n return;\n }\n const { left, top } = container.getBoundingClientRect();\n const { scrollWidth: width, scrollHeight: height } = container;\n dispatch(centerWindows({ left, top, width, height }));\n };\n}\n\nexport function centerWindowsInView(): Thunk {\n return centerWindows({\n left: window.scrollX,\n top: window.scrollY,\n width: window.innerWidth,\n height: window.innerHeight,\n });\n}\n\nexport function centerWindows(box: {\n left: number;\n top: number;\n width: number;\n height: number;\n}): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const windowsInfo = Selectors.getWindowsInfo(state);\n const getOpen = Selectors.getWindowOpen(state);\n const { top, left, width, height } = box;\n\n const offsetLeft = left + window.scrollX;\n const offsetTop = top + window.scrollY;\n\n // A layout has been supplied. We will compute the bounding box and\n // center the given layout.\n const bounding = Utils.calculateBoundingBox(\n windowsInfo.filter((w) => getOpen(w.key))\n );\n\n if (bounding == null) {\n // There are no windows to center\n return;\n }\n\n const boxHeight = bounding.bottom - bounding.top;\n const boxWidth = bounding.right - bounding.left;\n\n const move = {\n x: Math.ceil(offsetLeft - bounding.left + (width - boxWidth) / 2),\n y: Math.ceil(offsetTop - bounding.top + (height - boxHeight) / 2),\n };\n\n const newPositions = windowsInfo.reduce(\n (pos, w) => ({\n ...pos,\n [w.key]: { x: move.x + w.x, y: move.y + w.y },\n }),\n {}\n );\n\n dispatch(updateWindowPositions(newPositions, true));\n };\n}\n\nexport function browserWindowSizeChanged(size: {\n height: number;\n width: number;\n}): Thunk {\n return (dispatch: Dispatch) => {\n dispatch({ type: BROWSER_WINDOW_SIZE_CHANGED, ...size });\n dispatch(ensureWindowsAreOnScreen());\n };\n}\n\nexport function resetWindowSizes(): Action {\n return { type: RESET_WINDOW_SIZES };\n}\n\nexport function stackWindows(): Thunk {\n return (dispatch, getState) => {\n dispatch(\n updateWindowPositions(Selectors.getStackedLayoutPositions(getState()))\n );\n };\n}\n\nexport function setWindowLayout(layout?: WindowLayout): Thunk {\n return (dispatch) => {\n if (layout == null) {\n dispatch(stackWindows());\n return;\n }\n for (const id of [\"playlist\", \"milkdrop\"] as const) {\n const w = layout[id];\n if (w != null && w.size != null) {\n const { extraHeight: plusHeight, extraWidth: plusWidth } = w.size;\n dispatch(setWindowSize(id, [plusWidth, plusHeight]));\n }\n }\n for (const id of [\"main\", \"playlist\", \"equalizer\", \"milkdrop\"] as const) {\n const w = layout[id];\n if (w == null || w.closed) {\n dispatch(closeWindow(id));\n }\n }\n for (const id of [\"main\", \"playlist\", \"equalizer\"] as const) {\n if (layout[id]?.shadeMode) {\n dispatch({\n type: TOGGLE_WINDOW_SHADE_MODE,\n windowId: id,\n });\n }\n }\n dispatch(\n updateWindowPositions(\n Utils.objectMap(layout, (w) => {\n // For some reason TypeScript cli thinks this\n // is nullable, but in VSCode it does not...\n if (w == null) throw new Error(\"w is null\");\n return {\n x: w.position.left,\n y: w.position.top,\n };\n }),\n false\n )\n );\n };\n}\n\nexport function ensureWindowsAreOnScreen(): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n\n const windowsInfo = Selectors.getWindowsInfo(state);\n const getOpen = Selectors.getWindowOpen(state);\n const { height, width } = Utils.getWindowSize();\n const bounding = Utils.calculateBoundingBox(\n windowsInfo.filter((w) => getOpen(w.key))\n );\n if (bounding == null) {\n // There are no windows visible, so there's no work to do.\n return;\n }\n const positions = Selectors.getWindowPositions(state);\n\n // Are we good?\n if (\n bounding.left >= 0 &&\n bounding.top >= 0 &&\n bounding.right <= width &&\n bounding.bottom <= height\n ) {\n // My work here is done.\n return;\n }\n\n const boundingHeight = bounding.bottom - bounding.top;\n const boundingWidth = bounding.right - bounding.left;\n\n // Could we simply shift all the windows by a constant offset?\n if (boundingWidth <= width && boundingHeight <= height) {\n let moveY = 0;\n let moveX = 0;\n if (bounding.top <= 0) {\n moveY = bounding.top;\n } else if (bounding.bottom > height) {\n moveY = bounding.bottom - height;\n }\n\n if (bounding.left <= 0) {\n moveX = bounding.left;\n } else if (bounding.right > width) {\n moveX = bounding.right - width;\n }\n\n const newPositions = Utils.objectMap(positions, (position) => ({\n x: position.x - moveX,\n y: position.y - moveY,\n }));\n\n dispatch(updateWindowPositions(newPositions));\n return;\n }\n\n // TODO: Try moving the individual groups to try to fit them in\n\n // I give up. Just reset everything.\n dispatch(resetWindowSizes());\n dispatch(stackWindows());\n dispatch(centerWindowsInView());\n };\n}\n","import { clamp } from \"../utils\";\nimport {\n SEEK_TO_PERCENT_COMPLETE,\n SET_BALANCE,\n SET_VOLUME,\n STOP,\n TOGGLE_REPEAT,\n TOGGLE_SHUFFLE,\n PLAY,\n PAUSE,\n PLAY_TRACK,\n TOGGLE_TIME_MODE,\n BUFFER_TRACK,\n IS_STOPPED,\n} from \"../actionTypes\";\n\nimport { MEDIA_STATUS } from \"../constants\";\nimport { openMediaFileDialog } from \"./\";\nimport { GetState, Dispatch, Thunk, Action } from \"../types\";\nimport * as Selectors from \"../selectors\";\n\nexport function playTrack(id: number): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const isStopped = Selectors.getMediaStatus(state) === MEDIA_STATUS.STOPPED;\n if (isStopped) {\n dispatch({ type: BUFFER_TRACK, id });\n } else {\n dispatch({ type: PLAY_TRACK, id });\n }\n };\n}\n\nexport function playTrackNow(id: number): Action {\n return { type: PLAY_TRACK, id };\n}\n\nexport function play(): Thunk {\n return (dispatch: Dispatch, getState: GetState) => {\n const state = getState();\n if (\n state.media.status === MEDIA_STATUS.STOPPED &&\n state.playlist.currentTrack == null &&\n state.playlist.trackOrder.length === 0\n ) {\n dispatch(openMediaFileDialog());\n } else {\n dispatch({ type: PLAY });\n }\n };\n}\n\nexport function pause(): Thunk {\n return (dispatch, getState) => {\n const { status } = getState().media;\n if (status === MEDIA_STATUS.PLAYING) {\n dispatch({ type: PAUSE });\n } else {\n dispatch({ type: PLAY });\n }\n };\n}\n\nexport function stop(): Action {\n return { type: STOP };\n}\n\nexport function nextN(n: number): Thunk {\n return (dispatch, getState) => {\n const nextTrackId = Selectors.getNextTrackId(getState(), n);\n if (nextTrackId == null) {\n dispatch({ type: IS_STOPPED });\n return;\n }\n dispatch(playTrack(nextTrackId));\n };\n}\n\nexport function next(): Thunk {\n return nextN(1);\n}\n\nexport function previous(): Thunk {\n return nextN(-1);\n}\n\nexport function seekToTime(seconds: number): Thunk {\n return function (dispatch, getState) {\n const state = getState();\n const duration = Selectors.getDuration(state);\n if (duration == null) {\n return;\n }\n dispatch({\n type: SEEK_TO_PERCENT_COMPLETE,\n percent: (seconds / duration) * 100,\n });\n };\n}\nexport function seekForward(seconds: number): Thunk {\n return function (dispatch, getState) {\n const timeElapsed = Selectors.getTimeElapsed(getState());\n dispatch(seekToTime(timeElapsed + seconds));\n };\n}\n\nexport function seekBackward(seconds: number): Thunk {\n return seekForward(-seconds);\n}\n\nexport function setVolume(volume: number): Action {\n return {\n type: SET_VOLUME,\n volume: clamp(volume, 0, 100),\n };\n}\n\nexport function adjustVolume(volumeDiff: number): Thunk {\n return (dispatch, getState) => {\n const currentVolume = getState().media.volume;\n return dispatch(setVolume(currentVolume + volumeDiff));\n };\n}\n\nexport function scrollVolume(e: React.WheelEvent<HTMLDivElement>): Thunk {\n e.preventDefault();\n return (dispatch, getState) => {\n const currentVolume = getState().media.volume;\n // Using pixels as percentage difference here is a bit arbirary, but... oh well.\n return dispatch(setVolume(currentVolume + e.deltaY));\n };\n}\n\nexport function setBalance(balance: number): Action {\n balance = clamp(balance, -100, 100);\n // The balance clips to the center\n if (Math.abs(balance) < 25) {\n balance = 0;\n }\n return {\n type: SET_BALANCE,\n balance,\n };\n}\n\nexport function toggleRepeat(): Action {\n return { type: TOGGLE_REPEAT };\n}\n\nexport function toggleShuffle(): Action {\n return { type: TOGGLE_SHUFFLE };\n}\n\nexport function toggleTimeMode(): Action {\n return { type: TOGGLE_TIME_MODE };\n}\n","import { BANDS } from \"../constants\";\n\nimport {\n SET_EQ_ON,\n SET_EQ_OFF,\n SET_BAND_VALUE,\n SET_EQ_AUTO,\n} from \"../actionTypes\";\nimport { Band, Thunk, Action } from \"../types\";\n\nconst BAND_SNAP_DISTANCE = 5;\nconst BAND_MID_POINT_VALUE = 50;\n\nfunction _snapBandValue(value: number): number {\n if (\n value < BAND_MID_POINT_VALUE + BAND_SNAP_DISTANCE &&\n value > BAND_MID_POINT_VALUE - BAND_SNAP_DISTANCE\n ) {\n return BAND_MID_POINT_VALUE;\n }\n return value;\n}\n\nexport function setEqBand(band: Band, value: number): Action {\n return { type: SET_BAND_VALUE, band, value: _snapBandValue(value) };\n}\n\nfunction _setEqTo(value: number): Thunk {\n return (dispatch) => {\n Object.values(BANDS).forEach((band) => {\n dispatch({\n type: SET_BAND_VALUE,\n value,\n band: band,\n });\n });\n };\n}\n\nexport function setEqToMax(): Thunk {\n return _setEqTo(100);\n}\n\nexport function setEqToMid(): Thunk {\n return _setEqTo(50);\n}\n\nexport function setEqToMin(): Thunk {\n return _setEqTo(0);\n}\n\nexport function setPreamp(value: number): Action {\n return { type: SET_BAND_VALUE, band: \"preamp\", value: _snapBandValue(value) };\n}\n\nexport function toggleEq(): Thunk {\n return (dispatch, getState) => {\n if (getState().equalizer.on) {\n dispatch({ type: SET_EQ_OFF });\n } else {\n dispatch({ type: SET_EQ_ON });\n }\n };\n}\n\nexport function toggleEqAuto(): Thunk {\n return (dispatch) => {\n // We don't actually support this feature yet so don't let the user ever turn it on.\n // dispatch({ type: SET_EQ_AUTO, value: !getState().equalizer.auto });\n dispatch({ type: SET_EQ_AUTO, value: false });\n };\n}\n","var PRESET_VALUES = [\n \"hz60\",\n \"hz170\",\n \"hz310\",\n \"hz600\",\n \"hz1000\",\n \"hz3000\",\n \"hz6000\",\n \"hz12000\",\n \"hz14000\",\n \"hz16000\",\n \"preamp\",\n];\n\nvar HEADER = \"Winamp EQ library file v1.1\";\n\nmodule.exports = {\n PRESET_VALUES: PRESET_VALUES,\n HEADER: HEADER,\n};\n","var CONSTANTS = require(\"./constants\");\n\nfunction parser(arrayBuffer) {\n var data = {};\n var i = 0;\n var arr = new Int8Array(arrayBuffer);\n // Parse header\n data.type = String.fromCharCode.apply(\n null,\n arr.slice(i, CONSTANTS.HEADER.length)\n );\n if (data.type !== CONSTANTS.HEADER) {\n throw new Error(\"Invalid .eqf file.\");\n }\n i += CONSTANTS.HEADER.length;\n // Skip \"<ctrl-z>!--\"\n i += 4;\n // Get the presets\n data.presets = [];\n while (i < arr.length) {\n var preset = {};\n // Get the name\n var nameStart = i;\n var nameEnd = nameStart + 257; // Str is fixed length\n // Str is null terminated\n while (arr[i] !== 0 && i <= nameEnd) {\n i++;\n }\n preset.name = String.fromCharCode.apply(null, arr.slice(nameStart, i));\n i = nameEnd; // Skip over any unused bytes\n\n // Get the levels\n CONSTANTS.PRESET_VALUES.forEach(function (valueName) {\n preset[valueName] = 64 - arr[i++]; // Adjust for inverse values\n });\n data.presets.push(preset);\n }\n return data;\n}\n\nmodule.exports = parser;\n","var CONSTANTS = require(\"./constants\");\n\nvar FILL_SIZE = 4;\nvar PRESET_LENGTH = 257;\n\nfunction creator(data) {\n var buffer = [];\n for (var i = 0; i < CONSTANTS.HEADER.length; i++) {\n buffer.push(CONSTANTS.HEADER.charCodeAt(i));\n }\n buffer.push(26); // <ctrl-z>\n var ending = \"!--\";\n for (var i = 0; i < ending.length; i++) {\n buffer.push(ending.charCodeAt(i));\n }\n if (!data.presets) {\n throw new Error(\"Eqf data is missing presets\");\n }\n data.presets.forEach(function (preset) {\n var k = 0;\n for (; k < preset.name.length; k++) {\n buffer.push(preset.name.charCodeAt(k));\n }\n for (; k < PRESET_LENGTH; k++) {\n buffer.push(0);\n }\n\n CONSTANTS.PRESET_VALUES.forEach(function (valueName) {\n buffer.push(64 - preset[valueName]); // Adjust for inverse values\n });\n });\n return new Uint8Array(buffer).buffer;\n}\n\nmodule.exports = creator;\n","var parser = require(\"./parser\");\nvar creator = require(\"./creator\");\n\nmodule.exports = {\n parser: parser,\n creator: creator,\n};\n","import { UTF8_ELLIPSIS } from \"./constants\";\n\nexport type SpriteName = string;\n\nexport interface Sprite {\n name: SpriteName;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/* TODO: There are too many \" \" and \"_\" characters */\nexport const FONT_LOOKUP: { [letter: string]: [number, number] } = {\n a: [0, 0],\n b: [0, 1],\n c: [0, 2],\n d: [0, 3],\n e: [0, 4],\n f: [0, 5],\n g: [0, 6],\n h: [0, 7],\n i: [0, 8],\n j: [0, 9],\n k: [0, 10],\n l: [0, 11],\n m: [0, 12],\n n: [0, 13],\n o: [0, 14],\n p: [0, 15],\n q: [0, 16],\n r: [0, 17],\n s: [0, 18],\n t: [0, 19],\n u: [0, 20],\n v: [0, 21],\n w: [0, 22],\n x: [0, 23],\n y: [0, 24],\n z: [0, 25],\n '\"': [0, 26],\n \"@\": [0, 27],\n \" \": [0, 30],\n \"0\": [1, 0],\n \"1\": [1, 1],\n \"2\": [1, 2],\n \"3\": [1, 3],\n \"4\": [1, 4],\n \"5\": [1, 5],\n \"6\": [1, 6],\n \"7\": [1, 7],\n \"8\": [1, 8],\n \"9\": [1, 9],\n [UTF8_ELLIPSIS]: [1, 10],\n \".\": [1, 11],\n \":\": [1, 12],\n \"(\": [1, 13],\n \")\": [1, 14],\n \"-\": [1, 15],\n \"'\": [1, 16],\n \"!\": [1, 17],\n _: [1, 18],\n \"+\": [1, 19],\n \"\\\\\": [1, 20],\n \"/\": [1, 21],\n \"[\": [1, 22],\n \"]\": [1, 23],\n \"^\": [1, 24],\n \"&\": [1, 25],\n \"%\": [1, 26],\n \",\": [1, 27],\n \"=\": [1, 28],\n $: [1, 29],\n \"#\": [1, 30],\n Å: [2, 0],\n Ö: [2, 1],\n Ä: [2, 2],\n \"?\": [2, 3],\n \"*\": [2, 4],\n \"<\": [1, 22],\n \">\": [1, 23],\n \"{\": [1, 22],\n \"}\": [1, 23],\n};\n\nexport const imageConstFromChar = (char: string) =>\n `CHARACTER_${char.charCodeAt(0)}`;\n\nconst CHAR_X = 5;\nconst CHAR_Y = 6;\n\nconst characterSprites = [];\nfor (const key in FONT_LOOKUP) {\n if (FONT_LOOKUP.hasOwnProperty(key)) {\n const position = FONT_LOOKUP[key];\n characterSprites.push({\n name: imageConstFromChar(key),\n y: position[0] * CHAR_Y,\n x: position[1] * CHAR_X,\n width: CHAR_X,\n height: CHAR_Y,\n });\n }\n}\n\ninterface SpriteMap {\n [sheet: string]: Sprite[];\n}\n\nconst sprites: SpriteMap = {\n BALANCE: [\n { name: \"MAIN_BALANCE_BACKGROUND\", x: 9, y: 0, width: 38, height: 420 },\n { name: \"MAIN_BALANCE_THUMB\", x: 15, y: 422, width: 14, height: 11 },\n { name: \"MAIN_BALANCE_THUMB_ACTIVE\", x: 0, y: 422, width: 14, height: 11 },\n ],\n CBUTTONS: [\n { name: \"MAIN_PREVIOUS_BUTTON\", x: 0, y: 0, width: 23, height: 18 },\n {\n name: \"MAIN_PREVIOUS_BUTTON_ACTIVE\",\n x: 0,\n y: 18,\n width: 23,\n height: 18,\n },\n { name: \"MAIN_PLAY_BUTTON\", x: 23, y: 0, width: 23, height: 18 },\n { name: \"MAIN_PLAY_BUTTON_ACTIVE\", x: 23, y: 18, width: 23, height: 18 },\n { name: \"MAIN_PAUSE_BUTTON\", x: 46, y: 0, width: 23, height: 18 },\n { name: \"MAIN_PAUSE_BUTTON_ACTIVE\", x: 46, y: 18, width: 23, height: 18 },\n { name: \"MAIN_STOP_BUTTON\", x: 69, y: 0, width: 23, height: 18 },\n { name: \"MAIN_STOP_BUTTON_ACTIVE\", x: 69, y: 18, width: 23, height: 18 },\n { name: \"MAIN_NEXT_BUTTON\", x: 92, y: 0, width: 23, height: 18 },\n { name: \"MAIN_NEXT_BUTTON_ACTIVE\", x: 92, y: 18, width: 22, height: 18 },\n { name: \"MAIN_EJECT_BUTTON\", x: 114, y: 0, width: 22, height: 16 },\n { name: \"MAIN_EJECT_BUTTON_ACTIVE\", x: 114, y: 16, width: 22, height: 16 },\n ],\n MAIN: [\n { name: \"MAIN_WINDOW_BACKGROUND\", x: 0, y: 0, width: 275, height: 116 },\n ],\n MONOSTER: [\n { name: \"MAIN_STEREO\", x: 0, y: 12, width: 29, height: 12 },\n { name: \"MAIN_STEREO_SELECTED\", x: 0, y: 0, width: 29, height: 12 },\n { name: \"MAIN_MONO\", x: 29, y: 12, width: 27, height: 12 },\n { name: \"MAIN_MONO_SELECTED\", x: 29, y: 0, width: 27, height: 12 },\n ],\n NUMBERS: [\n { name: \"NO_MINUS_SIGN\", x: 9, y: 6, width: 5, height: 1 },\n { name: \"MINUS_SIGN\", x: 20, y: 6, width: 5, height: 1 },\n { name: \"DIGIT_0\", x: 0, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_1\", x: 9, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_2\", x: 18, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_3\", x: 27, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_4\", x: 36, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_5\", x: 45, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_6\", x: 54, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_7\", x: 63, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_8\", x: 72, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_9\", x: 81, y: 0, width: 9, height: 13 },\n ],\n NUMS_EX: [\n { name: \"NO_MINUS_SIGN_EX\", x: 90, y: 0, width: 9, height: 13 },\n { name: \"MINUS_SIGN_EX\", x: 99, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_0_EX\", x: 0, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_1_EX\", x: 9, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_2_EX\", x: 18, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_3_EX\", x: 27, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_4_EX\", x: 36, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_5_EX\", x: 45, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_6_EX\", x: 54, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_7_EX\", x: 63, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_8_EX\", x: 72, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_9_EX\", x: 81, y: 0, width: 9, height: 13 },\n ],\n PLAYPAUS: [\n { name: \"MAIN_PLAYING_INDICATOR\", x: 0, y: 0, width: 9, height: 9 },\n { name: \"MAIN_PAUSED_INDICATOR\", x: 9, y: 0, width: 9, height: 9 },\n { name: \"MAIN_STOPPED_INDICATOR\", x: 18, y: 0, width: 9, height: 9 },\n { name: \"MAIN_NOT_WORKING_INDICATOR\", x: 36, y: 0, width: 9, height: 9 },\n { name: \"MAIN_WORKING_INDICATOR\", x: 39, y: 0, width: 9, height: 9 },\n ],\n PLEDIT: [\n { name: \"PLAYLIST_TOP_TILE\", x: 127, y: 21, width: 25, height: 20 },\n { name: \"PLAYLIST_TOP_LEFT_CORNER\", x: 0, y: 21, width: 25, height: 20 },\n { name: \"PLAYLIST_TITLE_BAR\", x: 26, y: 21, width: 100, height: 20 },\n {\n name: \"PLAYLIST_TOP_RIGHT_CORNER\",\n x: 153,\n y: 21,\n width: 25,\n height: 20,\n },\n {\n name: \"PLAYLIST_TOP_TILE_SELECTED\",\n x: 127,\n y: 0,\n width: 25,\n height: 20,\n },\n { name: \"PLAYLIST_TOP_LEFT_SELECTED\", x: 0, y: 0, width: 25, height: 20 },\n {\n name: \"PLAYLIST_TITLE_BAR_SELECTED\",\n x: 26,\n y: 0,\n width: 100,\n height: 20,\n },\n {\n name: \"PLAYLIST_TOP_RIGHT_CORNER_SELECTED\",\n x: 153,\n y: 0,\n width: 25,\n height: 20,\n },\n { name: \"PLAYLIST_LEFT_TILE\", x: 0, y: 42, width: 12, height: 29 },\n { name: \"PLAYLIST_RIGHT_TILE\", x: 31, y: 42, width: 20, height: 29 },\n { name: \"PLAYLIST_BOTTOM_TILE\", x: 179, y: 0, width: 25, height: 38 },\n {\n name: \"PLAYLIST_BOTTOM_LEFT_CORNER\",\n x: 0,\n y: 72,\n width: 125,\n height: 38,\n },\n {\n name: \"PLAYLIST_BOTTOM_RIGHT_CORNER\",\n x: 126,\n y: 72,\n width: 150,\n height: 38,\n },\n {\n name: \"PLAYLIST_VISUALIZER_BACKGROUND\",\n x: 205,\n y: 0,\n width: 75,\n height: 38,\n },\n { name: \"PLAYLIST_SHADE_BACKGROUND\", x: 72, y: 57, width: 25, height: 14 },\n {\n name: \"PLAYLIST_SHADE_BACKGROUND_LEFT\",\n x: 72,\n y: 42,\n width: 25,\n height: 14,\n },\n {\n name: \"PLAYLIST_SHADE_BACKGROUND_RIGHT\",\n x: 99,\n y: 57,\n width: 50,\n height: 14,\n },\n {\n name: \"PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED\",\n x: 99,\n y: 42,\n width: 50,\n height: 14,\n },\n {\n name: \"PLAYLIST_SCROLL_HANDLE_SELECTED\",\n x: 61,\n y: 53,\n width: 8,\n height: 18,\n },\n { name: \"PLAYLIST_SCROLL_HANDLE\", x: 52, y: 53, width: 8, height: 18 },\n { name: \"PLAYLIST_ADD_URL\", x: 0, y: 111, width: 22, height: 18 },\n { name: \"PLAYLIST_ADD_URL_SELECTED\", x: 23, y: 111, width: 22, height: 18 },\n { name: \"PLAYLIST_ADD_DIR\", x: 0, y: 130, width: 22, height: 18 },\n { name: \"PLAYLIST_ADD_DIR_SELECTED\", x: 23, y: 130, width: 22, height: 18 },\n { name: \"PLAYLIST_ADD_FILE\", x: 0, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_ADD_FILE_SELECTED\",\n x: 23,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_REMOVE_ALL\", x: 54, y: 111, width: 22, height: 18 },\n {\n name: \"PLAYLIST_REMOVE_ALL_SELECTED\",\n x: 77,\n y: 111,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_CROP\", x: 54, y: 130, width: 22, height: 18 },\n { name: \"PLAYLIST_CROP_SELECTED\", x: 77, y: 130, width: 22, height: 18 },\n { name: \"PLAYLIST_REMOVE_SELECTED\", x: 54, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_REMOVE_SELECTED_SELECTED\",\n x: 77,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_REMOVE_MISC\", x: 54, y: 168, width: 22, height: 18 },\n {\n name: \"PLAYLIST_REMOVE_MISC_SELECTED\",\n x: 77,\n y: 168,\n width: 22,\n height: 18,\n },\n {\n name: \"PLAYLIST_INVERT_SELECTION\",\n x: 104,\n y: 111,\n width: 22,\n height: 18,\n },\n {\n name: \"PLAYLIST_INVERT_SELECTION_SELECTED\",\n x: 127,\n y: 111,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_SELECT_ZERO\", x: 104, y: 130, width: 22, height: 18 },\n {\n name: \"PLAYLIST_SELECT_ZERO_SELECTED\",\n x: 127,\n y: 130,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_SELECT_ALL\", x: 104, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_SELECT_ALL_SELECTED\",\n x: 127,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_SORT_LIST\", x: 154, y: 111, width: 22, height: 18 },\n {\n name: \"PLAYLIST_SORT_LIST_SELECTED\",\n x: 177,\n y: 111,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_FILE_INFO\", x: 154, y: 130, width: 22, height: 18 },\n {\n name: \"PLAYLIST_FILE_INFO_SELECTED\",\n x: 177,\n y: 130,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_MISC_OPTIONS\", x: 154, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_MISC_OPTIONS_SELECTED\",\n x: 177,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_NEW_LIST\", x: 204, y: 111, width: 22, height: 18 },\n {\n name: \"PLAYLIST_NEW_LIST_SELECTED\",\n x: 227,\n y: 111,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_SAVE_LIST\", x: 204, y: 130, width: 22, height: 18 },\n {\n name: \"PLAYLIST_SAVE_LIST_SELECTED\",\n x: 227,\n y: 130,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_LOAD_LIST\", x: 204, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_LOAD_LIST_SELECTED\",\n x: 227,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_ADD_MENU_BAR\", x: 48, y: 111, width: 3, height: 54 },\n { name: \"PLAYLIST_REMOVE_MENU_BAR\", x: 100, y: 111, width: 3, height: 72 },\n { name: \"PLAYLIST_SELECT_MENU_BAR\", x: 150, y: 111, width: 3, height: 54 },\n { name: \"PLAYLIST_MISC_MENU_BAR\", x: 200, y: 111, width: 3, height: 54 },\n { name: \"PLAYLIST_LIST_BAR\", x: 250, y: 111, width: 3, height: 54 },\n { name: \"PLAYLIST_CLOSE_SELECTED\", x: 52, y: 42, width: 9, height: 9 },\n { name: \"PLAYLIST_COLLAPSE_SELECTED\", x: 62, y: 42, width: 9, height: 9 },\n { name: \"PLAYLIST_EXPAND_SELECTED\", x: 150, y: 42, width: 9, height: 9 },\n ],\n EQ_EX: [\n {\n name: \"EQ_SHADE_BACKGROUND_SELECTED\",\n x: 0,\n y: 0,\n width: 275,\n height: 14,\n },\n { name: \"EQ_SHADE_BACKGROUND\", x: 0, y: 15, width: 275, height: 14 },\n { name: \"EQ_SHADE_VOLUME_SLIDER_LEFT\", x: 1, y: 30, width: 3, height: 7 },\n { name: \"EQ_SHADE_VOLUME_SLIDER_CENTER\", x: 4, y: 30, width: 3, height: 7 },\n { name: \"EQ_SHADE_VOLUME_SLIDER_RIGHT\", x: 7, y: 30, width: 3, height: 7 },\n { name: \"EQ_SHADE_BALANCE_SLIDER_LEFT\", x: 11, y: 30, width: 3, height: 7 },\n {\n name: \"EQ_SHADE_BALANCE_SLIDER_CENTER\",\n x: 14,\n y: 30,\n width: 3,\n height: 7,\n },\n {\n name: \"EQ_SHADE_BALANCE_SLIDER_RIGHT\",\n x: 17,\n y: 30,\n width: 3,\n height: 7,\n },\n { name: \"EQ_MAXIMIZE_BUTTON_ACTIVE\", x: 1, y: 38, width: 9, height: 9 },\n { name: \"EQ_MINIMIZE_BUTTON_ACTIVE\", x: 1, y: 47, width: 9, height: 9 },\n { name: \"EQ_SHADE_CLOSE_BUTTON\", x: 11, y: 38, width: 9, height: 9 },\n { name: \"EQ_SHADE_CLOSE_BUTTON_ACTIVE\", x: 11, y: 47, width: 9, height: 9 },\n ],\n EQMAIN: [\n { name: \"EQ_WINDOW_BACKGROUND\", x: 0, y: 0, width: 275, height: 116 },\n { name: \"EQ_TITLE_BAR\", x: 0, y: 149, width: 275, height: 14 },\n { name: \"EQ_TITLE_BAR_SELECTED\", x: 0, y: 134, width: 275, height: 14 },\n { name: \"EQ_SLIDER_BACKGROUND\", x: 13, y: 164, width: 209, height: 129 },\n { name: \"EQ_SLIDER_THUMB\", x: 0, y: 164, width: 11, height: 11 },\n { name: \"EQ_SLIDER_THUMB_SELECTED\", x: 0, y: 176, width: 11, height: 11 },\n { name: \"EQ_CLOSE_BUTTON\", x: 0, y: 116, width: 9, height: 9 },\n { name: \"EQ_CLOSE_BUTTON_ACTIVE\", x: 0, y: 125, width: 9, height: 9 },\n // This is technically not a sprite, it's just part of the background.\n // However, we extract it to use it as a fallback for\n // `EQ_MAXIMIZE_BUTTON_ACTIVE`. Without this, skins that don't implement\n // `eq_ex.bmp` would show the default skin's `EQ_MAXIMIZE_BUTTON_ACTIVE`\n // instead of showing no sprite aka, just showing through to this portion of\n // the title bar image.\n {\n name: \"EQ_MAXIMIZE_BUTTON_ACTIVE_FALLBACK\",\n x: 254,\n y: 152,\n width: 9,\n height: 9,\n },\n { name: \"EQ_ON_BUTTON\", x: 10, y: 119, width: 26, height: 12 },\n { name: \"EQ_ON_BUTTON_DEPRESSED\", x: 128, y: 119, width: 26, height: 12 },\n { name: \"EQ_ON_BUTTON_SELECTED\", x: 69, y: 119, width: 26, height: 12 },\n {\n name: \"EQ_ON_BUTTON_SELECTED_DEPRESSED\",\n x: 187,\n y: 119,\n width: 26,\n height: 12,\n },\n { name: \"EQ_AUTO_BUTTON\", x: 36, y: 119, width: 32, height: 12 },\n {\n name: \"EQ_AUTO_BUTTON_DEPRESSED\",\n x: 154,\n y: 119,\n width: 32,\n height: 12,\n },\n { name: \"EQ_AUTO_BUTTON_SELECTED\", x: 95, y: 119, width: 32, height: 12 },\n {\n name: \"EQ_AUTO_BUTTON_SELECTED_DEPRESSED\",\n x: 213,\n y: 119,\n width: 32,\n height: 12,\n },\n { name: \"EQ_GRAPH_BACKGROUND\", x: 0, y: 294, width: 113, height: 19 },\n { name: \"EQ_GRAPH_LINE_COLORS\", x: 115, y: 294, width: 1, height: 19 },\n { name: \"EQ_PRESETS_BUTTON\", x: 224, y: 164, width: 44, height: 12 },\n {\n name: \"EQ_PRESETS_BUTTON_SELECTED\",\n x: 224,\n y: 176,\n width: 44,\n height: 12,\n },\n { name: \"EQ_PREAMP_LINE\", x: 0, y: 314, width: 113, height: 1 },\n ],\n POSBAR: [\n {\n name: \"MAIN_POSITION_SLIDER_BACKGROUND\",\n x: 0,\n y: 0,\n width: 248,\n height: 10,\n },\n {\n name: \"MAIN_POSITION_SLIDER_THUMB\",\n x: 248,\n y: 0,\n width: 29,\n height: 10,\n },\n {\n name: \"MAIN_POSITION_SLIDER_THUMB_SELECTED\",\n x: 278,\n y: 0,\n width: 29,\n height: 10,\n },\n ],\n SHUFREP: [\n { name: \"MAIN_SHUFFLE_BUTTON\", x: 28, y: 0, width: 47, height: 15 },\n {\n name: \"MAIN_SHUFFLE_BUTTON_DEPRESSED\",\n x: 28,\n y: 15,\n width: 47,\n height: 15,\n },\n {\n name: \"MAIN_SHUFFLE_BUTTON_SELECTED\",\n x: 28,\n y: 30,\n width: 47,\n height: 15,\n },\n {\n name: \"MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED\",\n x: 28,\n y: 45,\n width: 47,\n height: 15,\n },\n { name: \"MAIN_REPEAT_BUTTON\", x: 0, y: 0, width: 28, height: 15 },\n {\n name: \"MAIN_REPEAT_BUTTON_DEPRESSED\",\n x: 0,\n y: 15,\n width: 28,\n height: 15,\n },\n {\n name: \"MAIN_REPEAT_BUTTON_SELECTED\",\n x: 0,\n y: 30,\n width: 28,\n height: 15,\n },\n {\n name: \"MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED\",\n x: 0,\n y: 45,\n width: 28,\n height: 15,\n },\n { name: \"MAIN_EQ_BUTTON\", x: 0, y: 61, width: 23, height: 12 },\n { name: \"MAIN_EQ_BUTTON_SELECTED\", x: 0, y: 73, width: 23, height: 12 },\n { name: \"MAIN_EQ_BUTTON_DEPRESSED\", x: 46, y: 61, width: 23, height: 12 },\n {\n name: \"MAIN_EQ_BUTTON_DEPRESSED_SELECTED\",\n x: 46,\n y: 73,\n width: 23,\n height: 12,\n },\n { name: \"MAIN_PLAYLIST_BUTTON\", x: 23, y: 61, width: 23, height: 12 },\n {\n name: \"MAIN_PLAYLIST_BUTTON_SELECTED\",\n x: 23,\n y: 73,\n width: 23,\n height: 12,\n },\n {\n name: \"MAIN_PLAYLIST_BUTTON_DEPRESSED\",\n x: 69,\n y: 61,\n width: 23,\n height: 12,\n },\n {\n name: \"MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED\",\n x: 69,\n y: 73,\n width: 23,\n height: 12,\n },\n ],\n TEXT: characterSprites,\n TITLEBAR: [\n { name: \"MAIN_TITLE_BAR\", x: 27, y: 15, width: 275, height: 14 },\n { name: \"MAIN_TITLE_BAR_SELECTED\", x: 27, y: 0, width: 275, height: 14 },\n {\n name: \"MAIN_EASTER_EGG_TITLE_BAR\",\n x: 27,\n y: 72,\n width: 275,\n height: 14,\n },\n {\n name: \"MAIN_EASTER_EGG_TITLE_BAR_SELECTED\",\n x: 27,\n y: 57,\n width: 275,\n height: 14,\n },\n { name: \"MAIN_OPTIONS_BUTTON\", x: 0, y: 0, width: 9, height: 9 },\n {\n name: \"MAIN_OPTIONS_BUTTON_DEPRESSED\",\n x: 0,\n y: 9,\n width: 9,\n height: 9,\n },\n { name: \"MAIN_MINIMIZE_BUTTON\", x: 9, y: 0, width: 9, height: 9 },\n {\n name: \"MAIN_MINIMIZE_BUTTON_DEPRESSED\",\n x: 9,\n y: 9,\n width: 9,\n height: 9,\n },\n { name: \"MAIN_SHADE_BUTTON\", x: 0, y: 18, width: 9, height: 9 },\n { name: \"MAIN_SHADE_BUTTON_DEPRESSED\", x: 9, y: 18, width: 9, height: 9 },\n { name: \"MAIN_CLOSE_BUTTON\", x: 18, y: 0, width: 9, height: 9 },\n { name: \"MAIN_CLOSE_BUTTON_DEPRESSED\", x: 18, y: 9, width: 9, height: 9 },\n {\n name: \"MAIN_CLUTTER_BAR_BACKGROUND\",\n x: 304,\n y: 0,\n width: 8,\n height: 43,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BACKGROUND_DISABLED\",\n x: 312,\n y: 0,\n width: 8,\n height: 43,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_O_SELECTED\",\n x: 304,\n y: 47,\n width: 8,\n height: 8,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_A_SELECTED\",\n x: 312,\n y: 55,\n width: 8,\n height: 7,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_I_SELECTED\",\n x: 320,\n y: 62,\n width: 8,\n height: 7,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_D_SELECTED\",\n x: 328,\n y: 69,\n width: 8,\n height: 8,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_V_SELECTED\",\n x: 336,\n y: 77,\n width: 8,\n height: 7,\n },\n { name: \"MAIN_SHADE_BACKGROUND\", x: 27, y: 42, width: 275, height: 14 },\n {\n name: \"MAIN_SHADE_BACKGROUND_SELECTED\",\n x: 27,\n y: 29,\n width: 275,\n height: 14,\n },\n { name: \"MAIN_SHADE_BUTTON_SELECTED\", x: 0, y: 27, width: 9, height: 9 },\n {\n name: \"MAIN_SHADE_BUTTON_SELECTED_DEPRESSED\",\n x: 9,\n y: 27,\n width: 9,\n height: 9,\n },\n {\n name: \"MAIN_SHADE_POSITION_BACKGROUND\",\n x: 0,\n y: 36,\n width: 17,\n height: 7,\n },\n { name: \"MAIN_SHADE_POSITION_THUMB\", x: 20, y: 36, width: 3, height: 7 },\n {\n name: \"MAIN_SHADE_POSITION_THUMB_LEFT\",\n x: 17,\n y: 36,\n width: 3,\n height: 7,\n },\n {\n name: \"MAIN_SHADE_POSITION_THUMB_RIGHT\",\n x: 23,\n y: 36,\n width: 3,\n height: 7,\n },\n ],\n VOLUME: [\n { name: \"MAIN_VOLUME_BACKGROUND\", x: 0, y: 0, width: 68, height: 420 },\n { name: \"MAIN_VOLUME_THUMB\", x: 15, y: 422, width: 14, height: 11 },\n {\n name: \"MAIN_VOLUME_THUMB_SELECTED\",\n x: 0,\n y: 422,\n width: 14,\n height: 11,\n },\n ],\n GEN: [\n { name: \"GEN_TOP_LEFT_SELECTED\", x: 0, y: 0, width: 25, height: 20 },\n { name: \"GEN_TOP_LEFT_END_SELECTED\", x: 26, y: 0, width: 25, height: 20 },\n {\n name: \"GEN_TOP_CENTER_FILL_SELECTED\",\n x: 52,\n y: 0,\n width: 25,\n height: 20,\n },\n { name: \"GEN_TOP_RIGHT_END_SELECTED\", x: 78, y: 0, width: 25, height: 20 },\n {\n name: \"GEN_TOP_LEFT_RIGHT_FILL_SELECTED\",\n x: 104,\n y: 0,\n width: 25,\n height: 20,\n },\n { name: \"GEN_TOP_RIGHT_SELECTED\", x: 130, y: 0, width: 25, height: 20 },\n\n { name: \"GEN_TOP_LEFT\", x: 0, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_LEFT_END\", x: 26, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_CENTER_FILL\", x: 52, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_RIGHT_END\", x: 78, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_LEFT_RIGHT_FILL\", x: 104, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_RIGHT\", x: 130, y: 21, width: 25, height: 20 },\n { name: \"GEN_BOTTOM_LEFT\", x: 0, y: 42, width: 125, height: 14 },\n { name: \"GEN_BOTTOM_RIGHT\", x: 0, y: 57, width: 125, height: 14 },\n { name: \"GEN_BOTTOM_FILL\", x: 127, y: 72, width: 25, height: 14 },\n { name: \"GEN_MIDDLE_LEFT\", x: 127, y: 42, width: 11, height: 29 },\n { name: \"GEN_MIDDLE_LEFT_BOTTOM\", x: 158, y: 42, width: 11, height: 24 },\n { name: \"GEN_MIDDLE_RIGHT\", x: 139, y: 42, width: 8, height: 29 },\n { name: \"GEN_MIDDLE_RIGHT_BOTTOM\", x: 170, y: 42, width: 8, height: 24 },\n { name: \"GEN_CLOSE_SELECTED\", x: 148, y: 42, width: 9, height: 9 },\n ],\n /*\n\n We don't currently support the Media Library, so there are disabled\n GENEX: [\n {\n name: \"GENEX_BUTTON_BACKGROUND_LEFT_UNPRESSED\",\n x: 0,\n y: 0,\n height: 15,\n width: 4,\n },\n {\n name: \"GENEX_BUTTON_BACKGROUND_CENTER_UNPRESSED\",\n x: 4,\n y: 0,\n height: 15,\n width: 39,\n },\n {\n name: \"GENEX_BUTTON_BACKGROUND_RIGHT_UNPRESSED\",\n x: 43,\n y: 0,\n height: 15,\n width: 4,\n },\n {\n name: \"GENEX_BUTTON_BACKGROUND_PRESSED\",\n x: 0,\n y: 1,\n height: 15,\n width: 47,\n },\n { name: \"GENEX_SCROLL_UP_UNPRESSED\", x: 0, y: 31, height: 14, width: 14 },\n {\n name: \"GENEX_SCROLL_DOWN_UNPRESSED\",\n x: 14,\n y: 31,\n height: 14,\n width: 14,\n },\n { name: \"GENEX_SCROLL_UP_PRESSED\", x: 28, y: 31, height: 14, width: 14 },\n { name: \"GENEX_SCROLL_DOWN_PRESSED\", x: 42, y: 31, height: 14, width: 14 },\n { name: \"GENEX_SCROLL_LEFT_UNPRESSED\", x: 0, y: 45, height: 14, width: 14 },\n {\n name: \"GENEX_SCROLL_RIGHT_UNPRESSED\",\n x: 14,\n y: 45,\n height: 14,\n width: 14,\n },\n { name: \"GENEX_SCROLL_LEFT_PRESSED\", x: 28, y: 45, height: 14, width: 14 },\n { name: \"GENEX_SCROLL_RIGHT_PRESSED\", x: 42, y: 45, height: 14, width: 14 },\n {\n name: \"GENEX_VERTICAL_SCROLL_HANDLE_UNPRESSED\",\n x: 56,\n y: 31,\n height: 28,\n width: 14,\n },\n {\n name: \"GENEX_VERTICAL_SCROLL_HANDLE_PRESSED\",\n x: 70,\n y: 31,\n height: 28,\n width: 14,\n },\n {\n name: \"GENEX_HORIZONTAL_SCROLL_HANDLE_UNPRESSED\",\n x: 84,\n y: 31,\n height: 14,\n width: 28,\n },\n {\n name: \"GENEX_HORIZONTAL_SCROLL_HANDLE_PRESSED\",\n x: 84,\n y: 45,\n height: 14,\n width: 28,\n },\n ],\n */\n};\n\nexport default sprites;\n","import JSZip from \"jszip\";\nimport { PlaylistStyle, SkinGenExColors, CursorImage } from \"./types\";\nimport SKIN_SPRITES, { Sprite } from \"./skinSprites\";\nimport { DEFAULT_SKIN } from \"./constants\";\nimport * as Utils from \"./utils\";\nimport * as FileUtils from \"./fileUtils\";\n\nexport const getFileExtension = (fileName: string): string | null => {\n const matches = /\\.([a-z]{3,4})$/i.exec(fileName);\n return matches ? matches[1].toLowerCase() : null;\n};\n\nfunction getFilenameRegex(base: string, ext: string): RegExp {\n // Note: The four slashes: \\\\\\\\ ultimately represent a single escaped slash in\n // the regex (\"\\\\\"), however each itself needs to be escaped so that\n // JavaScript does not interperate it as an escape character in the string\n // literal. Wonderful.\n return new RegExp(`^(.*[/\\\\\\\\])?${base}.(${ext})$`, \"i\");\n}\n\nexport async function getFileFromZip(\n zip: JSZip,\n fileName: string,\n ext: string,\n mode: \"blob\" | \"text\" | \"base64\" | \"uint8array\"\n) {\n const files = zip.file(getFilenameRegex(fileName, ext));\n if (!files.length) {\n return null;\n }\n\n // Windows file system is case insensitve, but zip files are not.\n // This means that it's possible for a zip to contain both `main.bmp` _and_\n // `main.BMP` but in Winamp only one will be materialized onto disk when\n // decompressing. I suspect that in this case later files in the archive\n // overwrite earlier ones. To mimic that behavior we use the last matching\n // file.\n //\n // This works because `JSZip.file` filters the files by iterating the\n // underlying `files` object under the hood:\n // https://github.com/Stuk/jszip/blob/25d401e104926fef8528d670ecfe53f14e77a297/lib/object.js#L182\n // Since JavaScript objects are iterable in the order that the keys were\n // added this _should_ mean that by taking the last file here we will get\n // the last file that JSZip extracted.\n const lastFile = files[files.length - 1];\n\n try {\n const contents = await lastFile.async(mode);\n return { contents, name: lastFile.name };\n } catch (e) {\n console.warn(\n `Failed to extract \"${fileName}.${ext}\" from the skin archive.`\n );\n return null;\n }\n}\n\nfunction fallbackGetImgFromBlob(blob: Blob): Promise<HTMLImageElement> {\n return Utils.imgFromUrl(URL.createObjectURL(blob));\n}\n\nexport async function getImgFromBlob(\n blob: Blob\n): Promise<ImageBitmap | HTMLImageElement | null> {\n try {\n // Use this faster native browser API if available.\n // NOTE: In some browsers `window.createImageBitmap` may not exist so this will throw.\n return await window.createImageBitmap(blob);\n } catch (e) {\n try {\n return await fallbackGetImgFromBlob(blob);\n } catch (ee) {\n // Like Winamp we will silently fail on images that don't parse.\n return null;\n }\n }\n}\n\nexport function getSpriteUrisFromImg(\n img: HTMLImageElement | ImageBitmap,\n sprites: Sprite[]\n): { [spriteName: string]: string } {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n throw new Error(\"Failed to get canvas context\");\n }\n const images: { [spriteName: string]: string } = {};\n sprites.forEach((sprite) => {\n canvas.height = sprite.height;\n canvas.width = sprite.width;\n\n context.drawImage(img, -sprite.x, -sprite.y);\n const image = canvas.toDataURL();\n images[sprite.name] = image;\n });\n return images;\n}\n\nexport async function getImgFromFilename(\n zip: JSZip,\n fileName: string\n): Promise<HTMLImageElement | ImageBitmap | null> {\n // Winamp only supports .bmp images, but WACUP set a precidence of supporting\n // .png as well to reduce size. Since we care about size as well, we follow\n // suit. Our default skin uses .png to save 14kb.\n const file = await getFileFromZip(zip, fileName, \"(png|bmp)\", \"blob\");\n if (!file) {\n return null;\n }\n\n const mimeType = `image/${getFileExtension(file.name) || \"*\"}`;\n // The spec for createImageBitmap() says the browser should try to sniff the\n // mime type, but it looks like Firefox does not. So we specify it here\n // explicitly.\n const typedBlob = new Blob([file.contents], { type: mimeType });\n return getImgFromBlob(typedBlob);\n}\n\nexport async function getSpriteUrisFromFilename(\n zip: JSZip,\n fileName: string\n): Promise<{ [spriteName: string]: string }> {\n const img = await getImgFromFilename(zip, fileName);\n if (img == null) {\n return {};\n }\n return getSpriteUrisFromImg(img, SKIN_SPRITES[fileName]);\n}\n\n// https://docs.microsoft.com/en-us/windows/win32/xaudio2/resource-interchange-file-format--riff-\nconst RIFF_MAGIC = \"RIFF\".split(\"\").map((c) => c.charCodeAt(0));\n\nfunction arrayStartsWith(arr: Uint8Array, matcher: number[]): boolean {\n return matcher.every((item, i) => arr[i] === item);\n}\n\nexport async function getCursorFromFilename(\n zip: JSZip,\n fileName: string\n): Promise<CursorImage | null> {\n const file = await getFileFromZip(zip, fileName, \"CUR\", \"uint8array\");\n if (file == null) {\n return null;\n }\n const contents = file.contents as Uint8Array;\n if (arrayStartsWith(contents, RIFF_MAGIC)) {\n return { type: \"ani\", aniData: contents };\n }\n\n return { type: \"cur\", url: FileUtils.curUrlFromByteArray(contents) };\n}\n\nexport async function getPlaylistStyle(zip: JSZip): Promise<PlaylistStyle> {\n const files = zip.file(getFilenameRegex(\"PLEDIT\", \"txt\"));\n const file = files[0];\n if (file == null) {\n return DEFAULT_SKIN.playlistStyle;\n }\n const ini = await file.async(\"text\");\n if (ini == null) {\n return DEFAULT_SKIN.playlistStyle;\n }\n const data = ini && Utils.parseIni(ini).text;\n if (!data) {\n // Corrupt or missing PLEDIT.txt file.\n return DEFAULT_SKIN.playlistStyle;\n }\n\n // Winamp seems to permit colors that contain too many characters.\n // For compatibility with existing skins, we normalize them here.\n [\"normal\", \"current\", \"normalbg\", \"selectedbg\", \"mbFG\", \"mbBG\"].forEach(\n (colorKey) => {\n let color = data[colorKey];\n if (!color) {\n return;\n }\n if (color[0] !== \"#\") {\n color = `#${color}`;\n }\n data[colorKey] = color.slice(0, 7);\n }\n );\n\n return { ...DEFAULT_SKIN.playlistStyle, ...data };\n}\n\nexport async function getGenExColors(\n zip: JSZip\n): Promise<null | SkinGenExColors> {\n const img = await getImgFromFilename(zip, \"GENEX\");\n if (img == null) {\n return null;\n }\n\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return null;\n }\n canvas.width = img.width;\n canvas.height = img.height;\n context.drawImage(img, 0, 0);\n\n const getColorAt = (x: number): string =>\n `rgb(${context\n .getImageData(x, 0, 1, 1)\n // Discard the alpha channel\n .data.slice(0, 3)\n .join(\",\")})`;\n\n // Ideally we would just have a map from key to the x value and map over\n // that with getColorAt, but I don't know a great way to make that type\n // safe. So, we'll just do this for now, where we explicitly call getColorAt\n // for each key.\n return {\n // (1) x=48: item background (background to edits, listviews, etc.)\n itemBackground: getColorAt(48),\n // (2) x=50: item foreground (text colour of edits, listviews, etc.)\n itemForeground: getColorAt(50),\n // (3) x=52: window background (used to set the bg color for the dialog)\n windowBackground: getColorAt(52),\n // (4) x=54: button text colour\n buttonText: getColorAt(54),\n // (5) x=56: window text colour\n windowText: getColorAt(56),\n // (6) x=58: colour of dividers and sunken borders\n divider: getColorAt(58),\n // (7) x=60: selection colour for entries inside playlists (nothing else yet)\n playlistSelection: getColorAt(60),\n // (8) x=62: listview header background colour\n listHeaderBackground: getColorAt(62),\n // (9) x=64: listview header text colour\n listHeaderText: getColorAt(64),\n // (10) x=66: listview header frame top and left colour\n listHeaderFrameTopAndLeft: getColorAt(66),\n // (11) x=68: listview header frame bottom and right colour\n listHeaderFrameBottomAndRight: getColorAt(68),\n // (12) x=70: listview header frame colour, when pressed\n listHeaderFramePressed: getColorAt(70),\n // (13) x=72: listview header dead area colour\n listHeaderDeadArea: getColorAt(72),\n // (14) x=74: scrollbar colour #1\n scrollbarOne: getColorAt(74),\n // (15) x=76: scrollbar colour #2\n scrollbarTwo: getColorAt(76),\n // (16) x=78: pressed scrollbar colour #1\n pressedScrollbarOne: getColorAt(78),\n // (17) x=80: pressed scrollbar colour #2\n pressedScrollbarTwo: getColorAt(80),\n // (18) x=82: scrollbar dead area colour\n scrollbarDeadArea: getColorAt(82),\n // (19) x=84 List view text colour highlighted\n listTextHighlighted: getColorAt(84),\n // (20) x=86 List view background colour highlighted\n listTextHighlightedBackground: getColorAt(86),\n // (21) x=88 List view text colour selected\n listTextSelected: getColorAt(88),\n // (22) x=90 List view background colour selected\n listTextSelectedBackground: getColorAt(90),\n };\n}\n","import SKIN_SPRITES from \"./skinSprites\";\nimport regionParser from \"./regionParser\";\nimport { LETTERS, DEFAULT_SKIN } from \"./constants\";\nimport { parseViscolors } from \"./utils\";\nimport * as SkinParserUtils from \"./skinParserUtils\";\n\nconst shallowMerge = (objs) =>\n objs.reduce((prev, img) => Object.assign(prev, img), {});\n\nconst CURSORS = [\n \"CLOSE\",\n \"EQCLOSE\",\n \"EQNORMAL\",\n \"EQSLID\",\n \"EQTITLE\",\n \"MAINMENU\",\n \"MMENU\",\n \"MIN\",\n \"NORMAL\",\n \"PCLOSE\",\n \"PNORMAL\",\n \"POSBAR\",\n \"PSIZE\",\n \"PTBAR\",\n \"PVSCROLL\",\n \"PWINBUT\",\n \"PWSNORM\",\n \"PWSSIZE\",\n \"SONGNAME\",\n \"TITLEBAR\",\n \"VOLBAL\",\n \"WINBUT\",\n \"WSNORMAL\",\n \"WSPOSBAR\",\n /*\n * > There are usually 4 more cursors in the skins: volbar.cur, wsclose.cur,\n * > wswinbut.cur, wsmin.cur, but they are never used, at least in the last\n * > versions of winamp, so there's no need of including them. The cursors\n * > shown when the mouse is over the app-buttons are the same in normal and\n * > winshade mode, except for the main menu button. You can make animated\n * > cursors, but you have to name them with the extension .cur (animated\n * > cursors are usually .ani files).\n *\n * -- Skinners Atlas\n *\n * \"VOLBAR\",\n * \"WSCLOSE\",\n * \"WSWINBUT\",\n * \"WSMIN\",\n *\n */\n];\n\nasync function genVizColors(zip) {\n const viscolor = await SkinParserUtils.getFileFromZip(\n zip,\n \"VISCOLOR\",\n \"txt\",\n \"text\"\n );\n return viscolor ? parseViscolors(viscolor.contents) : DEFAULT_SKIN.colors;\n}\n\nasync function genImages(zip) {\n const imageObjs = await Promise.all(\n Object.keys(SKIN_SPRITES).map((fileName) =>\n SkinParserUtils.getSpriteUrisFromFilename(zip, fileName)\n )\n );\n // Merge all the objects into a single object. Tests assert that sprite keys are unique.\n return shallowMerge(imageObjs);\n}\nasync function genCursors(zip) {\n const cursorObjs = await Promise.all(\n CURSORS.map(async (cursorName) => ({\n [cursorName]: await SkinParserUtils.getCursorFromFilename(\n zip,\n cursorName\n ),\n }))\n );\n return shallowMerge(cursorObjs);\n}\n\nasync function genRegion(zip) {\n const region = await SkinParserUtils.getFileFromZip(\n zip,\n \"REGION\",\n \"txt\",\n \"text\"\n );\n return region ? regionParser(region.contents) : {};\n}\n\nasync function genGenTextSprites(zip) {\n const img = await SkinParserUtils.getImgFromFilename(zip, \"GEN\");\n if (img == null) {\n return null;\n }\n\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n context.drawImage(img, 0, 0);\n\n const getLetters = (y, prefix) => {\n const getColorAt = (x) => context.getImageData(x, y, 1, 1).data.join(\",\");\n\n let x = 1;\n const backgroundColor = getColorAt(0);\n\n const height = 7;\n return LETTERS.map((letter) => {\n let nextBackground = x;\n while (\n getColorAt(nextBackground) !== backgroundColor &&\n nextBackground < canvas.width\n ) {\n nextBackground++;\n }\n const width = nextBackground - x;\n const name = `${prefix}_${letter}`;\n const sprite = { x, y, height, width, name };\n x = nextBackground + 1;\n return sprite;\n });\n };\n\n const letterWidths = {};\n const sprites = [\n ...getLetters(88, \"GEN_TEXT_SELECTED\"),\n ...getLetters(96, \"GEN_TEXT\"),\n ];\n sprites.forEach((sprite) => {\n letterWidths[sprite.name] = sprite.width;\n });\n return [letterWidths, SkinParserUtils.getSpriteUrisFromImg(img, sprites)];\n}\n\n// A promise that, given an array buffer returns a skin style object\nasync function skinParser(zipFileBuffer, JSZip) {\n const zip = await JSZip.loadAsync(zipFileBuffer);\n\n const [\n colors,\n playlistStyle,\n images,\n cursors,\n region,\n genTextSprites,\n genExColors,\n ] = await Promise.all([\n genVizColors(zip),\n SkinParserUtils.getPlaylistStyle(zip),\n genImages(zip),\n genCursors(zip),\n genRegion(zip),\n genGenTextSprites(zip),\n SkinParserUtils.getGenExColors(zip),\n ]);\n\n const [genLetterWidths, genTextImages] = genTextSprites || [null, {}];\n\n return {\n colors,\n playlistStyle,\n images: { ...images, ...genTextImages },\n genLetterWidths,\n cursors,\n region,\n genExColors,\n };\n}\n\nexport default skinParser;\n","import { parseIni } from \"./utils\";\n\nexport function pointPairs(arr: string[]) {\n const pairedValues = [];\n for (let i = 0; i < arr.length; i += 2) {\n pairedValues.push(`${arr[i]},${arr[i + 1]}`);\n }\n return pairedValues;\n}\n\ntype RegionData = { [section: string]: string[] };\n\nexport default function regionParser(regionStr: string): RegionData {\n const iniData = parseIni(regionStr);\n const data: RegionData = {};\n Object.keys(iniData).forEach((section) => {\n const { numpoints, pointlist } = iniData[section];\n if (!numpoints || !pointlist) {\n return;\n }\n const pointCounts = numpoints.split(/\\s*,\\s*/).filter((val) => val !== \"\");\n const points = pointPairs(\n // points can be separated by spaces, or by commas\n pointlist.split(/\\s*[, ]\\s*/).filter((val) => val !== \"\")\n );\n let pointIndex = 0;\n const polygons = pointCounts.map((numStr) => {\n const num = Number(numStr);\n if (num < 3) {\n // What use is a polygon with less than three sides?\n pointIndex += num;\n return null;\n }\n const polygon = points.slice(pointIndex, pointIndex + num).join(\" \");\n if (!polygon.length) {\n // It's possible that the skin author specified more polygons than provided points.\n return null;\n }\n pointIndex += num;\n return polygon;\n });\n const validPolygons = polygons.filter(\n (polygon) => polygon != null\n ) as string[];\n if (validPolygons.length) {\n data[section] = validPolygons;\n }\n });\n\n return data;\n}\n","'use strict';\n\nmodule.exports = TinyQueue;\nmodule.exports.default = TinyQueue;\n\nfunction TinyQueue(data, compare) {\n if (!(this instanceof TinyQueue)) return new TinyQueue(data, compare);\n\n this.data = data || [];\n this.length = this.data.length;\n this.compare = compare || defaultCompare;\n\n if (this.length > 0) {\n for (var i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nTinyQueue.prototype = {\n\n push: function (item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n },\n\n pop: function () {\n if (this.length === 0) return undefined;\n\n var top = this.data[0];\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = this.data[this.length];\n this._down(0);\n }\n this.data.pop();\n\n return top;\n },\n\n peek: function () {\n return this.data[0];\n },\n\n _up: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var item = data[pos];\n\n while (pos > 0) {\n var parent = (pos - 1) >> 1;\n var current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n },\n\n _down: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var halfLength = this.length >> 1;\n var item = data[pos];\n\n while (pos < halfLength) {\n var left = (pos << 1) + 1;\n var right = left + 1;\n var best = data[left];\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n};\n","import { TRACK_HEIGHT } from \"../constants\";\nimport * as Selectors from \"../selectors\";\n\nimport { clamp, sort, findLastIndex } from \"../utils\";\nimport {\n STOP,\n REMOVE_TRACKS,\n REMOVE_ALL_TRACKS,\n REVERSE_LIST,\n RANDOMIZE_LIST,\n SET_TRACK_ORDER,\n SET_PLAYLIST_SCROLL_POSITION,\n DRAG_SELECTED,\n SELECT_ALL,\n SELECT_ZERO,\n INVERT_SELECTION,\n} from \"../actionTypes\";\nimport { Thunk, Action } from \"../types\";\n\nexport function cropPlaylist(): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n if (Selectors.getSelectedTrackObjects(state).length === 0) {\n return;\n }\n const selectedTrackIds = Selectors.getSelectedTrackIds(state);\n const {\n playlist: { trackOrder },\n } = state;\n dispatch({\n type: REMOVE_TRACKS,\n // @ts-ignore The keys are numbers, but TypeScript does not trust us.\n // https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\n ids: trackOrder.filter((id) => !selectedTrackIds.has(id)),\n });\n };\n}\n\nexport function removeSelectedTracks(): Thunk {\n return (dispatch, getState) => {\n dispatch({\n type: REMOVE_TRACKS,\n // @ts-ignore The keys are numbers, but TypeScript does not trust us.\n // https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\n ids: Array.from(Selectors.getSelectedTrackIds(getState())),\n });\n };\n}\n\nexport function removeAllTracks(): Thunk {\n return (dispatch) => {\n // It's a bit funky that we need to do both of these.\n dispatch({ type: STOP });\n dispatch({ type: REMOVE_ALL_TRACKS });\n };\n}\n\nexport function reverseList(): Action {\n return { type: REVERSE_LIST };\n}\n\nexport function randomizeList(): Action {\n return { type: RANDOMIZE_LIST };\n}\n\nexport function sortListByTitle(): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const tracks = Selectors.getTracks(state);\n const trackOrder = sort(Selectors.getTrackOrder(state), (i) =>\n `${tracks[i].title}`.toLowerCase()\n );\n return dispatch({ type: SET_TRACK_ORDER, trackOrder });\n };\n}\n\nexport function setPlaylistScrollPosition(position: number): Action {\n return { type: SET_PLAYLIST_SCROLL_POSITION, position };\n}\n\nexport function scrollNTracks(n: number): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const overflow = Selectors.getOverflowTrackCount(state);\n const currentOffset = Selectors.getScrollOffset(state);\n const position = overflow ? clamp((currentOffset + n) / overflow, 0, 1) : 0;\n return dispatch({\n type: SET_PLAYLIST_SCROLL_POSITION,\n position: position * 100,\n });\n };\n}\n\nexport function scrollPlaylistByDelta(e: WheelEvent): Thunk {\n e.preventDefault();\n return (dispatch, getState) => {\n const state = getState();\n if (Selectors.getOverflowTrackCount(state)) {\n e.stopPropagation();\n }\n const totalPixelHeight = state.playlist.trackOrder.length * TRACK_HEIGHT;\n const percentDelta = (e.deltaY / totalPixelHeight) * 100;\n dispatch({\n type: SET_PLAYLIST_SCROLL_POSITION,\n position: clamp(\n state.display.playlistScrollPosition + percentDelta,\n 0,\n 100\n ),\n });\n };\n}\n\nexport function scrollUpFourTracks(): Thunk {\n return scrollNTracks(-4);\n}\n\nexport function scrollDownFourTracks(): Thunk {\n return scrollNTracks(4);\n}\n\nexport function dragSelected(offset: number): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const tracks = Selectors.getTracks(state);\n const trackOrder = Selectors.getTrackOrder(state);\n const selectedIds = Selectors.getSelectedTrackIds(state);\n const firstSelected = trackOrder.findIndex(\n (trackId) => tracks[trackId] && selectedIds.has(trackId)\n );\n if (firstSelected === -1) {\n return;\n }\n const lastSelected = findLastIndex(\n trackOrder,\n (trackId) => tracks[trackId] && selectedIds.has(trackId)\n );\n if (lastSelected === -1) {\n throw new Error(\"We found a first selected, but not a last selected.\");\n }\n // Ensure we don't try to drag off either end.\n const min = -firstSelected;\n const max = trackOrder.length - 1 - lastSelected;\n const normalizedOffset = clamp(offset, min, max);\n if (normalizedOffset !== 0) {\n dispatch({ type: DRAG_SELECTED, offset: normalizedOffset });\n }\n };\n}\n\nexport function invertSelection(): Action {\n return { type: INVERT_SELECTION };\n}\nexport function selectZero(): Action {\n return { type: SELECT_ZERO };\n}\n\nexport function selectAll(): Action {\n return { type: SELECT_ALL };\n}\n","import { parser, creator } from \"winamp-eqf\";\nimport { BANDS, LOAD_STYLE } from \"../constants\";\n\nimport * as Utils from \"../utils\";\n\nimport {\n promptForFileReferences,\n genArrayBufferFromFileReference,\n genMediaDuration,\n genMediaTags,\n} from \"../fileUtils\";\nimport skinParser from \"../skinParser\";\nimport {\n getTracks,\n getUserTracks,\n getTrackIsVisibleFunction,\n getEqfData,\n getPlaylistURL,\n} from \"../selectors\";\n\nimport {\n ADD_TRACK_FROM_URL,\n PLAY_TRACK,\n BUFFER_TRACK,\n SET_MEDIA_TAGS,\n SET_MEDIA_DURATION,\n MEDIA_TAG_REQUEST_INITIALIZED,\n MEDIA_TAG_REQUEST_FAILED,\n SET_SKIN_DATA,\n LOADED,\n LOADING,\n} from \"../actionTypes\";\nimport LoadQueue from \"../loadQueue\";\n\nimport { removeAllTracks } from \"./playlist\";\nimport { setPreamp, setEqBand } from \"./equalizer\";\nimport {\n LoadStyle,\n Thunk,\n Track,\n EqfPreset,\n SkinData,\n WindowId,\n} from \"../types\";\n\n// Lower is better\nconst DURATION_VISIBLE_PRIORITY = 5;\nconst META_DATA_VISIBLE_PRIORITY = 10;\nconst DURATION_PRIORITY = 15;\nconst META_DATA_PRIORITY = 20;\n\nconst loadQueue = new LoadQueue({ threads: 4 });\n\nexport function addTracksFromReferences(\n fileReferences: FileList,\n loadStyle: LoadStyle,\n atIndex: number | undefined\n): Thunk {\n const tracks: Track[] = Array.from(fileReferences).map((file) => ({\n blob: file,\n defaultName: file.name,\n }));\n return loadMediaFiles(tracks, loadStyle, atIndex);\n}\n\nconst SKIN_FILENAME_MATCHER = new RegExp(\"(wsz|zip)$\", \"i\");\nconst EQF_FILENAME_MATCHER = new RegExp(\"eqf$\", \"i\");\nexport function loadFilesFromReferences(\n fileReferences: FileList,\n loadStyle: LoadStyle = LOAD_STYLE.PLAY,\n atIndex: number | undefined = undefined\n): Thunk {\n return (dispatch) => {\n if (fileReferences.length < 1) {\n return;\n } else if (fileReferences.length === 1) {\n const fileReference = fileReferences[0];\n if (SKIN_FILENAME_MATCHER.test(fileReference.name)) {\n dispatch(setSkinFromBlob(fileReference));\n return;\n } else if (EQF_FILENAME_MATCHER.test(fileReference.name)) {\n dispatch(setEqFromFileReference(fileReference));\n return;\n }\n }\n dispatch(addTracksFromReferences(fileReferences, loadStyle, atIndex));\n };\n}\n\nexport function setSkinFromBlob(blob: Blob | Promise<Blob>): Thunk {\n return async (dispatch, getState, { requireJSZip }) => {\n if (!requireJSZip) {\n alert(\"Webamp has not been configured to support custom skins.\");\n return;\n }\n dispatch({ type: LOADING });\n let JSZip;\n try {\n JSZip = await requireJSZip();\n } catch (e) {\n console.error(e);\n dispatch({ type: LOADED });\n alert(\"Failed to load the skin parser.\");\n return;\n }\n try {\n const skinData = await skinParser(blob, JSZip);\n dispatch({\n type: SET_SKIN_DATA,\n data: {\n skinImages: skinData.images,\n skinColors: skinData.colors,\n skinPlaylistStyle: skinData.playlistStyle,\n skinCursors: skinData.cursors,\n skinRegion: skinData.region,\n skinGenLetterWidths: skinData.genLetterWidths,\n skinGenExColors: skinData.genExColors,\n } as SkinData,\n });\n } catch (e) {\n console.error(e);\n dispatch({ type: LOADED });\n alert(`Failed to parse skin`);\n }\n };\n}\n\nexport function setSkinFromUrl(url: string): Thunk {\n return async (dispatch) => {\n dispatch({ type: LOADING });\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n dispatch(setSkinFromBlob(response.blob()));\n } catch (e) {\n console.error(e);\n dispatch({ type: LOADED });\n alert(`Failed to download skin from ${url}`);\n }\n };\n}\n\n// This function is private, since Winamp consumers can provide means for\n// opening files via other methods. Only use the file type specific\n// versions below, since they can defer to the user-defined behavior.\nfunction _openFileDialog(\n accept: string | null,\n expectedType: \"SKIN\" | \"MEDIA\" | \"EQ\"\n): Thunk {\n return async (dispatch) => {\n const fileReferences = await promptForFileReferences({ accept });\n dispatch({\n type: \"OPENED_FILES\",\n expectedType,\n count: fileReferences.length,\n firstFileName: fileReferences[0]?.name,\n });\n dispatch(loadFilesFromReferences(fileReferences));\n };\n}\n\nexport function openEqfFileDialog(): Thunk {\n return _openFileDialog(\".eqf\", \"EQ\");\n}\n\nexport function openMediaFileDialog(): Thunk {\n return _openFileDialog(null, \"MEDIA\");\n}\n\nexport function openSkinFileDialog() {\n return _openFileDialog(\".zip, .wsz\", \"SKIN\");\n}\n\nexport function fetchMediaDuration(url: string, id: number): Thunk {\n return (dispatch, getState) => {\n loadQueue.push(\n async () => {\n try {\n const duration = await genMediaDuration(url);\n dispatch({ type: SET_MEDIA_DURATION, duration, id });\n } catch (e) {\n // TODO: Should we update the state to indicate that we don't know the length?\n }\n },\n\n () => {\n const trackIsVisible = getTrackIsVisibleFunction(getState());\n return trackIsVisible(id)\n ? DURATION_VISIBLE_PRIORITY\n : DURATION_PRIORITY;\n }\n );\n };\n}\n\nexport function loadMedia(\n e: React.DragEvent<HTMLDivElement>,\n loadStyle: LoadStyle = LOAD_STYLE.NONE,\n atIndex = 0\n): Thunk {\n const { files } = e.dataTransfer;\n return async (dispatch, getState, { handleTrackDropEvent }) => {\n if (handleTrackDropEvent) {\n const tracks = await handleTrackDropEvent(e);\n\n if (tracks != null) {\n dispatch(loadMediaFiles(tracks, loadStyle, atIndex));\n return;\n }\n }\n dispatch(loadFilesFromReferences(files, loadStyle, atIndex));\n };\n}\n\nexport function loadMediaFiles(\n tracks: Track[],\n loadStyle: LoadStyle = LOAD_STYLE.NONE,\n atIndex = 0\n): Thunk {\n return (dispatch) => {\n if (loadStyle === LOAD_STYLE.PLAY) {\n // I'm the worst. It just so happens that in every case that we autoPlay,\n // we should also clear all tracks.\n dispatch(removeAllTracks());\n }\n tracks.forEach((track, i) => {\n const priority = i === 0 ? loadStyle : LOAD_STYLE.NONE;\n dispatch(loadMediaFile(track, priority, atIndex + i));\n });\n };\n}\n\nexport function loadMediaFile(\n track: Track,\n priority: LoadStyle = LOAD_STYLE.NONE,\n atIndex = 0\n): Thunk {\n return (dispatch) => {\n const id = Utils.uniqueId();\n const { defaultName, metaData, duration } = track;\n let canonicalUrl: string;\n if (\"url\" in track) {\n canonicalUrl = track.url.toString();\n } else if (\"blob\" in track) {\n canonicalUrl = URL.createObjectURL(track.blob);\n } else {\n throw new Error(\"Expected track to have either a blob or a url\");\n }\n\n dispatch({\n type: ADD_TRACK_FROM_URL,\n url: canonicalUrl,\n duration: track.duration,\n defaultName,\n id,\n atIndex,\n });\n switch (priority) {\n case LOAD_STYLE.BUFFER:\n dispatch({ type: BUFFER_TRACK, id });\n break;\n case LOAD_STYLE.PLAY:\n dispatch({ type: PLAY_TRACK, id });\n break;\n case LOAD_STYLE.NONE:\n default:\n // If we're not going to load this right away,\n // we should set duration on our own\n if (duration != null) {\n dispatch({ type: SET_MEDIA_DURATION, duration, id });\n } else {\n dispatch(fetchMediaDuration(canonicalUrl, id));\n }\n }\n\n if (metaData != null) {\n const { artist, title, album } = metaData;\n dispatch({\n type: SET_MEDIA_TAGS,\n artist,\n title,\n album,\n // For now, we lie about these next three things.\n // TODO: Ideally we would leave these as null and force a media data\n // fetch when the user starts playing.\n sampleRate: 44000,\n bitrate: 192000,\n numberOfChannels: 2,\n id,\n });\n } else if (\"blob\" in track) {\n // Blobs can be loaded quickly\n dispatch(fetchMediaTags(track.blob, id));\n } else {\n dispatch(queueFetchingMediaTags(id));\n }\n };\n}\n\nfunction queueFetchingMediaTags(id: number): Thunk {\n return (dispatch, getState) => {\n const track = getTracks(getState())[id];\n loadQueue.push(\n () => dispatch(fetchMediaTags(track.url, id)),\n () => {\n const trackIsVisible = getTrackIsVisibleFunction(getState());\n return trackIsVisible(id)\n ? META_DATA_VISIBLE_PRIORITY\n : META_DATA_PRIORITY;\n }\n );\n };\n}\n\nexport function fetchMediaTags(file: string | Blob, id: number): Thunk {\n return async (dispatch, getState, { requireMusicMetadata }) => {\n dispatch({ type: MEDIA_TAG_REQUEST_INITIALIZED, id });\n\n try {\n const metadata = await genMediaTags(file, await requireMusicMetadata());\n // There's more data here, but we don't have a use for it yet:\n const { artist, title, album, picture } = metadata.common;\n const { numberOfChannels, bitrate, sampleRate } = metadata.format;\n let albumArtUrl = null;\n if (picture && picture.length >= 1) {\n const byteArray = new Uint8Array(picture[0].data);\n const blob = new Blob([byteArray], { type: picture[0].format });\n albumArtUrl = URL.createObjectURL(blob);\n }\n dispatch({\n type: SET_MEDIA_TAGS,\n artist: artist ? artist : \"\",\n title: title ? title : \"\",\n album,\n albumArtUrl,\n numberOfChannels,\n bitrate,\n sampleRate,\n id,\n });\n } catch (e) {\n dispatch({ type: MEDIA_TAG_REQUEST_FAILED, id });\n }\n };\n}\n\nexport function setEqFromFileReference(fileReference: File): Thunk {\n return async (dispatch) => {\n const arrayBuffer = await genArrayBufferFromFileReference(fileReference);\n const eqf = parser(arrayBuffer);\n const preset: EqfPreset = eqf.presets[0];\n dispatch(setEqFromObject(preset));\n };\n}\n\nexport function setEqFromObject(preset: EqfPreset): Thunk {\n return (dispatch) => {\n dispatch(setPreamp(Utils.normalizeEqBand(preset.preamp)));\n BANDS.forEach((band) => {\n // @ts-ignore band and EqfPreset align\n dispatch(setEqBand(band, Utils.normalizeEqBand(preset[`hz${band}`])));\n });\n };\n}\n\nexport function downloadPreset(): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const data = getEqfData(state);\n const arrayBuffer = creator(data);\n const base64 = Utils.base64FromArrayBuffer(arrayBuffer);\n const dataURI = `data:application/zip;base64,${base64}`;\n Utils.downloadURI(dataURI, \"entry.eqf\");\n };\n}\n\nexport function downloadHtmlPlaylist(): Thunk {\n return (dispatch, getState) => {\n const uri = getPlaylistURL(getState());\n Utils.downloadURI(uri, \"Winamp Playlist.html\");\n };\n}\n\nlet el: HTMLInputElement | null = document.createElement(\"input\");\nel.type = \"file\";\n// @ts-ingore\nconst DIR_SUPPORT =\n // @ts-ignore\n typeof el.webkitdirectory !== \"undefined\" ||\n // @ts-ignore\n typeof el.mozdirectory !== \"undefined\" ||\n // @ts-ignore\n typeof el.directory !== \"undefined\";\n// Release our reference\nel = null;\n\nexport function addFilesAtIndex(nextIndex: number): Thunk {\n return async (dispatch) => {\n const fileReferences = await promptForFileReferences();\n dispatch(\n addTracksFromReferences(fileReferences, LOAD_STYLE.NONE, nextIndex)\n );\n };\n}\n\nexport function addDirAtIndex(nextIndex: number): Thunk {\n return async (dispatch) => {\n if (!DIR_SUPPORT) {\n alert(\"Not supported in your browser\");\n return;\n }\n const fileReferences = await promptForFileReferences({ directory: true });\n dispatch(\n addTracksFromReferences(fileReferences, LOAD_STYLE.NONE, nextIndex)\n );\n };\n}\n\nexport function addFilesFromUrl(atIndex = 0): Thunk {\n return async (dispatch, getState, { handleAddUrlEvent }) => {\n if (handleAddUrlEvent) {\n const tracks = await handleAddUrlEvent();\n\n if (tracks != null) {\n dispatch(loadMediaFiles(tracks, LOAD_STYLE.NONE, atIndex));\n return;\n }\n } else {\n alert(\"Not supported in Webamp\");\n }\n };\n}\n\nexport function addFilesFromList(): Thunk {\n return async (dispatch, getState, { handleLoadListEvent }) => {\n if (handleLoadListEvent) {\n const tracks = await handleLoadListEvent();\n\n if (tracks != null) {\n dispatch(removeAllTracks());\n\n dispatch(loadMediaFiles(tracks, LOAD_STYLE.NONE, 0));\n return;\n }\n } else {\n alert(\"Not supported in Webamp\");\n }\n };\n}\n\nexport function saveFilesToList(): Thunk {\n return (dispatch, getState, { handleSaveListEvent }) => {\n if (handleSaveListEvent) {\n handleSaveListEvent(getUserTracks(getState()));\n } else {\n alert(\"Not supported in Webamp\");\n }\n };\n}\n\nexport function droppedFiles(e: React.DragEvent, windowId: WindowId): Thunk {\n return (dispatch) =>\n dispatch({\n type: \"DROPPED_FILES\",\n count: e.dataTransfer.files.length,\n firstFileName: e.dataTransfer.files[0]?.name,\n windowId,\n });\n}\n","import invariant from \"invariant\";\nimport TinyQueue from \"tinyqueue\";\n\n// Push promises onto a queue with a priority.\n// Run a given number of jobs in parallel\n// Useful for prioritizing network requests\nexport default class LoadQueue {\n constructor({ threads }) {\n // TODO: Consider not running items with zero priority\n // Priority is a function so that items can change their priority between\n // when their priority is evaluated.\n // For example, we might add a track to the playlist and then scroll to/away\n // from it before it gets processed.\n this._queue = new TinyQueue([], (a, b) => a.priority() - b.priority());\n this._availableThreads = threads;\n }\n\n push(task, priority) {\n const t = { task, priority };\n this._queue.push(t);\n // Wait until the next event loop to pick a task to run. This way, we can\n // enqueue multiple items in an event loop, and be sure they will be run in\n // priority order.\n setTimeout(() => {\n this._run();\n }, 0);\n return () => {\n // TODO: Could return a boolean representing if the task has already been\n // kicked off.\n this._queue = this._queue.filter((t1) => t1 !== t);\n };\n }\n\n _run() {\n while (this._availableThreads > 0) {\n if (this._queue.length === 0) {\n return;\n }\n this._availableThreads--;\n const t = this._queue.pop();\n const promise = t.task();\n invariant(\n typeof promise.then === \"function\",\n `LoadQueue only supports loading Promises. Got ${promise}`\n );\n promise.then(() => {\n this._availableThreads++;\n this._run();\n });\n }\n }\n}\n","import {\n GOT_BUTTERCHURN_PRESETS,\n GOT_BUTTERCHURN,\n SELECT_PRESET_AT_INDEX,\n RESOLVE_PRESET_AT_INDEX,\n PRESET_REQUESTED,\n TOGGLE_RANDOMIZE_PRESETS,\n TOGGLE_PRESET_CYCLING,\n SCHEDULE_MILKDROP_MESSAGE,\n} from \"../actionTypes\";\nimport * as Selectors from \"../selectors\";\nimport {\n TransitionType,\n Preset,\n ButterchurnOptions,\n StatePreset,\n Thunk,\n Action,\n} from \"../types\";\nimport * as FileUtils from \"../fileUtils\";\n\nfunction normalizePresetTypes(preset: Preset): StatePreset {\n const { name } = preset;\n if (\"butterchurnPresetObject\" in preset) {\n return {\n type: \"RESOLVED\",\n name,\n preset: preset.butterchurnPresetObject,\n };\n } else if (\"getButterchrunPresetObject\" in preset) {\n return {\n type: \"UNRESOLVED\",\n name,\n getPreset: preset.getButterchrunPresetObject,\n };\n } else if (\"butterchurnPresetUrl\" in preset) {\n return {\n type: \"UNRESOLVED\",\n name,\n getPreset: async () => {\n const resp = await fetch(preset.butterchurnPresetUrl);\n return resp.json();\n },\n };\n }\n throw new Error(\"Invalid preset object\");\n}\n\nexport function initializePresets(presetOptions: ButterchurnOptions): Thunk {\n return async (dispatch) => {\n const { getPresets, importButterchurn } = presetOptions;\n importButterchurn().then((butterchurn) => {\n dispatch({ type: GOT_BUTTERCHURN, butterchurn: butterchurn.default });\n });\n\n const presets = await getPresets();\n const normalizePresets = presets.map(normalizePresetTypes);\n dispatch(loadPresets(normalizePresets));\n };\n}\n\nexport function loadPresets(presets: StatePreset[]): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const presetsLength = state.milkdrop.presets.length;\n dispatch({ type: GOT_BUTTERCHURN_PRESETS, presets });\n if (presetsLength === 0 && Selectors.getRandomizePresets(state)) {\n dispatch(selectRandomPreset());\n } else {\n dispatch(\n requestPresetAtIndex(presetsLength, TransitionType.IMMEDIATE, true)\n );\n }\n };\n}\n\nexport function appendPresetFileList(fileList: FileList): Thunk {\n return async (dispatch, getState, { convertPreset }) => {\n const presets: StatePreset[] = Array.from(fileList)\n .map((file) => {\n const JSON_EXT = \".json\";\n const MILK_EXT = \".milk\";\n const filename = file.name.toLowerCase();\n if (filename.endsWith(MILK_EXT)) {\n if (convertPreset == null) {\n throw new Error(\"Invalid type\");\n }\n return {\n type: \"UNRESOLVED\",\n name: file.name.slice(0, file.name.length - MILK_EXT.length),\n getPreset: () => convertPreset(file),\n } as StatePreset;\n } else if (filename.endsWith(JSON_EXT)) {\n return {\n type: \"UNRESOLVED\",\n name: file.name.slice(0, file.name.length - JSON_EXT.length),\n getPreset: async () => {\n const str = await FileUtils.genStringFromFileReference(file);\n // TODO: How should we handle the case where json parsing fails?\n return JSON.parse(str);\n },\n } as StatePreset;\n }\n console.error(\"Invalid type preset when loading directory\");\n\n return null as never;\n })\n .filter(Boolean);\n dispatch(loadPresets(presets));\n };\n}\n\nexport function selectNextPreset(\n transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n if (Selectors.getRandomizePresets(state)) {\n return dispatch(selectRandomPreset(transitionType));\n }\n const currentPresetIndex = Selectors.getCurrentPresetIndex(state);\n if (currentPresetIndex == null) {\n return;\n }\n const nextPresetIndex = currentPresetIndex + 1;\n dispatch(requestPresetAtIndex(nextPresetIndex, transitionType, true));\n };\n}\n\nexport function selectPreviousPreset(\n transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const { presetHistory } = state.milkdrop;\n if (presetHistory.length < 1) {\n return;\n }\n // Awkward. We do -2 becuase the the last track is the current track.\n const lastPresetIndex = presetHistory[presetHistory.length - 2];\n\n dispatch(requestPresetAtIndex(lastPresetIndex, transitionType, false));\n };\n}\n\nexport function selectRandomPreset(\n transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n // TODO: Make this a selector.\n const randomIndex = Math.floor(\n Math.random() * state.milkdrop.presets.length\n );\n dispatch(requestPresetAtIndex(randomIndex, transitionType, true));\n };\n}\n\n// TODO: Technically there's a race here. If you request two presets in a row, the\n// first one may resolve before the second.\nexport function requestPresetAtIndex(\n index: number,\n transitionType: TransitionType,\n addToHistory: boolean\n): Thunk {\n return async (dispatch, getState) => {\n const state = getState();\n const preset = state.milkdrop.presets[index];\n if (preset == null) {\n // Index might be out of range.\n return;\n }\n dispatch({ type: PRESET_REQUESTED, index, addToHistory });\n switch (preset.type) {\n case \"RESOLVED\":\n dispatch({ type: SELECT_PRESET_AT_INDEX, index, transitionType });\n return;\n case \"UNRESOLVED\":\n const json = await preset.getPreset();\n // TODO: Ensure that this works correctly even if requests resolve out of order\n dispatch({ type: RESOLVE_PRESET_AT_INDEX, index, json });\n dispatch({ type: SELECT_PRESET_AT_INDEX, index, transitionType });\n return;\n }\n };\n}\n\nexport function handlePresetDrop(e: React.DragEvent): Thunk {\n return appendPresetFileList(e.dataTransfer.files);\n}\n\nexport function toggleRandomizePresets(): Action {\n return { type: TOGGLE_RANDOMIZE_PRESETS };\n}\n\nexport function togglePresetCycling(): Action {\n return { type: TOGGLE_PRESET_CYCLING };\n}\n\nexport function scheduleMilkdropMessage(message: string): Action {\n return { type: SCHEDULE_MILKDROP_MESSAGE, message };\n}\n","import {\n CLOSE_WINAMP,\n OPEN_WINAMP,\n STOP,\n TOGGLE_VISUALIZER_STYLE,\n CLOSE_REQUESTED,\n MINIMIZE_WINAMP,\n SET_FOCUS,\n UNSET_FOCUS,\n LOAD_SERIALIZED_STATE,\n LOAD_DEFAULT_SKIN,\n SET_MILKDROP_DESKTOP,\n SET_MILKDROP_FULLSCREEN,\n TOGGLE_PRESET_OVERLAY,\n STEP_MARQUEE,\n SET_BAND_FOCUS,\n} from \"../actionTypes\";\nimport { WINDOWS } from \"../constants\";\nimport { Thunk, Action, Slider } from \"../types\";\nimport { SerializedStateV1 } from \"../serializedStates/v1Types\";\nimport * as Selectors from \"../selectors\";\nimport { ensureWindowsAreOnScreen, setFocusedWindow } from \"./windows\";\n\nexport {\n toggleDoubleSizeMode,\n toggleEqualizerShadeMode,\n togglePlaylistShadeMode,\n closeWindow,\n setWindowSize,\n toggleWindow,\n updateWindowPositions,\n toggleMainWindowShadeMode,\n centerWindowsInContainer,\n centerWindowsInView,\n resetWindowSizes,\n browserWindowSizeChanged,\n ensureWindowsAreOnScreen,\n stackWindows,\n toggleLlamaMode,\n setFocusedWindow,\n setWindowLayout,\n} from \"./windows\";\nexport {\n play,\n pause,\n stop,\n nextN,\n next,\n previous,\n seekToTime,\n seekForward,\n seekBackward,\n setVolume,\n playTrack,\n playTrackNow,\n adjustVolume,\n scrollVolume,\n setBalance,\n toggleRepeat,\n toggleShuffle,\n toggleTimeMode,\n} from \"./media\";\nexport {\n setEqBand,\n setEqToMax,\n setEqToMid,\n setEqToMin,\n setPreamp,\n toggleEq,\n toggleEqAuto,\n} from \"./equalizer\";\nexport {\n addTracksFromReferences,\n loadFilesFromReferences,\n setSkinFromUrl,\n openEqfFileDialog,\n openMediaFileDialog,\n openSkinFileDialog,\n fetchMediaDuration,\n loadMedia,\n loadMediaFiles,\n loadMediaFile,\n fetchMediaTags,\n setEqFromFileReference,\n downloadPreset,\n setEqFromObject,\n downloadHtmlPlaylist,\n addDirAtIndex,\n addFilesAtIndex,\n addFilesFromUrl,\n addFilesFromList,\n saveFilesToList,\n droppedFiles,\n} from \"./files\";\nexport {\n cropPlaylist,\n removeSelectedTracks,\n removeAllTracks,\n reverseList,\n randomizeList,\n sortListByTitle,\n setPlaylistScrollPosition,\n scrollNTracks,\n scrollPlaylistByDelta,\n scrollUpFourTracks,\n scrollDownFourTracks,\n dragSelected,\n selectAll,\n selectZero,\n invertSelection,\n} from \"./playlist\";\nexport {\n initializePresets,\n requestPresetAtIndex,\n selectRandomPreset,\n selectNextPreset,\n selectPreviousPreset,\n appendPresetFileList,\n handlePresetDrop,\n loadPresets,\n toggleRandomizePresets,\n togglePresetCycling,\n scheduleMilkdropMessage,\n} from \"./milkdrop\";\n\nexport function close(): Thunk {\n return (dispatch) => {\n // TODO: This could probably be improved by adding a \"PREVENT_CLOSE\" action\n // or something, but this works okay for now.\n let defaultPrevented = false;\n const cancel = () => {\n defaultPrevented = true;\n };\n dispatch({ type: CLOSE_REQUESTED, cancel });\n if (!defaultPrevented) {\n dispatch({ type: STOP });\n dispatch({ type: CLOSE_WINAMP });\n }\n };\n}\n\nexport function open(): Action {\n return { type: OPEN_WINAMP };\n}\n\nexport function toggleVisualizerStyle(): Action {\n return { type: TOGGLE_VISUALIZER_STYLE };\n}\n\nexport function minimize(): Action {\n return { type: MINIMIZE_WINAMP };\n}\n\nexport function setFocus(input: string): Action {\n return { type: SET_FOCUS, input };\n}\n\nexport function unsetFocus(): Action {\n return { type: UNSET_FOCUS };\n}\n\nexport function focusBand(band: Slider): Action {\n return { type: SET_BAND_FOCUS, input: \"eq\", bandFocused: band };\n}\n\nexport function loadSerializedState(\n // In the future this type should be the union of all versioned types.\n serializedState: SerializedStateV1\n): Thunk {\n return (dispatch) => {\n dispatch({ type: LOAD_SERIALIZED_STATE, serializedState });\n dispatch(ensureWindowsAreOnScreen());\n };\n}\n\nexport function loadDefaultSkin(): Action {\n return { type: LOAD_DEFAULT_SKIN };\n}\n\nexport function toggleMilkdropDesktop(): Thunk {\n return (dispatch, getState) => {\n if (Selectors.getMilkdropDesktopEnabled(getState())) {\n dispatch({ type: SET_MILKDROP_DESKTOP, enabled: false });\n } else {\n dispatch({ type: SET_MILKDROP_DESKTOP, enabled: true });\n }\n };\n}\n\nexport function setMilkdropFullscreen(enabled: boolean): Action {\n return { type: SET_MILKDROP_FULLSCREEN, enabled };\n}\nexport function toggleMilkdropFullscreen(): Thunk {\n return (dispatch, getState) => {\n dispatch(\n setMilkdropFullscreen(!Selectors.getMilkdropFullscreenEnabled(getState()))\n );\n };\n}\n\nexport function togglePresetOverlay(): Thunk {\n return (dispatch, getState) => {\n if (Selectors.getPresetOverlayOpen(getState())) {\n dispatch(setFocusedWindow(WINDOWS.MILKDROP));\n }\n\n dispatch({ type: TOGGLE_PRESET_OVERLAY });\n };\n}\n\nexport function stepMarquee(): Action {\n return { type: STEP_MARQUEE };\n}\n","import Media from \"./media\";\nimport {\n IS_PLAYING,\n PAUSE,\n PLAY,\n SEEK_TO_PERCENT_COMPLETE,\n SET_BAND_VALUE,\n SET_BALANCE,\n SET_MEDIA,\n SET_VOLUME,\n START_WORKING,\n STOP,\n STOP_WORKING,\n UPDATE_TIME_ELAPSED,\n SET_EQ_OFF,\n SET_EQ_ON,\n PLAY_TRACK,\n BUFFER_TRACK,\n LOAD_SERIALIZED_STATE,\n} from \"./actionTypes\";\nimport { next as nextTrack } from \"./actionCreators\";\nimport * as Selectors from \"./selectors\";\nimport { MiddlewareStore, Action, Dispatch } from \"./types\";\nimport { objectForEach } from \"./utils\";\n\nexport default (media: Media) => (store: MiddlewareStore) => {\n const {\n media: { volume, balance },\n equalizer: { sliders },\n } = store.getState();\n\n // Ensure the default state is the canonical value.\n media.setVolume(volume);\n media.setBalance(balance);\n media.setPreamp(sliders.preamp);\n // TODO: Ensure other values like bands are in sync\n\n media.on(\"timeupdate\", () => {\n store.dispatch({\n type: UPDATE_TIME_ELAPSED,\n elapsed: media.timeElapsed(),\n });\n });\n\n media.on(\"ended\", () => {\n store.dispatch(nextTrack());\n });\n\n media.on(\"playing\", () => {\n store.dispatch({ type: IS_PLAYING });\n });\n\n media.on(\"waiting\", () => {\n store.dispatch({ type: START_WORKING });\n });\n\n media.on(\"stopWaiting\", () => {\n store.dispatch({ type: STOP_WORKING });\n });\n\n media.on(\"fileLoaded\", () => {\n const id = Selectors.getCurrentTrackId(store.getState());\n if (id == null) {\n // Attempted to set the metadata for a track that was already removed.\n // Really, the media should have been stopped when the track was removed.\n return;\n }\n store.dispatch({\n id,\n type: SET_MEDIA,\n kbps: \"128\",\n khz: \"44\",\n channels: 2,\n length: media.duration(),\n });\n });\n\n return (next: Dispatch) => (action: Action) => {\n const returnValue = next(action);\n const state = store.getState();\n switch (action.type) {\n case PLAY:\n media.play();\n break;\n case PAUSE:\n media.pause();\n break;\n case STOP:\n media.stop();\n break;\n case SET_VOLUME:\n media.setVolume(Selectors.getVolume(state));\n break;\n case SET_BALANCE:\n media.setBalance(Selectors.getBalance(state));\n break;\n case SEEK_TO_PERCENT_COMPLETE:\n media.seekToPercentComplete(action.percent);\n break;\n case PLAY_TRACK: {\n const url = Selectors.getTrackUrl(store.getState())(action.id);\n if (url != null) {\n media.loadFromUrl(url, true);\n }\n break;\n }\n case BUFFER_TRACK: {\n const url = Selectors.getTrackUrl(store.getState())(action.id);\n if (url != null) {\n media.loadFromUrl(url, false);\n }\n break;\n }\n case SET_BAND_VALUE:\n if (action.band === \"preamp\") {\n media.setPreamp(action.value);\n } else {\n media.setEqBand(action.band, action.value);\n }\n break;\n case SET_EQ_OFF:\n media.disableEq();\n break;\n case SET_EQ_ON:\n media.enableEq();\n break;\n case LOAD_SERIALIZED_STATE: {\n // Set ALL THE THINGS!\n if (Selectors.getEqualizerEnabled(state)) {\n media.enableEq();\n } else {\n media.disableEq();\n }\n media.setVolume(Selectors.getVolume(state));\n media.setBalance(Selectors.getBalance(state));\n objectForEach(state.equalizer.sliders, (value, slider) => {\n if (slider === \"preamp\") {\n media.setPreamp(value);\n } else {\n // @ts-ignore I don't know how to teach TypeScript about objects\n // that use Slider as keys\n media.setEqBand(slider, value);\n }\n });\n break;\n }\n }\n return returnValue;\n };\n};\n","import {\n legacy_createStore as createStore,\n applyMiddleware,\n Middleware as ReduxMiddleware,\n} from \"redux\";\nimport thunk from \"redux-thunk\";\nimport { composeWithDevTools } from \"redux-devtools-extension\";\nimport reducer from \"./reducers\";\nimport mediaMiddleware from \"./mediaMiddleware\";\nimport { merge } from \"./utils\";\nimport { UPDATE_TIME_ELAPSED, STEP_MARQUEE } from \"./actionTypes\";\nimport Media from \"./media\";\nimport Emitter from \"./emitter\";\nimport {\n Extras,\n Dispatch,\n Action,\n PartialState,\n Middleware,\n Store,\n} from \"./types\";\n\n// TODO: Move to demo\nconst compose = composeWithDevTools({\n actionsBlacklist: [UPDATE_TIME_ELAPSED, STEP_MARQUEE],\n});\n\nexport default function createWebampStore(\n media: Media,\n actionEmitter: Emitter,\n customMiddlewares: Middleware[] = [],\n stateOverrides: PartialState | undefined,\n extras: Extras\n): Store {\n let initialState;\n if (stateOverrides) {\n initialState = merge(\n reducer(undefined, { type: \"@@init\" }),\n stateOverrides\n );\n }\n\n const emitterMiddleware = () => (next: Dispatch) => (action: Action) => {\n actionEmitter.trigger(action.type, action);\n return next(action);\n };\n\n const middlewares: Middleware[] = [\n thunk.withExtraArgument(extras),\n mediaMiddleware(media),\n emitterMiddleware,\n ...customMiddlewares,\n ];\n\n // @ts-expect-error Typing of these is too hard to get right, so we cheat\n const coercedMiddlewares: ReduxMiddleware[] = middlewares;\n\n const enhancer = compose(applyMiddleware(...coercedMiddlewares));\n\n return createStore(reducer, initialState, enhancer);\n}\n","var key = {\r\n fullscreenEnabled: 0,\r\n fullscreenElement: 1,\r\n requestFullscreen: 2,\r\n exitFullscreen: 3,\r\n fullscreenchange: 4,\r\n fullscreenerror: 5,\r\n fullscreen: 6\r\n};\r\nvar webkit = [\r\n 'webkitFullscreenEnabled',\r\n 'webkitFullscreenElement',\r\n 'webkitRequestFullscreen',\r\n 'webkitExitFullscreen',\r\n 'webkitfullscreenchange',\r\n 'webkitfullscreenerror',\r\n '-webkit-full-screen',\r\n];\r\nvar moz = [\r\n 'mozFullScreenEnabled',\r\n 'mozFullScreenElement',\r\n 'mozRequestFullScreen',\r\n 'mozCancelFullScreen',\r\n 'mozfullscreenchange',\r\n 'mozfullscreenerror',\r\n '-moz-full-screen',\r\n];\r\nvar ms = [\r\n 'msFullscreenEnabled',\r\n 'msFullscreenElement',\r\n 'msRequestFullscreen',\r\n 'msExitFullscreen',\r\n 'MSFullscreenChange',\r\n 'MSFullscreenError',\r\n '-ms-fullscreen',\r\n];\r\n// so it doesn't throw if no window or document\r\nvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\r\nvar vendor = (('fullscreenEnabled' in document && Object.keys(key)) ||\r\n (webkit[0] in document && webkit) ||\r\n (moz[0] in document && moz) ||\r\n (ms[0] in document && ms) ||\r\n []);\r\nvar fscreen = {\r\n requestFullscreen: function (element) { return element[vendor[key.requestFullscreen]](); },\r\n requestFullscreenFunction: function (element) { return element[vendor[key.requestFullscreen]]; },\r\n get exitFullscreen() { return document[vendor[key.exitFullscreen]].bind(document); },\r\n get fullscreenPseudoClass() { return \":\" + vendor[key.fullscreen]; },\r\n addEventListener: function (type, handler, options) { return document.addEventListener(vendor[key[type]], handler, options); },\r\n removeEventListener: function (type, handler, options) { return document.removeEventListener(vendor[key[type]], handler, options); },\r\n get fullscreenEnabled() { return Boolean(document[vendor[key.fullscreenEnabled]]); },\r\n set fullscreenEnabled(val) { },\r\n get fullscreenElement() { return document[vendor[key.fullscreenElement]]; },\r\n set fullscreenElement(val) { },\r\n get onfullscreenchange() { return document[(\"on\" + vendor[key.fullscreenchange]).toLowerCase()]; },\r\n set onfullscreenchange(handler) { return document[(\"on\" + vendor[key.fullscreenchange]).toLowerCase()] = handler; },\r\n get onfullscreenerror() { return document[(\"on\" + vendor[key.fullscreenerror]).toLowerCase()]; },\r\n set onfullscreenerror(handler) { return document[(\"on\" + vendor[key.fullscreenerror]).toLowerCase()] = handler; },\r\n};\n\nexport default fscreen;\n//# sourceMappingURL=fscreen.esm.js.map\n","// Adapted from https://github.com/snakesilk/react-fullscreen\nimport { ReactNode, useRef, useLayoutEffect, useEffect } from \"react\";\nimport fscreen from \"fscreen\";\n\ninterface Props {\n enabled: boolean;\n children: ReactNode;\n onChange(fullscreen: boolean): void;\n}\n\nfunction leaveFullScreen() {\n if (fscreen.fullscreenEnabled) {\n fscreen.exitFullscreen();\n }\n}\n\nfunction enterFullScreen(node: HTMLDivElement) {\n if (fscreen.fullscreenEnabled) {\n fscreen.requestFullscreen(node);\n }\n}\n\nfunction FullScreen(props: Props) {\n const { onChange, enabled } = props;\n const ref = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n function detectFullScreen() {\n if (onChange) {\n onChange(fscreen.fullscreenElement === ref.current);\n }\n }\n fscreen.addEventListener(\"fullscreenchange\", detectFullScreen);\n return () => {\n fscreen.removeEventListener(\"fullscreenchange\", detectFullScreen);\n };\n }, [onChange]);\n\n // This must run in response to a click event, so we'll use useLayoutEffect just in case.\n useLayoutEffect(() => {\n const isEnabled = fscreen.fullscreenElement === ref.current;\n if (isEnabled && !enabled) {\n leaveFullScreen();\n } else if (!isEnabled && enabled && ref.current != null) {\n enterFullScreen(ref.current);\n }\n }, [enabled]);\n\n return (\n <div\n ref={ref}\n style={props.enabled ? { height: \"100%\", width: \"100%\" } : undefined}\n >\n {props.children}\n </div>\n );\n}\n\nexport default FullScreen;\n","import {\n useState,\n useEffect,\n useCallback,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport * as Utils from \"./utils\";\nimport { Action, Thunk, AppState } from \"./types\";\n\ninterface Size {\n width: number;\n height: number;\n}\n\nexport function useUnmountedRef(): { current: boolean } {\n const unmountedRef = useRef(false);\n useEffect(() => {\n return () => {\n unmountedRef.current = true;\n };\n }, []);\n return unmountedRef;\n}\n\nexport function usePromiseValueOrNull<T>(propValue: Promise<T>): T | null {\n const [value, setValue] = useState<T | null>(null);\n useEffect(() => {\n let disposed = false;\n propValue.then((resolvedValue) => {\n if (disposed) {\n return;\n }\n setValue(resolvedValue);\n });\n\n return () => {\n disposed = true;\n };\n }, [propValue]);\n\n return value;\n}\n\nexport function useScreenSize() {\n const [size] = useState<Size>(Utils.getScreenSize());\n // TODO: We could subscribe to screen size changes.\n return size;\n}\n\nexport function useWindowSize() {\n const [size, setSize] = useState<Size>(Utils.getWindowSize());\n const handler = useCallback(() => {\n Utils.throttle(() => {\n setSize(Utils.getWindowSize());\n }, 100) as () => void;\n }, []);\n useEffect(() => {\n window.addEventListener(\"resize\", handler);\n return () => {\n window.removeEventListener(\"resize\", handler);\n };\n }, [handler]);\n return size;\n}\n\nconst cursorPositionRef = { current: { pageX: 0, pageY: 0 } };\nwindow.document.addEventListener(\"mousemove\", ({ pageX, pageY }) => {\n cursorPositionRef.current = { pageX, pageY };\n});\n\n// We use a single global event listener because there is no way to get the\n// mouse position aside from an event. Ideally we could create/clean up the\n// event listener in the hook, but in the case where we want to check the cursor\n// position on mount, that we wouldn't have had time to capture an event.\nfunction useCursorPositionRef() {\n return cursorPositionRef;\n}\n\n// CSS hover state is not respected if the cursor is already over the node when\n// it is added to the DOM. This hook allows your component to know its hover\n// state on mount without waiting for the mouse to move.\n// https://stackoverflow.com/a/13259049/1263117\nexport function useIsHovered() {\n const cursorRef = useCursorPositionRef();\n const [hover, setHover] = useState(false);\n const [node, setNode] = useState<HTMLElement | null>(null);\n\n useLayoutEffect(() => {\n if (node == null) {\n setHover(false);\n return;\n }\n const domRect = node.getBoundingClientRect();\n const { pageX, pageY } = cursorRef.current;\n setHover(\n pageX >= domRect.left &&\n pageX <= domRect.right &&\n pageY >= domRect.top &&\n pageY <= domRect.bottom\n );\n\n const enter = () => setHover(true);\n const leave = () => setHover(false);\n node.addEventListener(\"mouseenter\", enter);\n node.addEventListener(\"mouseleave\", leave);\n\n return () => {\n node.removeEventListener(\"mouseenter\", enter);\n node.removeEventListener(\"mouseleave\", leave);\n };\n }, [node, cursorRef]);\n\n return { ref: setNode, hover };\n}\n\nexport function useOnClickAway(\n ref: Element | null,\n callback: null | (() => void)\n) {\n useEffect(() => {\n if (ref == null || callback == null) {\n return;\n }\n\n const handleClickOut = (ee: MouseEvent) => {\n const clickOutTarget = ee.target;\n if (!(clickOutTarget instanceof Element)) {\n // TypeScript doesn't realize this will always be true\n return;\n }\n if (ref.contains(clickOutTarget)) {\n return;\n }\n // If the click is _not_ inside the menu.\n callback();\n window.document.removeEventListener(\"click\", handleClickOut, {\n capture: true,\n });\n };\n\n window.document.addEventListener(\"click\", handleClickOut, {\n capture: true,\n });\n\n return () => {\n window.document.removeEventListener(\"click\", handleClickOut, {\n capture: true,\n });\n };\n }, [ref, callback]);\n}\n\n// TODO: Return useSelector directly and apply the type without wrapping\nexport function useTypedSelector<T>(selector: (state: AppState) => T): T {\n return useSelector(selector);\n}\n\nexport function useActionCreator<T extends (...args: any[]) => Action | Thunk>(\n actionCreator: T\n): (...funcArgs: Parameters<T>) => void {\n const dispatch = useTypedDispatch();\n return useCallback(\n (...args) => dispatch(actionCreator(...args)),\n [dispatch, actionCreator]\n );\n}\n\nexport function useTypedDispatch(): (action: Action | Thunk) => void {\n // useDispatch does not know about thunks. In theory this should be solvable, but I haven't bothered to figure it out:\n // https://redux.js.org/usage/usage-with-typescript#type-checking-redux-thunks\n // @ts-ignore\n return useDispatch();\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { useState, useEffect, memo } from \"react\";\nimport {\n WINDOW_RESIZE_SEGMENT_WIDTH,\n WINDOW_RESIZE_SEGMENT_HEIGHT,\n} from \"../constants\";\nimport * as Utils from \"../utils\";\n\ntype Size = [number, number];\n\ninterface Props {\n currentSize: Size;\n setWindowSize(size: Size): void;\n widthOnly?: boolean;\n id?: string;\n}\n\nfunction ResizeTarget(props: Props) {\n const { currentSize, setWindowSize, widthOnly, ...passThroughProps } = props;\n const [mouseDown, setMouseDown] = useState(false);\n const [mouseStart, setMouseStart] = useState<null | { x: number; y: number }>(\n null\n );\n useEffect(() => {\n if (mouseDown === false || mouseStart == null) {\n return;\n }\n const [width, height] = currentSize;\n const handleMove = (ee: MouseEvent | TouchEvent) => {\n const x = Utils.getX(ee) - mouseStart.x;\n const y = Utils.getY(ee) - mouseStart.y;\n\n const newWidth = Math.max(\n 0,\n width + Math.round(x / WINDOW_RESIZE_SEGMENT_WIDTH)\n );\n\n const newHeight = widthOnly\n ? width\n : Math.max(0, height + Math.round(y / WINDOW_RESIZE_SEGMENT_HEIGHT));\n\n const newSize: Size = [newWidth, newHeight];\n\n props.setWindowSize(newSize);\n };\n\n window.addEventListener(\"mousemove\", handleMove);\n window.addEventListener(\"touchmove\", handleMove);\n\n const handleMouseUp = () => setMouseDown(false);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchend\", handleMouseUp);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMove);\n window.removeEventListener(\"touchmove\", handleMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n // We pruposefully close over the props from when the mouse went down\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mouseStart, mouseDown]);\n\n const handleMouseDown = (\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n ) => {\n setMouseStart({\n x: Utils.getX(e),\n y: Utils.getY(e),\n });\n setMouseDown(true);\n };\n\n return (\n <div\n onMouseDown={handleMouseDown}\n onTouchStart={handleMouseDown}\n {...passThroughProps}\n />\n );\n}\nexport default memo(ResizeTarget);\n","import { useCallback, useState, useEffect } from \"react\";\nimport { WindowId } from \"../types\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\ninterface Props {\n onKeyDown?(e: KeyboardEvent): void;\n windowId: WindowId;\n children: React.ReactNode;\n}\n\nfunction FocusTarget({ onKeyDown, windowId, children }: Props) {\n const focusedWindowId = useTypedSelector(Selectors.getFocusedWindow);\n const setFocus = useActionCreator(Actions.setFocusedWindow);\n\n const focusHandler = useCallback(() => {\n if (windowId !== focusedWindowId) {\n setFocus(windowId);\n }\n }, [windowId, focusedWindowId, setFocus]);\n\n const [ref, setRef] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (ref == null || onKeyDown == null) {\n return;\n }\n ref.addEventListener(\"keydown\", onKeyDown);\n return () => ref.removeEventListener(\"keydown\", onKeyDown);\n }, [onKeyDown, windowId, focusedWindowId, ref]);\n\n // It's possible for a child component to gain focus and then become\n // unmounted. In that case, the browser will return focus to the `<body>`.\n // In the following hook, use a `MutationObserver` to watch for that behavior\n // and refocus the containing FocusTarget when it happens.\n //\n // I tried a number of other approaches using `focus/blur/focusin/focusout` on\n // various DOM nodes, and was unable to find a solution which would trigger in\n // this senario in Firefox. Therefore we use this `MutationObserver` approach.\n useEffect(() => {\n // Only create the `MutationObserver` within the currently focused target.\n if (ref == null || windowId !== focusedWindowId) {\n return;\n }\n\n const observer = new MutationObserver((mutations) => {\n // In the common case we won't have focused the body, so we can do this\n // inexpensive check first to avoid calling the more expensive `O(n)`\n // check of the individual mutations.\n if (document.activeElement !== document.body) {\n return;\n }\n if (mutations.some((mutation) => mutation.removedNodes.length > 0)) {\n ref.focus();\n }\n });\n\n observer.observe(ref, {\n subtree: true,\n attributes: false,\n childList: true,\n });\n\n return () => observer.disconnect();\n }, [windowId, focusedWindowId, ref]);\n\n return (\n <div\n ref={setRef}\n onPointerDown={focusHandler}\n onFocus={focusHandler}\n tabIndex={-1}\n style={{ height: \"100%\", width: \"100%\" }}\n >\n {children}\n </div>\n );\n}\n\nexport default FocusTarget;\n","import classnames from \"classnames\";\nimport {\n useCallback,\n DetailedHTMLProps,\n HTMLAttributes,\n useState,\n PointerEvent as ReactPointerEvent,\n} from \"react\";\n\nconst ACTIVE_CLASSNAME = \"winamp-active\";\nconst LEFT_MOUSE_NUMBER = 0;\n\ninterface DetailedHTMLPropsAndMore\n extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> {\n requireClicksOriginateLocally?: boolean;\n}\n\ntype Props = DetailedHTMLPropsAndMore;\n\n/**\n * Renders a `div` with an `.winamp-active` class if the element is being clicked/tapped.\n *\n * For now this mimicks the behavior of `:active`, but in the future we will use\n * this component to mimic Winamp's behavior, which is quite different than\n * `:active`.\n *\n * https://html.spec.whatwg.org/multipage/semantics-other.html#selector-active\n *\n * > An element is said to be being actively pointed at while the user indicates\n * > the element using a pointing device while that pointing device is in the\n * > \"down\" state (e.g. for a mouse, between the time the mouse button is pressed\n * > and the time it is depressed; for a finger in a multitouch environment, while\n * > the finger is touching the display surface).\n */\nexport default function WinampButton({\n requireClicksOriginateLocally = true,\n onPointerDown: originalOnPointerDown,\n className,\n ...htmlProps\n}: Props): JSX.Element {\n const [active, setActive] = useState(false);\n\n const onPointerDown = useCallback(\n (e: ReactPointerEvent<HTMLDivElement>) => {\n if (originalOnPointerDown != null) {\n originalOnPointerDown(e);\n }\n // Release the pointer capture\n // https://w3c.github.io/pointerevents/#implicit-pointer-capture\n // https://w3c.github.io/pointerevents/#pointer-capture\n if (!requireClicksOriginateLocally) {\n // @ts-ignore\n e.target.releasePointerCapture(e.pointerId);\n }\n // We only care about left mouse.\n // -1 button comes on onPointerEnter so we allow that.\n if (\n e.nativeEvent.button !== -1 &&\n e.nativeEvent.button !== LEFT_MOUSE_NUMBER\n ) {\n return;\n }\n setActive(true);\n\n function onRelease(ee: PointerEvent) {\n setActive(false);\n document.removeEventListener(\"pointerup\", onRelease);\n }\n document.addEventListener(\"pointerup\", onRelease);\n },\n [originalOnPointerDown, requireClicksOriginateLocally]\n );\n\n // We watch for events onPointerEnter only when requireClicksOriginateLocally === false\n // If the pointer enters the WinampButton area, and the pointer button is already down, trigger a PointerDown\n const onPointerEnter = (e: React.PointerEvent<HTMLDivElement>) => {\n if (e.buttons === 1) {\n // Emit a CustomEvent pointerup to get the other buttons to release.\n // Add a special -42 detail value so we can identify this event elsewhere and ignore if needed.\n document.dispatchEvent(\n new CustomEvent(\"pointerup\", {\n detail: -42,\n })\n );\n // Simulate a pointerdown on the current button\n onPointerDown(e);\n }\n };\n\n return (\n <div\n {...htmlProps}\n className={classnames(className, { [ACTIVE_CLASSNAME]: active })}\n onPointerDown={onPointerDown}\n onPointerEnter={\n requireClicksOriginateLocally ? undefined : onPointerEnter\n }\n />\n );\n}\n","import * as React from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ResizeTarget from \"../ResizeTarget\";\nimport { WindowId } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\ninterface TextProps {\n children: string;\n}\n\nconst Text = ({ children }: TextProps) => {\n const letters = children.split(\"\");\n return (\n <React.Fragment>\n {letters.map((letter, i) => (\n <div\n key={i}\n className={`draggable gen-text-letter gen-text-${\n letter === \" \" ? \"space\" : letter.toLowerCase()\n }`}\n />\n ))}\n </React.Fragment>\n );\n};\n\nconst CHROME_WIDTH = 19;\nconst CHROME_HEIGHT = 34;\n\ninterface WindowSize {\n width: number;\n height: number;\n}\n\ninterface Props {\n windowId: WindowId;\n children: (windowSize: WindowSize) => React.ReactNode;\n title: string;\n onKeyDown?(e: KeyboardEvent): void;\n}\n\n// Named export for testing\nexport const GenWindow = ({ children, title, windowId, onKeyDown }: Props) => {\n const setWindowSize = useActionCreator(Actions.setWindowSize);\n const closeWindow = useActionCreator(Actions.closeWindow);\n const getWindowPixelSize = useTypedSelector(Selectors.getWindowPixelSize);\n const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n const windowSize = getWindowSize(windowId);\n const selected = focusedWindow === windowId;\n const { width, height } = getWindowPixelSize(windowId);\n return (\n <FocusTarget windowId={windowId} onKeyDown={onKeyDown}>\n <div\n className={classnames(\"gen-window\", \"window\", { selected })}\n style={{ width, height }}\n >\n <div className=\"gen-top draggable\">\n <div className=\"gen-top-left draggable\" />\n <div className=\"gen-top-left-fill draggable\" />\n <div className=\"gen-top-left-end draggable\" />\n <div className=\"gen-top-title draggable\">\n <Text>{title}</Text>\n </div>\n <div className=\"gen-top-right-end draggable\" />\n <div className=\"gen-top-right-fill draggable\" />\n <div className=\"gen-top-right draggable\">\n <WinampButton\n className=\"gen-close selected\"\n onClick={() => closeWindow(windowId)}\n />\n </div>\n </div>\n <div className=\"gen-middle\">\n <div className=\"gen-middle-left draggable\">\n <div className=\"gen-middle-left-bottom draggable\" />\n </div>\n <div className=\"gen-middle-center\">\n {children({\n width: width - CHROME_WIDTH,\n height: height - CHROME_HEIGHT,\n })}\n </div>\n <div className=\"gen-middle-right draggable\">\n <div className=\"gen-middle-right-bottom draggable\" />\n </div>\n </div>\n <div className=\"gen-bottom draggable\">\n <div className=\"gen-bottom-left draggable\" />\n <div className=\"gen-bottom-right draggable\">\n <ResizeTarget\n currentSize={windowSize}\n setWindowSize={(size) => setWindowSize(windowId, size)}\n id={\"gen-resize-target\"}\n />\n </div>\n </div>\n </div>\n </FocusTarget>\n );\n};\n\nexport default GenWindow;\n","import { useEffect, useState, useRef } from \"react\";\nimport { VISUALIZERS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport { TransitionType } from \"../../types\";\nimport { useTypedSelector } from \"../../hooks\";\n\ntype ButterchurnVisualizer = {\n setRendererSize(width: number, height: number): void;\n loadPreset(preset: Object, transitionTime: number): void;\n launchSongTitleAnim(title: string): void;\n render(): void;\n};\n\ninterface Props {\n analyser: AnalyserNode;\n height: number;\n width: number;\n}\n\nconst TRANSITION_TYPE_DURATIONS = {\n [TransitionType.DEFAULT]: 2.7,\n [TransitionType.IMMEDIATE]: 0,\n [TransitionType.USER_PRESET]: 5.7,\n};\n\nfunction Visualizer({ analyser, width, height }: Props) {\n const visualizerStyle = useTypedSelector(Selectors.getVisualizerStyle);\n const playing = useTypedSelector(Selectors.getMediaIsPlaying);\n const butterchurn = useTypedSelector(Selectors.getButterchurn);\n const trackTitle = useTypedSelector(Selectors.getCurrentTrackDisplayName);\n const currentPreset = useTypedSelector(Selectors.getCurrentPreset);\n const transitionType = useTypedSelector(Selectors.getPresetTransitionType);\n const message = useTypedSelector(Selectors.getMilkdropMessage);\n\n const isEnabledVisualizer = visualizerStyle === VISUALIZERS.MILKDROP;\n\n const canvasRef = useRef(null);\n const [visualizer, setVisualizer] = useState<ButterchurnVisualizer | null>(\n null\n );\n\n // Initialize the visualizer\n useEffect(() => {\n if (canvasRef.current == null || butterchurn == null) {\n return;\n }\n if (visualizer != null) {\n // Note: The visualizer does not offer anyway to clean itself up. So, we\n // don't offer any way to recreate it. So, if you swap out the analyser\n // node, or the canvas, that change won't be respected.\n return;\n }\n const _visualizer = butterchurn.createVisualizer(\n analyser.context,\n canvasRef.current,\n {\n width,\n height,\n meshWidth: 32,\n meshHeight: 24,\n pixelRatio: window.devicePixelRatio || 1,\n }\n );\n _visualizer.connectAudio(analyser);\n setVisualizer(_visualizer);\n }, [butterchurn, analyser, height, width, visualizer]);\n\n // Ensure render size stays up to date\n useEffect(() => {\n if (visualizer == null) {\n return;\n }\n visualizer.setRendererSize(width, height);\n }, [visualizer, width, height]);\n\n // Load presets when they change\n const hasLoadedPreset = useRef<boolean>(false);\n useEffect(() => {\n if (visualizer == null || currentPreset == null) {\n return;\n }\n if (hasLoadedPreset.current) {\n visualizer.loadPreset(\n currentPreset,\n TRANSITION_TYPE_DURATIONS[transitionType]\n );\n } else {\n visualizer.loadPreset(\n currentPreset,\n TRANSITION_TYPE_DURATIONS[TransitionType.IMMEDIATE]\n );\n hasLoadedPreset.current = true;\n }\n // We don't want to trigger the transition if the transition type changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visualizer, currentPreset]);\n\n // Handle title animations\n useEffect(() => {\n if (visualizer == null || !trackTitle) {\n return;\n }\n visualizer.launchSongTitleAnim(trackTitle);\n }, [visualizer, trackTitle]);\n\n const lastShownMessage = useRef<null | number>(null);\n\n useEffect(() => {\n if (visualizer == null || message == null) {\n return;\n }\n if (\n lastShownMessage.current == null ||\n message.time > lastShownMessage.current\n ) {\n lastShownMessage.current = Date.now();\n visualizer.launchSongTitleAnim(message.text);\n }\n }, [visualizer, message]);\n\n const shouldAnimate = playing && isEnabledVisualizer;\n\n // Kick off the animation loop\n useEffect(() => {\n if (!shouldAnimate || visualizer == null) {\n return;\n }\n let animationFrameRequest: number | null = null;\n const loop = () => {\n visualizer.render();\n animationFrameRequest = window.requestAnimationFrame(loop);\n };\n loop();\n return () => {\n if (animationFrameRequest != null) {\n window.cancelAnimationFrame(animationFrameRequest);\n }\n };\n }, [visualizer, shouldAnimate]);\n\n return (\n <canvas\n height={height}\n width={width}\n style={{\n height: \"100%\",\n width: \"100%\",\n display: isEnabledVisualizer ? \"block\" : \"none\",\n }}\n ref={canvasRef}\n />\n );\n}\n\nexport default Visualizer;\n","import * as React from \"react\";\n\ninterface Props {\n innerRef?: (node: HTMLDivElement) => void;\n children: React.ReactNode;\n}\n\nconst Background = (props: Props) => {\n const { innerRef } = props;\n return (\n <div\n ref={innerRef}\n className=\"draggable\"\n style={{\n // This color will be used until Butterchurn is loaded\n backgroundColor: \"#000\",\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n height: \"100%\",\n width: \"100%\",\n }}\n tabIndex={0}\n >\n {props.children}\n </div>\n );\n};\n\nexport default Background;\n","import { useState, useCallback } from \"react\";\nimport { promptForFileReferences } from \"../../fileUtils\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { clamp } from \"../../utils\";\nimport { TransitionType } from \"../../types\";\nimport {\n useUnmountedRef,\n useActionCreator,\n useTypedSelector,\n} from \"../../hooks\";\n\nconst ENTRY_HEIGHT = 14;\nconst HEIGHT_PADDING = 15;\nconst WIDTH_PADDING = 20;\n\nconst LOADING_STYLE: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n color: \"white\",\n background: \"rgba(0.33, 0.33, 0.33, 0.33)\",\n};\n\nconst OUTER_WRAPPER_STYLE: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n padding: \"15px 10px 0 10px\",\n};\n\nconst INNER_WRAPPER_STYLE: React.CSSProperties = {\n display: \"inline-block\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n background: \"rgba(0, 0, 0, 0.815)\",\n fontSize: \"12px\",\n};\n\ninterface Props {\n height: number;\n width: number;\n}\n\nfunction presetIndexFromListIndex(listIndex: number) {\n return listIndex - 1;\n}\n\nfunction listIndexFromPresetIndex(listIndex: number) {\n return listIndex + 1;\n}\n\nfunction PresetOverlay({ height, width }: Props) {\n const presetKeys = useTypedSelector(Selectors.getPresetNames);\n const currentPresetIndex = useTypedSelector(Selectors.getCurrentPresetIndex);\n const requestPresetAtIndex = useActionCreator(Actions.requestPresetAtIndex);\n const togglePresetOverlay = useActionCreator(Actions.togglePresetOverlay);\n const appendPresetFileList = useActionCreator(Actions.appendPresetFileList);\n\n const unmountedRef = useUnmountedRef();\n const [selectedListIndex, setSelectedListIndex] = useState(() => {\n if (currentPresetIndex != null) {\n return listIndexFromPresetIndex(currentPresetIndex);\n }\n return 0;\n });\n\n // Number of presets, plus one for the \"Load Local Directory\" option, minus\n // one to convert a length to an index.\n const maxListIndex = presetKeys.length; // - 1 + 1;\n\n const renderList = useCallback(() => {\n const maxVisibleRows = Math.floor((height - HEIGHT_PADDING) / ENTRY_HEIGHT);\n const rowsToShow = Math.floor(maxVisibleRows * 0.75); // Only fill 3/4 of the screen.\n const [startIndex, endIndex] = getRangeCenteredOnIndex(\n maxListIndex + 1, // Add one to convert an index to a length\n rowsToShow,\n selectedListIndex\n );\n\n const presetElms = [];\n for (let i = startIndex; i <= endIndex; i++) {\n const presetIndex = presetIndexFromListIndex(i);\n const isSelected = i === selectedListIndex;\n const isCurrent = presetIndex === currentPresetIndex;\n let color: string;\n if (isSelected) {\n color = isCurrent ? \"#FFCC22\" : \"#FF5050\";\n } else {\n color = isCurrent ? \"#CCFF03\" : \"#CCCCCC\";\n }\n presetElms.push(\n <li key={i} style={{ color, lineHeight: `${ENTRY_HEIGHT}px` }}>\n {i === 0 ? \"Load Local Directory\" : presetKeys[presetIndex]}\n </li>\n );\n }\n\n return presetElms;\n }, [currentPresetIndex, height, maxListIndex, presetKeys, selectedListIndex]);\n\n const loadLocalDir = useCallback(async () => {\n const fileReferences = await promptForFileReferences({ directory: true });\n if (unmountedRef.current) {\n return;\n }\n appendPresetFileList(fileReferences);\n }, [appendPresetFileList, unmountedRef]);\n\n const handleFocusedKeyboardInput = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n switch (e.keyCode) {\n case 38: // up arrow\n setSelectedListIndex((value) => Math.max(value - 1, 0));\n e.stopPropagation();\n break;\n case 40: // down arrow\n setSelectedListIndex((value) => Math.min(value + 1, maxListIndex));\n e.stopPropagation();\n break;\n case 13: // enter\n if (selectedListIndex === 0) {\n loadLocalDir();\n } else {\n requestPresetAtIndex(\n presetIndexFromListIndex(selectedListIndex),\n TransitionType.DEFAULT,\n true\n );\n }\n e.stopPropagation();\n break;\n case 27: // escape\n togglePresetOverlay();\n e.stopPropagation();\n break;\n }\n },\n [\n loadLocalDir,\n maxListIndex,\n requestPresetAtIndex,\n selectedListIndex,\n togglePresetOverlay,\n ]\n );\n\n const handleNode = useCallback((node: HTMLDivElement | null) => {\n if (node != null && document.activeElement !== node) {\n node.focus();\n }\n }, []);\n\n if (presetKeys == null) {\n return (\n <div style={LOADING_STYLE}>\n <span>Loading presets</span>\n </div>\n );\n }\n return (\n <div\n ref={handleNode}\n tabIndex={-1}\n style={OUTER_WRAPPER_STYLE}\n onKeyDown={handleFocusedKeyboardInput}\n >\n <div\n style={{\n ...INNER_WRAPPER_STYLE,\n width: width - 20 - WIDTH_PADDING,\n maxHeight: height - HEIGHT_PADDING,\n }}\n >\n <ul style={{ listStyleType: \"none\", padding: 0, margin: 0 }}>\n {renderList()}\n </ul>\n </div>\n </div>\n );\n}\n\n// Find a tuple `[startIndex, endIndex]` representing start/end indexes into an\n// array of length `length`, that descripe a range of size up to `rangeSize`\n// where a best effort is made to center `indexToCenter`.\nexport function getRangeCenteredOnIndex(\n length: number,\n maxRangeSize: number,\n indexToCenter: number\n): [number, number] {\n const rangeSize = Math.min(length, maxRangeSize);\n const halfRangeSize = Math.floor(rangeSize / 2);\n const idealStartIndex = indexToCenter - halfRangeSize;\n const startIndex = clamp(idealStartIndex, 0, length - rangeSize);\n const endIndex = startIndex + rangeSize - 1;\n return [startIndex, endIndex];\n}\nexport default PresetOverlay;\n","import { useCallback } from \"react\";\nimport { useActionCreator } from \"../hooks\";\nimport * as Actions from \"../actionCreators\";\nimport { WindowId } from \"../types\";\n\ninterface Coord {\n x: number;\n y: number;\n}\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n handleDrop(e: React.DragEvent<HTMLDivElement>, coord: Coord): void;\n windowId: WindowId;\n}\n\nfunction supress(e: React.DragEvent<HTMLDivElement>) {\n e.stopPropagation();\n e.preventDefault();\n e.dataTransfer.dropEffect = \"link\";\n e.dataTransfer.effectAllowed = \"link\";\n}\n\nconst DropTarget = (props: Props) => {\n const {\n // eslint-disable-next-line no-shadow, no-unused-vars\n handleDrop,\n windowId,\n ...passThroughProps\n } = props;\n\n const droppedFiles = useActionCreator(Actions.droppedFiles);\n\n const onDrop = useCallback(\n (e: React.DragEvent<HTMLDivElement>) => {\n supress(e);\n droppedFiles(e, windowId);\n // TODO: We could probably move this coordinate logic into the playlist.\n // I think that's the only place it gets used.\n const { currentTarget } = e;\n if (!(currentTarget instanceof Element)) {\n return;\n }\n\n const { left: x, top: y } = currentTarget.getBoundingClientRect();\n handleDrop(e, { x, y });\n },\n [handleDrop, droppedFiles, windowId]\n );\n return (\n <div\n {...passThroughProps}\n onDragStart={supress}\n onDragEnter={supress}\n onDragOver={supress}\n onDrop={onDrop}\n />\n );\n};\n\nexport default DropTarget;\n","import { useMemo, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport classnames from \"classnames\";\n\nimport { useTypedSelector } from \"../hooks\";\nimport * as Selectors from \"../selectors\";\n\ninterface PortalProps {\n zIndex: number;\n top: number;\n left: number;\n children: JSX.Element[] | JSX.Element;\n}\n\nconst Portal = (props: PortalProps) => {\n const node: HTMLDivElement = useMemo(() => {\n const div = document.createElement(\"div\");\n div.id = \"webamp-context-menu\";\n div.style.position = \"absolute\";\n div.style.top = \"0\";\n div.style.left = \"0\";\n div.style.zIndex = String(props.zIndex + 1);\n return div;\n }, [props.zIndex]);\n\n useEffect(() => {\n document.body.appendChild(node);\n return () => {\n document.body.removeChild(node);\n };\n }, [node]);\n\n const style: React.CSSProperties = {\n top: props.top,\n left: props.left,\n position: \"absolute\",\n };\n return createPortal(<div style={style}>{props.children}</div>, node);\n};\n\nexport const Hr = () => (\n <li className=\"hr\">\n <hr />\n </li>\n);\n\ninterface ParentProps {\n label: string;\n children: React.ReactNode;\n}\n\nexport const Parent = ({ children, label }: ParentProps) => (\n <li className=\"parent\">\n <ul>{children}</ul>\n {label}\n </li>\n);\n\ninterface LinkNodeProps {\n label: string;\n href: string;\n target?: string;\n}\n\nexport const LinkNode = (props: LinkNodeProps) => (\n <li>\n <a {...props}>{props.label}</a>\n </li>\n);\n\ninterface NodeProps {\n label: string;\n checked?: boolean;\n hotkey?: string;\n className?: string;\n // TODO: Figure out how to do passthrough props\n onClick?: () => void;\n}\n\nexport const Node = (props: NodeProps) => {\n const { label, checked, className = \"\", ...passThroughProps } = props;\n return (\n <li className={classnames(className, { checked })} {...passThroughProps}>\n {label}\n </li>\n );\n};\n\ninterface ContextMenuProps {\n children: React.ReactNode;\n offsetTop: number;\n offsetLeft: number;\n top?: boolean;\n bottom?: boolean;\n // TODO: Remove this. Just conditionally render in the parent.\n selected: boolean;\n}\n\nexport default function ContextMenu({\n children,\n offsetTop,\n offsetLeft,\n top,\n bottom,\n selected,\n}: ContextMenuProps) {\n const zIndex = useTypedSelector(Selectors.getZIndex);\n if (!selected) {\n return null;\n }\n return (\n <Portal top={offsetTop} left={offsetLeft} zIndex={zIndex}>\n <ul className={classnames(\"context-menu\", { top, bottom })}>\n {children}\n </ul>\n </Portal>\n );\n}\n","import { ReactNode, useState, useEffect, useCallback } from \"react\";\nimport ContextMenu from \"./ContextMenu\";\n\ninterface Props {\n renderContents(): ReactNode;\n children: ReactNode;\n}\n\n// Trigger a context menu at the user's cursor position when the user right\n// clicks within this component.\n// For a component that triggers relative to a given component when the user\n// left-clicks see `<ContextMenuTarget />`.\n\n// TODO: Consider using nested contexts to ensure we don't ever have multiple\n// non-nested context menus open at a time.\nexport default function ContextMenuWraper({\n children,\n renderContents,\n ...passThroughProps\n}: Props) {\n const [openPosition, setOpenPosition] = useState<{\n x: number;\n y: number;\n } | null>(null);\n\n const closeMenu = useCallback(() => {\n setOpenPosition(null);\n }, []);\n\n const handleGlobalClick = useCallback(\n (e: MouseEvent) => {\n if (e.button !== 2) {\n closeMenu();\n }\n },\n [closeMenu]\n );\n\n const handleRightClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n const { pageX, pageY } = e;\n // TODO: We could do an initial render to see if the menu fits here\n // and do a second render if it does not.\n setOpenPosition({ x: pageX, y: pageY });\n e.preventDefault();\n e.stopPropagation();\n },\n []\n );\n\n // Add click-away listeners when window is open\n useEffect(() => {\n if (openPosition == null) {\n return;\n }\n document.addEventListener(\"click\", handleGlobalClick);\n document.body.addEventListener(\"contextmenu\", closeMenu);\n\n return () => {\n document.removeEventListener(\"click\", handleGlobalClick);\n document.body.removeEventListener(\"contextmenu\", closeMenu);\n };\n }, [openPosition, closeMenu, handleGlobalClick]);\n\n return (\n <div\n onContextMenu={handleRightClick}\n style={{ width: \"100%\", height: \"100%\" }}\n {...passThroughProps}\n >\n <ContextMenu\n selected={openPosition != null}\n offsetTop={openPosition?.y ?? 0}\n offsetLeft={openPosition?.x ?? 0}\n >\n {renderContents()}\n </ContextMenu>\n {children}\n </div>\n );\n}\n","import { ReactNode } from \"react\";\nimport { Hr, Node } from \"../ContextMenu\";\nimport { WINDOWS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport ContextMenuWraper from \"../ContextMenuWrapper\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\ninterface Props {\n children: ReactNode;\n}\n\nconst MilkdropContextMenu = (props: Props) => {\n const desktop = useTypedSelector(Selectors.getMilkdropDesktopEnabled);\n\n const closeWindow = useActionCreator(Actions.closeWindow);\n const toggleDesktop = useActionCreator(Actions.toggleMilkdropDesktop);\n const toggleFullscreen = useActionCreator(Actions.toggleMilkdropFullscreen);\n return (\n <ContextMenuWraper\n renderContents={() => {\n return (\n <>\n <Node\n onClick={toggleFullscreen}\n label=\"Fullscreen\"\n hotkey=\"Alt+Enter\"\n />\n <Node\n onClick={toggleDesktop}\n checked={desktop}\n label=\"Desktop Mode\"\n hotkey=\"Alt+D\"\n />\n <Hr />\n <Node onClick={() => closeWindow(WINDOWS.MILKDROP)} label=\"Quit\" />\n </>\n );\n }}\n >\n {props.children}\n </ContextMenuWraper>\n );\n};\n\nexport default MilkdropContextMenu;\n","import * as React from \"react\";\nimport { ReactNode } from \"react\";\nimport ReactDOM from \"react-dom\";\n\ninterface Props {\n children: ReactNode;\n}\n\nconst Desktop = React.memo(({ children }: Props) => {\n const [desktopNode] = React.useState(() => document.createElement(\"div\"));\n\n React.useEffect(() => {\n desktopNode.classList.add(\"webamp-desktop\");\n document.body.appendChild(desktopNode);\n return () => {\n document.body.removeChild(desktopNode);\n };\n }, [desktopNode]);\n\n return ReactDOM.createPortal(children, desktopNode);\n});\n\nexport default Desktop;\n","import { useEffect, useCallback } from \"react\";\nimport Fullscreen from \"../Fullscreen\";\nimport {\n useWindowSize,\n useScreenSize,\n useTypedSelector,\n useActionCreator,\n} from \"../../hooks\";\nimport GenWindow from \"../GenWindow\";\nimport { WINDOWS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { TransitionType } from \"../../types\";\nimport Visualizer from \"./Visualizer\";\n\nimport Background from \"./Background\";\nimport PresetOverlay from \"./PresetOverlay\";\nimport DropTarget from \"../DropTarget\";\nimport MilkdropContextMenu from \"./MilkdropContextMenu\";\nimport Desktop from \"./Desktop\";\n\nconst MILLISECONDS_BETWEEN_PRESET_TRANSITIONS = 15000;\n\ninterface Props {\n analyser: AnalyserNode;\n}\n\nfunction useKeyHandler() {\n const trackTitle = useTypedSelector(Selectors.getCurrentTrackDisplayName);\n\n const selectNextPreset = useActionCreator(Actions.selectNextPreset);\n const selectPreviousPreset = useActionCreator(Actions.selectPreviousPreset);\n const toggleRandomize = useActionCreator(Actions.toggleRandomizePresets);\n const togglePresetOverlay = useActionCreator(Actions.togglePresetOverlay);\n const scheduleMilkdropMessage = useActionCreator(\n Actions.scheduleMilkdropMessage\n );\n const toggleCycling = useActionCreator(Actions.togglePresetCycling);\n\n // Handle keyboard events\n return useCallback(\n (e: KeyboardEvent) => {\n switch (e.keyCode) {\n case 32: // spacebar\n selectNextPreset();\n break;\n case 8: // backspace\n selectPreviousPreset(TransitionType.IMMEDIATE);\n break;\n case 72: // H\n selectNextPreset(TransitionType.IMMEDIATE);\n break;\n case 82: // R\n toggleRandomize();\n break;\n case 76: // L\n togglePresetOverlay();\n e.stopPropagation();\n break;\n case 84: // T\n if (trackTitle != null) {\n scheduleMilkdropMessage(trackTitle);\n }\n e.stopPropagation();\n break;\n case 145: // scroll lock\n case 125: // F14 (scroll lock for OS X)\n toggleCycling();\n break;\n }\n },\n [\n scheduleMilkdropMessage,\n selectNextPreset,\n selectPreviousPreset,\n toggleCycling,\n togglePresetOverlay,\n toggleRandomize,\n trackTitle,\n ]\n );\n}\n\nfunction Milkdrop({ analyser }: Props) {\n const desktop = useTypedSelector(Selectors.getMilkdropDesktopEnabled);\n const fullscreen = useTypedSelector(Selectors.getMilkdropFullscreenEnabled);\n const overlay = useTypedSelector(Selectors.getPresetOverlayOpen);\n const presetsAreCycling = useTypedSelector(Selectors.getPresetsAreCycling);\n const currentPresetIndex = useTypedSelector(Selectors.getCurrentPresetIndex);\n const mediaIsPlaying = useTypedSelector(Selectors.getMediaIsPlaying);\n\n const toggleFullscreen = useActionCreator(Actions.toggleMilkdropFullscreen);\n const selectNextPreset = useActionCreator(Actions.selectNextPreset);\n const handlePresetDrop = useActionCreator(Actions.handlePresetDrop);\n const setFullscreen = useActionCreator(Actions.setMilkdropFullscreen);\n\n const handleKeyDown = useKeyHandler();\n\n // Cycle presets\n useEffect(() => {\n if (!presetsAreCycling || !mediaIsPlaying) {\n return;\n }\n const intervalId = setInterval(\n selectNextPreset,\n MILLISECONDS_BETWEEN_PRESET_TRANSITIONS\n );\n return () => clearInterval(intervalId);\n }, [presetsAreCycling, currentPresetIndex, mediaIsPlaying, selectNextPreset]);\n\n const screenSize = useScreenSize();\n const windowSize = useWindowSize();\n\n if (desktop) {\n return (\n <Desktop>\n <MilkdropContextMenu>\n <Visualizer {...windowSize} analyser={analyser} />\n </MilkdropContextMenu>\n </Desktop>\n );\n }\n\n return (\n <GenWindow\n title={\"Milkdrop\"}\n windowId={WINDOWS.MILKDROP}\n onKeyDown={handleKeyDown}\n >\n {(genWindowSize: { width: number; height: number }) => {\n const size = fullscreen ? screenSize : genWindowSize;\n return (\n <MilkdropContextMenu>\n <Background>\n <DropTarget\n windowId={WINDOWS.MILKDROP}\n handleDrop={handlePresetDrop}\n >\n {overlay && <PresetOverlay {...size} />}\n <Fullscreen enabled={fullscreen} onChange={setFullscreen}>\n <div onDoubleClick={toggleFullscreen}>\n <Visualizer {...size} analyser={analyser} />\n </div>\n </Fullscreen>\n </DropTarget>\n </Background>\n </MilkdropContextMenu>\n );\n }}\n </GenWindow>\n );\n}\nexport default Milkdrop;\n","import { Fragment } from \"react\";\nimport * as Actions from \"../actionCreators\";\nimport { Hr, Node } from \"./ContextMenu\";\nimport { useActionCreator } from \"../hooks\";\n\nconst PlaybackContextMenu = () => {\n const previous = useActionCreator(Actions.previous);\n const play = useActionCreator(Actions.play);\n const pause = useActionCreator(Actions.pause);\n const stop = useActionCreator(Actions.stop);\n const next = useActionCreator(Actions.next);\n const seekForward = useActionCreator(Actions.seekForward);\n const seekBackward = useActionCreator(Actions.seekBackward);\n const nextN = useActionCreator(Actions.nextN);\n return (\n <Fragment>\n <Node label=\"Previous\" hotkey=\"Z\" onClick={previous} />\n <Node label=\"Play\" hotkey=\"X\" onClick={play} />\n <Node label=\"Pause\" hotkey=\"C\" onClick={pause} />\n <Node label=\"Stop\" hotkey=\"V\" onClick={stop} />\n <Node label=\"Next\" hotkey=\"B\" onClick={next} />\n <Hr />\n {/*\n <Node label=\"Stop w/ fadeout\" hotkey=\"Shift+V\" />\n <Node label=\"Stop after current\" hotkey=\"Ctrl+V\" />\n */}\n <Node\n label=\"Back 5 seconds\"\n hotkey=\"Left\"\n onClick={() => seekBackward(5)}\n />\n <Node\n label=\"Fwd 5 seconds\"\n hotkey=\"Right\"\n onClick={() => seekForward(5)}\n />\n {/*\n <Node label=\"Start of list\" hotkey=\"Ctrl+Z\" />\n */}\n <Node label=\"10 tracks back\" hotkey=\"Num. 1\" onClick={() => nextN(-10)} />\n <Node label=\"10 tracks fwd\" hotkey=\"Num. 3\" onClick={() => nextN(10)} />\n {/*\n <Hr />\n <Node label=\"Jump to time\" hotkey=\"Ctrl+J\" />\n <Node label=\"Jump to file\" hotkey=\"J\" />\n */}\n </Fragment>\n );\n};\n\nexport default PlaybackContextMenu;\n","import * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { Hr, Node, Parent } from \"./ContextMenu\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\nconst SkinContextMenu = () => {\n const loadDefaultSkin = useActionCreator(Actions.loadDefaultSkin);\n const openSkinFileDialog = useActionCreator(Actions.openSkinFileDialog);\n const setSkin = useActionCreator(Actions.setSkinFromUrl);\n\n const availableSkins = useTypedSelector(Selectors.getAvaliableSkins);\n return (\n <Parent label=\"Skins\">\n <Node onClick={openSkinFileDialog} label=\"Load Skin...\" />\n <Hr />\n <Node onClick={loadDefaultSkin} label={\"<Base Skin>\"} />\n {availableSkins.map((skin) => (\n <Node\n key={skin.url}\n onClick={() => setSkin(skin.url)}\n label={skin.name}\n />\n ))}\n </Parent>\n );\n};\nexport default SkinContextMenu;\n","import { Hr, Node } from \"./ContextMenu\";\nimport SkinsContextMenu from \"./SkinsContextMenu\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { TIME_MODE } from \"../constants\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\nconst OptionsContextMenu = () => {\n const toggleTimeMode = useActionCreator(Actions.toggleTimeMode);\n const toggleDoubleSizeMode = useActionCreator(Actions.toggleDoubleSizeMode);\n const toggleRepeat = useActionCreator(Actions.toggleRepeat);\n const toggleShuffle = useActionCreator(Actions.toggleShuffle);\n\n const doubled = useTypedSelector(Selectors.getDoubled);\n const timeMode = useTypedSelector(Selectors.getTimeMode);\n const repeat = useTypedSelector(Selectors.getRepeat);\n const shuffle = useTypedSelector(Selectors.getShuffle);\n return (\n <>\n {/* <Node label=\"Preferences...\" /> */}\n <SkinsContextMenu />\n <Hr />\n <Node\n label=\"Time elapsed\"\n hotkey=\"(Ctrl+T toggles)\"\n onClick={toggleTimeMode}\n checked={timeMode === TIME_MODE.ELAPSED}\n />\n <Node\n label=\"Time remaining\"\n hotkey=\"(Ctrl+T toggles)\"\n onClick={toggleTimeMode}\n checked={timeMode === TIME_MODE.REMAINING}\n />\n {/* <Node label=\"Always On Top\" hotkey=\"Ctrl+A\" /> */}\n <Node\n label=\"Double Size\"\n hotkey=\"Ctrl+D\"\n onClick={toggleDoubleSizeMode}\n checked={doubled}\n />\n {/* <Node label=\"EasyMove\" hotkey=\"Ctrl+E\" /> */}\n <Hr />\n <Node label=\"Repeat\" hotkey=\"R\" onClick={toggleRepeat} checked={repeat} />\n <Node\n label=\"Shuffle\"\n hotkey=\"S\"\n onClick={toggleShuffle}\n checked={shuffle}\n />\n </>\n );\n};\nexport default OptionsContextMenu;\n","import { memo, Fragment, useEffect } from \"react\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { LOAD_STYLE } from \"../../constants\";\nimport { Hr, Node, Parent, LinkNode } from \"../ContextMenu\";\nimport PlaybackContextMenu from \"../PlaybackContextMenu\";\nimport OptionsContextMenu from \"../OptionsContextMenu\";\nimport SkinsContextMenu from \"../SkinsContextMenu\";\nimport { FilePicker, WindowId } from \"../../types\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\ninterface Props {\n filePickers: FilePicker[];\n}\n\nconst MainContextMenu = memo(({ filePickers }: Props) => {\n const networkConnected = useTypedSelector(Selectors.getNetworkConnected);\n const genWindows = useTypedSelector(Selectors.getGenWindows);\n\n const close = useActionCreator(Actions.close);\n const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n const loadMediaFiles = useActionCreator(Actions.loadMediaFiles);\n const toggleWindow = useActionCreator(Actions.toggleWindow);\n const menuOpened = useActionCreator(() => ({\n type: \"MAIN_CONTEXT_MENU_OPENED\",\n }));\n useEffect(() => {\n menuOpened();\n }, [menuOpened]);\n\n return (\n <Fragment>\n <LinkNode\n href=\"https://webamp.org/about\"\n target=\"_blank\"\n label=\"Webamp...\"\n />\n <Hr />\n <Parent label=\"Play\">\n <Node onClick={openMediaFileDialog} label=\"File...\" hotkey=\"L\" />\n {filePickers != null &&\n filePickers.map(\n (picker, i) =>\n (networkConnected || !picker.requiresNetwork) && (\n <Node\n key={i}\n onClick={async () => {\n let files;\n try {\n files = await picker.filePicker();\n } catch (e) {\n console.error(\"Error loading from file picker\", e);\n }\n loadMediaFiles(files || [], LOAD_STYLE.PLAY);\n }}\n label={picker.contextMenuName}\n />\n )\n )}\n </Parent>\n <Hr />\n {Object.keys(genWindows).map((i) => (\n <Node\n key={i}\n label={genWindows[i].title}\n checked={genWindows[i].open}\n onClick={() => toggleWindow(i as WindowId)}\n hotkey={genWindows[i].hotkey}\n />\n ))}\n <Hr />\n <SkinsContextMenu />\n <Hr />\n <Parent label=\"Options\">\n <OptionsContextMenu />\n </Parent>\n <Parent label=\"Playback\">\n <PlaybackContextMenu />\n </Parent>\n <Hr />\n <Node onClick={close} label=\"Exit\" />\n </Fragment>\n );\n});\n\nexport default MainContextMenu;\n","import { ReactNode, useCallback, useEffect, useState } from \"react\";\n\nimport * as SnapUtils from \"../snapUtils\";\nimport * as Selectors from \"../selectors\";\nimport * as Actions from \"../actionCreators\";\nimport { WindowInfo, WindowId, Box, Point } from \"../types\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\nimport * as Utils from \"../utils\";\n\nconst abuts = (a: Box, b: Box) => {\n // TODO: This is kinda a hack. They should really be touching, not just within snapping distance.\n // Also, overlapping should not count.\n const wouldMoveTo = SnapUtils.snap(a, b);\n return wouldMoveTo.x !== undefined || wouldMoveTo.y !== undefined;\n};\n\ninterface Props {\n windows: { [windowId: string]: ReactNode };\n}\n\ntype DraggingState = {\n moving: WindowInfo[];\n stationary: WindowInfo[];\n boundingBox: Box;\n mouseStart: Point;\n};\n\nfunction useHandleMouseDown(propsWindows: {\n [windowId: string]: ReactNode;\n}): (\n key: WindowId,\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n) => void {\n const windowsInfo = useTypedSelector(Selectors.getWindowsInfo);\n const getWindowHidden = useTypedSelector(Selectors.getWindowHidden);\n const browserWindowSize = useTypedSelector(Selectors.getBrowserWindowSize);\n const updateWindowPositions = useActionCreator(Actions.updateWindowPositions);\n\n const [draggingState, setDraggingState] = useState<DraggingState | null>(\n null\n );\n\n // When the mouse is down, attach a listener to track mouse move events.\n useEffect(() => {\n if (draggingState == null) {\n return;\n }\n const { boundingBox, moving, stationary, mouseStart } = draggingState;\n const handleMouseMove = (ee: MouseEvent | TouchEvent) => {\n const proposedDiff = {\n x: Utils.getX(ee) - mouseStart.x,\n y: Utils.getY(ee) - mouseStart.y,\n };\n\n const proposedWindows = moving.map((node) => ({\n ...node,\n ...SnapUtils.applyDiff(node, proposedDiff),\n }));\n\n const proposedBox = {\n ...boundingBox,\n ...SnapUtils.applyDiff(boundingBox, proposedDiff),\n };\n\n const snapDiff = SnapUtils.snapDiffManyToMany(\n proposedWindows,\n stationary\n );\n\n const withinDiff = SnapUtils.snapWithinDiff(\n proposedBox,\n browserWindowSize\n );\n\n const finalDiff = SnapUtils.applyMultipleDiffs(\n proposedDiff,\n snapDiff,\n withinDiff\n );\n\n const windowPositionDiff: { [windowId: string]: Point } = {};\n moving.forEach((w) => {\n windowPositionDiff[w.key] = SnapUtils.applyDiff(w, finalDiff);\n });\n\n updateWindowPositions(windowPositionDiff, false);\n };\n\n function handleMouseUp() {\n setDraggingState(null);\n }\n\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"touchend\", handleMouseUp);\n\n window.addEventListener(\"mousemove\", handleMouseMove, { passive: false });\n window.addEventListener(\"touchmove\", handleMouseMove, { passive: false });\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"touchmove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n }, [browserWindowSize, draggingState, updateWindowPositions]);\n\n // Mouse down handler\n return useCallback(\n (\n key: WindowId,\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n ) => {\n if (!(e.target as HTMLElement).classList.contains(\"draggable\")) {\n return;\n }\n\n const x = Utils.getX(e);\n const y = Utils.getY(e);\n\n if (getWindowHidden(key)) {\n // The user may be clicking on full screen Milkdrop.\n return;\n }\n\n const windows = windowsInfo.filter(\n (w) => propsWindows[w.key] != null && !getWindowHidden(w.key)\n );\n const targetNode = windows.find((node) => node.key === key);\n if (targetNode == null) {\n throw new Error(`Tried to move a node that does not exist: ${key}`);\n }\n\n let movingSet = new Set([targetNode]);\n // Only the main window brings other windows along.\n if (key === \"main\") {\n const findAllConnected = SnapUtils.traceConnection<WindowInfo>(abuts);\n movingSet = findAllConnected(windows, targetNode);\n }\n\n const stationary = windows.filter((w) => !movingSet.has(w));\n const moving = Array.from(movingSet);\n\n const mouseStart = { x, y };\n\n const boundingBox = SnapUtils.boundingBox(moving);\n setDraggingState({ boundingBox, moving, stationary, mouseStart });\n },\n [getWindowHidden, propsWindows, windowsInfo]\n );\n}\n\nexport default function WindowManager({ windows: propsWindows }: Props) {\n const windowsInfo = useTypedSelector(Selectors.getWindowsInfo);\n const setFocusedWindow = useActionCreator(Actions.setFocusedWindow);\n const handleMouseDown = useHandleMouseDown(propsWindows);\n\n const windows = windowsInfo.filter((w) => propsWindows[w.key]);\n\n const onBlur = useCallback(\n // I give up on trying to type things with `relatedTarget`.\n (e: any) => {\n const { currentTarget, relatedTarget } = e;\n if (\n currentTarget === relatedTarget ||\n currentTarget.contains(relatedTarget)\n ) {\n return;\n }\n setFocusedWindow(null);\n },\n [setFocusedWindow]\n );\n\n return (\n <>\n {windows.map((w) => (\n <div\n key={w.key}\n onBlur={onBlur}\n onMouseDown={(e: React.MouseEvent<HTMLDivElement>) => {\n handleMouseDown(w.key, e);\n }}\n onTouchStart={(e: React.TouchEvent<HTMLDivElement>) => {\n handleMouseDown(w.key, e);\n }}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n transform: `translate(${w.x}px, ${w.y}px)`,\n touchAction: \"none\",\n }}\n >\n {propsWindows[w.key]}\n </div>\n ))}\n </>\n );\n}\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","import * as React from \"react\";\nimport deburr from \"lodash/deburr\";\n\ninterface Props extends React.HTMLAttributes<HTMLSpanElement> {\n children: string | number;\n className?: string;\n}\n\nexport const characterClassName = (char: string | number) =>\n `character-${deburr(char.toString()).toLowerCase().charCodeAt(0)}`;\n\nconst Character = React.memo(\n ({ children: char, className, ...passThrough }: Props) => {\n return (\n <span\n {...passThrough}\n className={`${className || \"\"} character ${characterClassName(char)}`}\n >\n {char}\n </span>\n );\n }\n);\n\nexport default Character;\n","import { Fragment } from \"react\";\nimport classnames from \"classnames\";\nimport { getTimeObj } from \"../utils\";\nimport { TIME_MODE, MEDIA_STATUS } from \"../constants\";\nimport * as Actions from \"../actionCreators\";\nimport Character from \"./Character\";\nimport * as Selectors from \"../selectors\";\n\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\n// Sigh. When the display is blinking (say when it's paused) we need to\n// alternate between the actual character and the space character. Not\n// Possible to do that in pure CSS with the background being dynamically generated.\n// All \"space\" characters is also how Winamp renders no content.\nconst Background = () => (\n <Fragment>\n {[1, 7, 12, 20, 25].map((left, i) => (\n <Character\n style={{ left }}\n key={i}\n className=\"background-character\"\n children=\" \"\n />\n ))}\n </Fragment>\n);\n\nconst MiniTime = () => {\n const status = useTypedSelector(Selectors.getMediaStatus);\n const duration = useTypedSelector(Selectors.getDuration);\n const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n const timeMode = useTypedSelector(Selectors.getTimeMode);\n\n const toggle = useActionCreator(Actions.toggleTimeMode);\n let seconds = null;\n // TODO: Clean this up: If stopped, just render the background, rather than\n // rendering spaces twice.\n if (status !== MEDIA_STATUS.STOPPED && duration != null) {\n seconds =\n timeMode === TIME_MODE.ELAPSED ? timeElapsed : duration - timeElapsed;\n }\n\n const timeObj = getTimeObj(seconds);\n const showMinus =\n timeMode === TIME_MODE.REMAINING && status !== MEDIA_STATUS.STOPPED;\n return (\n <div\n onClick={toggle}\n className={classnames(\"mini-time\", \"countdown\", {\n blinking: status === MEDIA_STATUS.PAUSED,\n })}\n >\n <Background />\n <Character style={{ left: 1 }}>{showMinus ? \"-\" : \" \"}</Character>\n <Character style={{ left: 7 }}>{timeObj.minutesFirstDigit}</Character>\n <Character style={{ left: 12 }}>{timeObj.minutesSecondDigit}</Character>\n <Character style={{ left: 20 }}>{timeObj.secondsFirstDigit}</Character>\n <Character style={{ left: 25 }}>{timeObj.secondsSecondDigit}</Character>\n </div>\n );\n};\n\nexport default MiniTime;\n","import { useState } from \"react\";\nimport classnames from \"classnames\";\nimport WinampButton from \"./WinampButton\";\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n onPointerDown?: (e: React.PointerEvent<HTMLDivElement>) => void;\n}\n\n// Winamp has a strange behavior for the buttons at the top of the main window.\n// It shows through to the main background sprite until the first time that it's\n// clicked, and then it shows the dedicated undepressed sprite thereafter.\n// This component is an abstraction that tracks if a div has ever been clicked.\n// Look in `skinSelectors` for CSS selectors that look like `#some-id.clicked`\n// for examples of this functionality in use.\nfunction ClickedDiv(props: Props) {\n const [clicked, setClicked] = useState(false);\n function handlePointerDown(e: React.PointerEvent<HTMLDivElement>) {\n setClicked(true);\n if (props.onPointerDown) {\n props.onPointerDown(e);\n }\n }\n return (\n <WinampButton\n {...props}\n className={classnames(props.className, { clicked })}\n onPointerDown={handlePointerDown}\n />\n );\n}\n\nexport default ClickedDiv;\n","import { useState, useRef, useEffect, useMemo } from \"react\";\nimport ContextMenu from \"./ContextMenu\";\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n renderMenu: () => React.ReactNode;\n top?: boolean;\n bottom?: boolean;\n}\n\nfunction getNodeOffset(node: HTMLDivElement | null) {\n if (node == null) {\n return { top: 0, left: 0 };\n }\n\n const rect = node.getBoundingClientRect();\n const scrollLeft = window.pageXOffset || document.documentElement!.scrollLeft;\n const scrollTop = window.pageYOffset || document.documentElement!.scrollTop;\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft };\n}\n\n// Trigger a context menu relative to the child element when the user\n// left-clicks on the child.\n//\n// For a component that triggers relative to the user's cursor on right-click\n// see `<ContextMenuWrapper />`.\nfunction ContextMenuTarget(props: Props) {\n const handleNode = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(false);\n useEffect(() => {\n if (!selected) {\n return;\n }\n function handleGlobalClick(e: MouseEvent) {\n if (\n selected &&\n // Typescript does not believe that these click events are always fired on DOM nodes.\n e.target instanceof Element &&\n selected &&\n // Not sure how, but it's possible for this to get called when handleNode is null/undefined.\n // https://sentry.io/share/issue/2066cd79f21e4f279791319f4d2ea35d/\n handleNode.current &&\n !handleNode.current.contains(e.target!)\n ) {\n setSelected(false);\n }\n }\n document.addEventListener(\"click\", handleGlobalClick);\n return () => {\n document.removeEventListener(\"click\", handleGlobalClick);\n };\n }, [selected]);\n\n const offset = useMemo(() => {\n return selected\n ? getNodeOffset(handleNode.current)\n : // Kinda awkward. This is a nonsense return value since we only use\n //this value when we are selected.\n { top: 0, left: 0 };\n }, [selected]);\n\n const { renderMenu, children, top, bottom, ...passThroughProps } = props;\n return (\n <div {...passThroughProps}>\n <div\n className=\"handle\"\n style={{ width: \"100%\", height: \"100%\" }}\n ref={handleNode}\n onClick={() => setSelected(!selected)}\n >\n {children}\n </div>\n <ContextMenu\n selected={selected}\n offsetTop={offset.top}\n offsetLeft={offset.left}\n top={top}\n bottom={bottom}\n >\n {renderMenu()}\n </ContextMenu>\n </div>\n );\n}\n\nexport default ContextMenuTarget;\n","// The Web Audio API's FFT is bad, so this exists now!\n// Taken from https://github.com/WACUP/vis_classic/tree/master/FFTNullsoft\n\nexport class FFT {\n private bitrevtable: number[];\n private envelope: Float32Array;\n private equalize: Float32Array;\n private temp1: Float32Array;\n private temp2: Float32Array;\n private cossintable: Float32Array[];\n\n // Constants\n private static readonly TWO_PI = 6.2831853; // 2 * Math.PI\n private static readonly HALF_PI = 1.5707963268; // Math.PI / 2\n\n constructor() {\n // Assuming these are your hardcoded values:\n const samplesIn = 1024; // hardcoded value\n const samplesOut = 512; // hardcoded value\n const bEqualize = true; // hardcoded value\n const envelopePower = 1.0; // hardcoded value\n const mode = false; // hardcoded value\n\n const NFREQ = samplesOut * 2;\n\n // Initialize the tables and arrays with hardcoded values\n this.bitrevtable = this.initBitRevTable(NFREQ);\n this.cossintable = this.initCosSinTable(NFREQ);\n\n this.envelope = this.initEnvelopeTable(samplesIn, envelopePower);\n this.equalize = this.initEqualizeTable(NFREQ, mode);\n\n this.temp1 = new Float32Array(NFREQ);\n this.temp2 = new Float32Array(NFREQ);\n }\n\n private initEqualizeTable(NFREQ: number, mode: boolean): Float32Array {\n const equalize = new Float32Array(NFREQ / 2);\n let bias = 0.04; // FFT.INITIAL_BIAS\n\n for (let i = 0; i < NFREQ / 2; i++) {\n const invHalfNfreq = (9.0 - bias) / (NFREQ / 2);\n equalize[i] = Math.log10(1.0 + bias + (i + 1) * invHalfNfreq);\n bias /= 1.0025; // FFT.BIAS_DECAY_RATE\n }\n\n return equalize;\n }\n\n private initEnvelopeTable(samplesIn: number, power: number): Float32Array {\n const mult = (1.0 / samplesIn) * FFT.TWO_PI;\n const envelope = new Float32Array(samplesIn);\n\n for (let i = 0; i < samplesIn; i++) {\n envelope[i] = Math.pow(\n 0.5 + 0.5 * Math.sin(i * mult - FFT.HALF_PI),\n power\n );\n }\n\n return envelope;\n }\n\n private initBitRevTable(NFREQ: number): number[] {\n const bitrevtable = new Array(NFREQ);\n\n for (let i = 0; i < NFREQ; i++) {\n bitrevtable[i] = i;\n }\n\n for (let i = 0, j = 0; i < NFREQ; i++) {\n if (j > i) {\n const temp = bitrevtable[i];\n bitrevtable[i] = bitrevtable[j];\n bitrevtable[j] = temp;\n }\n\n let m = NFREQ >> 1;\n while (m >= 1 && j >= m) {\n j -= m;\n m >>= 1;\n }\n\n j += m;\n }\n\n return bitrevtable;\n }\n\n private initCosSinTable(NFREQ: number): Float32Array[] {\n const cossintable: Float32Array[] = [];\n let dftsize = 2;\n\n while (dftsize <= NFREQ) {\n const theta = (-2.0 * Math.PI) / dftsize;\n cossintable.push(new Float32Array([Math.cos(theta), Math.sin(theta)]));\n dftsize <<= 1;\n }\n\n return cossintable;\n }\n\n public timeToFrequencyDomain(\n inWavedata: Float32Array,\n outSpectraldata: Float32Array\n ): void {\n if (!this.temp1 || !this.temp2 || !this.cossintable) return;\n // Converts time-domain samples from inWavedata[]\n // into frequency-domain samples in outSpectraldata[].\n // The array lengths are the two parameters to Init().\n\n // The last sample of the output data will represent the frequency\n // that is 1/4th of the input sampling rate. For example,\n // if the input wave data is sampled at 44,100 Hz, then the last\n // sample of the spectral data output will represent the frequency\n // 11,025 Hz. The first sample will be 0 Hz; the frequencies of\n // the rest of the samples vary linearly in between.\n // Note that since human hearing is limited to the range 200 - 20,000\n // Hz. 200 is a low bass hum; 20,000 is an ear-piercing high shriek.\n // Each time the frequency doubles, that sounds like going up an octave.\n // That means that the difference between 200 and 300 Hz is FAR more\n // than the difference between 5000 and 5100, for example!\n // So, when trying to analyze bass, you'll want to look at (probably)\n // the 200-800 Hz range; whereas for treble, you'll want the 1,400 -\n // 11,025 Hz range.\n // If you want to get 3 bands, try it this way:\n // a) 11,025 / 200 = 55.125\n // b) to get the number of octaves between 200 and 11,025 Hz, solve for n:\n // 2^n = 55.125\n // n = log 55.125 / log 2\n // n = 5.785\n // c) so each band should represent 5.785/3 = 1.928 octaves; the ranges are:\n // 1) 200 - 200*2^1.928 or 200 - 761 Hz\n // 2) 200*2^1.928 - 200*2^(1.928*2) or 761 - 2897 Hz\n // 3) 200*2^(1.928*2) - 200*2^(1.928*3) or 2897 - 11025 Hz\n\n // A simple sine-wave-based envelope is convolved with the waveform\n // data before doing the FFT, to emeliorate the bad frequency response\n // of a square (i.e. nonexistent) filter.\n\n // You might want to slightly damp (blur) the input if your signal isn't\n // of a very high quality, to reduce high-frequency noise that would\n // otherwise show up in the output.\n\n // code should be smart enough to call Init before this function\n //if (!bitrevtable) return;\n //if (!temp1) return;\n //if (!temp2) return;\n //if (!cossintable) return;\n\n // 1. set up input to the fft\n for (let i = 0; i < this.temp1.length; i++) {\n const idx = this.bitrevtable[i];\n if (idx < inWavedata.length) {\n this.temp1[i] =\n inWavedata[idx] * (this.envelope ? this.envelope[idx] : 1);\n } else {\n this.temp1[i] = 0;\n }\n }\n this.temp2.fill(0);\n\n // 2. Perform FFT\n const real = this.temp1;\n const imag = this.temp2;\n let dftsize = 2;\n let t = 0;\n\n while (dftsize <= this.temp1.length) {\n const wpr = this.cossintable[t][0];\n const wpi = this.cossintable[t][1];\n let wr = 1.0;\n let wi = 0.0;\n const hdftsize = dftsize >> 1;\n\n for (let m = 0; m < hdftsize; m += 1) {\n for (let i = m; i < this.temp1.length; i += dftsize) {\n const j = i + hdftsize;\n const tempr = wr * real[j] - wi * imag[j];\n const tempi = wr * imag[j] + wi * real[j];\n real[j] = real[i] - tempr;\n imag[j] = imag[i] - tempi;\n real[i] += tempr;\n imag[i] += tempi;\n }\n\n const wtemp = wr;\n wr = wr * wpr - wi * wpi;\n wi = wi * wpr + wtemp * wpi;\n }\n\n dftsize <<= 1;\n ++t;\n }\n\n // 3. take the magnitude & equalize it (on a log10 scale) for output\n for (let i = 0; i < outSpectraldata.length; i++) {\n outSpectraldata[i] =\n Math.sqrt(real[i] * real[i] + imag[i] * imag[i]) *\n (this.equalize ? this.equalize[i] : 1);\n }\n }\n}\n","import { FFT } from \"./FFTNullsoft\";\n\nexport interface Vis {\n canvas: HTMLCanvasElement;\n colors: string[];\n analyser?: AnalyserNode;\n oscStyle?: \"dots\" | \"solid\" | \"lines\";\n bandwidth?: \"wide\" | \"thin\";\n coloring?: \"fire\" | \"line\" | \"normal\";\n peaks?: boolean;\n saFalloff?: \"slower\" | \"slow\" | \"moderate\" | \"fast\" | \"faster\";\n saPeakFalloff?: \"slower\" | \"slow\" | \"moderate\" | \"fast\" | \"faster\";\n sa?: \"analyzer\" | \"oscilloscope\" | \"none\";\n renderHeight: number;\n smallVis?: boolean;\n pixelDensity?: number;\n doubled?: boolean;\n isMWOpen?: boolean;\n}\n\n/**\n * Base class of Visualizer (animation frame renderer engine)\n */\nabstract class VisPaintHandler {\n _vis: Vis;\n _ctx: CanvasRenderingContext2D | null;\n\n constructor(vis: Vis) {\n this._vis = vis;\n this._ctx = vis.canvas!.getContext(\"2d\");\n }\n\n /**\n * Attempt to build cached bitmaps for later use while rendering a frame.\n * Purpose: fast rendering in animation loop\n */\n prepare() {}\n\n /**\n * Called once per frame rendering\n */\n paintFrame() {}\n\n /**\n * Attempt to cleanup cached bitmaps\n */\n dispose() {}\n}\n\n/**\n * Feeds audio data to the FFT.\n * @param analyser The AnalyserNode used to get the audio data.\n * @param fft The FFTNullsoft instance from the PaintHandler.\n */\nfunction processFFT(\n analyser: AnalyserNode,\n fft: FFT,\n inWaveData: Float32Array,\n outSpectralData: Float32Array\n): void {\n const dataArray = new Uint8Array(1024);\n\n analyser.getByteTimeDomainData(dataArray);\n for (let i = 0; i < dataArray.length; i++) {\n inWaveData[i] = (dataArray[i] - 128) / 24;\n }\n fft.timeToFrequencyDomain(inWaveData, outSpectralData);\n}\n\n//? =============================== BAR PAINTER ===============================\ntype PaintFrameFunction = () => void;\ntype PaintBarFunction = (\n ctx: CanvasRenderingContext2D,\n x1: number,\n x2: number,\n barHeight: number,\n peakHeight: number\n) => void;\n\nexport class BarPaintHandler extends VisPaintHandler {\n private saPeaks: Int16Array;\n private saData2: Float32Array;\n private saData: Int16Array;\n private saFalloff: Float32Array;\n private sample: Float32Array;\n private barPeak: Int16Array;\n private chunk: number;\n private uVar12: number;\n private falloff: number;\n private peakFalloff: number;\n private pushDown: number;\n\n private inWaveData = new Float32Array(1024);\n private outSpectralData = new Float32Array(512);\n\n _analyser: AnalyserNode;\n _fft: FFT;\n _color: string = \"rgb(255,255,255)\";\n _colorPeak: string = \"rgb(255,255,255)\";\n // Off-screen canvas for pre-rendering a single bar gradient\n _bar: HTMLCanvasElement = document.createElement(\"canvas\");\n _peak: HTMLCanvasElement = document.createElement(\"canvas\");\n _16h: HTMLCanvasElement = document.createElement(\"canvas\"); // non-stretched\n _bufferLength: number;\n _dataArray: Uint8Array;\n colorssmall: string[];\n colorssmall2: string[];\n _renderHeight: number;\n _smallVis: boolean;\n _pixelDensity: number;\n _doubled: boolean;\n _isMWOpen: boolean;\n paintBar: PaintBarFunction;\n paintFrame: PaintFrameFunction;\n\n constructor(vis: Vis) {\n super(vis);\n this._analyser = this._vis.analyser!;\n this._fft = new FFT();\n this._bufferLength = this._analyser.frequencyBinCount;\n this._dataArray = new Uint8Array(this._bufferLength);\n\n this._renderHeight = vis.renderHeight!;\n this._smallVis = vis.smallVis!;\n this._pixelDensity = vis.pixelDensity!;\n this._doubled = vis.doubled!;\n this._isMWOpen = vis.isMWOpen!;\n\n this.colorssmall = [\n vis.colors[17],\n vis.colors[14],\n vis.colors[11],\n vis.colors[8],\n vis.colors[4],\n ];\n this.colorssmall2 = [\n vis.colors[17],\n vis.colors[16],\n vis.colors[14],\n vis.colors[13],\n vis.colors[11],\n vis.colors[10],\n vis.colors[8],\n vis.colors[7],\n vis.colors[5],\n vis.colors[4],\n ];\n\n this._16h.width = 1;\n this._16h.height = 16;\n this._16h.setAttribute(\"width\", \"75\");\n this._16h.setAttribute(\"height\", \"16\");\n\n // draws the analyzer and handles changing the bandwidth correctly\n this.paintFrame = this.paintAnalyzer.bind(this);\n\n this.saPeaks = new Int16Array(76).fill(0);\n this.saData2 = new Float32Array(76).fill(0);\n this.saData = new Int16Array(76).fill(0);\n this.saFalloff = new Float32Array(76).fill(0);\n this.sample = new Float32Array(76).fill(0);\n this.barPeak = new Int16Array(76).fill(0); // Needs to be specified as Int16 else the peaks don't behave as they should\n this.chunk = 0;\n this.uVar12 = 0;\n this.pushDown = 0;\n\n switch (this._vis.coloring) {\n case \"fire\":\n this.paintBar = this.paintBarFire.bind(this);\n break;\n case \"line\":\n this.paintBar = this.paintBarLine.bind(this);\n break;\n default:\n this.paintBar = this.paintBarNormal.bind(this);\n break;\n }\n\n switch (this._vis.saFalloff) {\n case \"slower\":\n this.falloff = 3;\n break;\n case \"slow\":\n this.falloff = 6;\n break;\n case \"moderate\":\n this.falloff = 12;\n break;\n case \"fast\":\n this.falloff = 16;\n break;\n case \"faster\":\n this.falloff = 32;\n break;\n default:\n this.falloff = 12;\n break;\n }\n\n switch (this._vis.saPeakFalloff) {\n case \"slower\":\n this.peakFalloff = 1.05;\n break;\n case \"slow\":\n this.peakFalloff = 1.1;\n break;\n case \"moderate\":\n this.peakFalloff = 1.2;\n break;\n case \"fast\":\n this.peakFalloff = 1.4;\n break;\n case \"faster\":\n this.peakFalloff = 1.6;\n break;\n default:\n this.peakFalloff = 1.1;\n break;\n }\n }\n\n prepare() {\n const vis = this._vis;\n\n //? paint peak\n this._peak.height = 1;\n this._peak.width = 1;\n let ctx = this._peak.getContext(\"2d\")!;\n ctx.fillStyle = vis.colors[23];\n ctx.fillRect(0, 0, 1, 1);\n\n if (this._vis.smallVis) {\n this.pushDown = 0;\n } else if (this._vis.doubled && !this._vis.isMWOpen) {\n this.pushDown = 2;\n } else if (this._vis.doubled) {\n this.pushDown = 0;\n } else {\n this.pushDown = 2;\n }\n\n //? paint bar\n this._bar.height = 16;\n this._bar.width = 1;\n this._bar.setAttribute(\"width\", \"1\");\n this._bar.setAttribute(\"height\", \"16\");\n ctx = this._bar.getContext(\"2d\")!;\n for (let y = 0; y < 16; y++) {\n if (this._vis.pixelDensity === 2 && this._vis.smallVis) {\n ctx.fillStyle = this.colorssmall2[-y + 9];\n } else {\n ctx.fillStyle = this._vis.smallVis\n ? this.colorssmall[-y + 4]\n : vis.colors[2 - this.pushDown - -y];\n }\n ctx.fillRect(0, y, 1, y + 1);\n }\n }\n\n /**\n * ⬜⬜⬜ ⬜⬜⬜\n * 🟧🟧🟧\n * 🟫🟫🟫 🟧🟧🟧\n * 🟫🟫🟫 🟫🟫🟫\n * 🟫🟫🟫 🟫🟫🟫 ⬜⬜⬜\n * 🟫🟫🟫 🟫🟫🟫 🟧🟧🟧\n * 🟫🟫🟫 🟫🟫🟫 🟫🟫🟫\n * 1 bar = multiple pixels\n */\n /**\n * ⬜⬜\n * 🟧\n * 🟫🟧\n * 🟫🟫⬜⬜\n * 🟫🟫🟧\n * 🟫🟫🟫🟧⬜\n * 🟫🟫🟫🟫🟧\n * drawing 1pixel width bars\n */\n paintAnalyzer() {\n if (!this._ctx) return;\n const ctx = this._ctx;\n const w = ctx.canvas.width;\n const h = ctx.canvas.height;\n ctx.fillStyle = this._color;\n\n const maxFreqIndex = 512;\n const logMaxFreqIndex = Math.log10(maxFreqIndex);\n const logMinFreqIndex = 0;\n\n let targetSize: number;\n let maxHeight: number;\n let maxWidth: number;\n if (this._vis.pixelDensity === 2) {\n targetSize = 75;\n maxHeight = 10;\n } else {\n targetSize = this._vis.smallVis ? 40 : 75;\n maxHeight = this._vis.smallVis ? 5 : 15;\n }\n\n processFFT(\n this._analyser,\n this._fft,\n this.inWaveData,\n this.outSpectralData\n );\n\n if (this._vis.smallVis) {\n if (this._vis.pixelDensity === 2) {\n maxWidth = 75; // this is not 37*2, but if this was 74, we'd be missing a pixel\n // someone here at Nullsoft screwed up...? or thought 74 didn't look good, I don't know.\n } else {\n maxWidth = 37;\n }\n } else {\n maxWidth = 75;\n }\n\n // This is to roughly emulate the Analyzer in more modern versions of Winamp.\n // 2.x and early 5.x versions had a completely linear(?) FFT, if so desired the\n // scale variable can be set to 0.0\n\n // This factor controls the scaling from linear to logarithmic.\n // scale = 0.0 -> fully linear scaling\n // scale = 1.0 -> fully logarithmic scaling\n const scale = 0.91; // Adjust this value between 0.0 and 1.0\n for (let x = 0; x < targetSize; x++) {\n // Linear interpolation between linear and log scaling\n const linearIndex = (x / (targetSize - 1)) * (maxFreqIndex - 1);\n const logScaledIndex =\n logMinFreqIndex +\n ((logMaxFreqIndex - logMinFreqIndex) * x) / (targetSize - 1);\n const logIndex = Math.pow(10, logScaledIndex);\n\n // Interpolating between linear and logarithmic scaling\n const scaledIndex = (1.0 - scale) * linearIndex + scale * logIndex;\n\n let index1 = Math.floor(scaledIndex);\n let index2 = Math.ceil(scaledIndex);\n\n if (index1 >= maxFreqIndex) {\n index1 = maxFreqIndex - 1;\n }\n if (index2 >= maxFreqIndex) {\n index2 = maxFreqIndex - 1;\n }\n\n if (index1 === index2) {\n this.sample[x] = this.outSpectralData[index1];\n } else {\n const frac2 = scaledIndex - index1;\n const frac1 = 1.0 - frac2;\n this.sample[x] =\n frac1 * this.outSpectralData[index1] +\n frac2 * this.outSpectralData[index2];\n }\n }\n\n for (let x = 0; x < maxWidth; x++) {\n // Based on research of looking at Winamp 5.666 and 2.63 executables\n\n // if our bandwidth is \"wide\", chunk every 5 instances of the bars,\n // add them together and display them\n if (this._vis.bandwidth === \"wide\") {\n this.chunk = this.chunk = x & 0xfffffffc;\n this.uVar12 =\n (this.sample[this.chunk + 3] +\n this.sample[this.chunk + 2] +\n this.sample[this.chunk + 1] +\n this.sample[this.chunk]) /\n 4;\n this.saData[x] = this.uVar12;\n } else {\n this.chunk = 0;\n this.saData[x] = this.sample[x];\n }\n\n if (this.saData[x] >= maxHeight) {\n this.saData[x] = maxHeight;\n }\n\n // prevents saPeaks going out of bounds when switching to windowShade mode\n if (this.saPeaks[x] >= maxHeight * 256) {\n this.saPeaks[x] = maxHeight * 256;\n }\n\n this.saFalloff[x] -= this.falloff / 16.0;\n // Possible bar fall off values are\n // 3, 6, 12, 16, 32\n // Should there ever be some form of config options,\n // these should be used\n // 12 is the default of a fresh new Winamp installation\n\n if (this.saFalloff[x] <= this.saData[x]) {\n this.saFalloff[x] = this.saData[x];\n }\n\n if (this.saPeaks[x] <= Math.round(this.saFalloff[x] * 256)) {\n this.saPeaks[x] = this.saFalloff[x] * 256;\n this.saData2[x] = 3.0;\n }\n\n this.barPeak[x] = this.saPeaks[x] / 256;\n\n this.saPeaks[x] -= Math.round(this.saData2[x]);\n this.saData2[x] *= this.peakFalloff;\n // Possible peak fall off values are\n // 1.05f, 1.1f, 1.2f, 1.4f, 1.6f\n // 1.1f is the default of a fresh new Winamp installation\n if (this.saPeaks[x] <= 0) {\n this.saPeaks[x] = 0;\n }\n\n if (this._vis.smallVis) {\n // SORRY NOTHING\n // ironically enough the peaks do appear at the bottom here\n } else if (Math.round(this.barPeak[x]) < 1) {\n this.barPeak[x] = -3; // Push peaks outside the viewable area, this isn't a Modern Skin!\n }\n\n // skip rendering if x is 4\n if (!(x === this.chunk + 3 && this._vis.bandwidth === \"wide\")) {\n this.paintBar(\n ctx,\n x,\n x,\n Math.round(this.saFalloff[x]) - this.pushDown,\n this.barPeak[x] + 1 - this.pushDown\n );\n }\n }\n }\n\n /**\n * 🟥\n * 🟧🟧\n * 🟨🟨🟨\n * 🟩🟩🟩🟩\n */\n paintBarNormal(\n ctx: CanvasRenderingContext2D,\n x: number,\n x2: number,\n barHeight: number,\n peakHeight: number\n ) {\n const h = ctx.canvas.height;\n const y = h - barHeight;\n\n ctx.drawImage(this._bar, 0, y, 1, h - y, x, y, x2 - x + 1, h - y);\n\n if (this._vis.peaks) {\n const peakY = h - peakHeight;\n ctx.drawImage(this._peak, 0, 0, 1, 1, x, peakY, x2 - x + 1, 1);\n }\n }\n\n /**\n * 🟥\n * 🟧🟥\n * 🟨🟧🟥\n * 🟩🟨🟧🟥\n */\n paintBarFire(\n ctx: CanvasRenderingContext2D,\n x: number,\n x2: number,\n barHeight: number,\n peakHeight: number\n ) {\n const h = ctx.canvas.height;\n const y = h - barHeight;\n\n ctx.drawImage(\n this._bar,\n 0,\n 0,\n this._bar.width,\n h - y,\n x,\n y,\n x2 - x + 1,\n h - y\n );\n\n if (this._vis.peaks) {\n const peakY = h - peakHeight;\n ctx.drawImage(this._peak, 0, 0, 1, 1, x, peakY, x2 - x + 1, 1);\n }\n }\n\n /**\n * 🟥\n * 🟥🟧\n * 🟥🟧🟨\n * 🟥🟧🟨🟩\n */\n paintBarLine(\n ctx: CanvasRenderingContext2D,\n x: number,\n x2: number,\n barHeight: number,\n peakHeight: number\n ) {\n const h = ctx.canvas.height;\n const y = h - barHeight;\n // FIXME: Line drawing is currently Fire mode!\n\n ctx.drawImage(\n this._bar,\n 0, // sx\n 0, // sy\n this._bar.width, // sw\n h - y, // sh\n x,\n y, // dx,dy\n x2 - x + 1, //dw\n h - y //dh\n );\n\n if (this._vis.peaks) {\n const peakY = h - peakHeight;\n ctx.drawImage(this._peak, 0, 0, 1, 1, x, peakY, x2 - x + 1, 1);\n }\n }\n}\n\n//? =============================== OSCILLOSCOPE PAINTER ===============================\n\ntype PaintWavFunction = (x: number, y: number) => void;\n\nfunction slice1st(\n dataArray: Uint8Array,\n sliceWidth: number,\n sliceNumber: number\n): number {\n const start = sliceWidth * sliceNumber;\n return dataArray[start];\n}\n\nexport class WavePaintHandler extends VisPaintHandler {\n private pushDown: number;\n\n _analyser: AnalyserNode;\n _bufferLength: number;\n _lastX: number = 0;\n _lastY: number = 0;\n _dataArray: Uint8Array;\n _pixelRatio: number; // 1 or 2\n // Off-screen canvas for drawing perfect pixel (no blurred lines)\n _bar: HTMLCanvasElement = document.createElement(\"canvas\");\n _16h: HTMLCanvasElement = document.createElement(\"canvas\"); // non-stretched\n paintWav: PaintWavFunction;\n\n constructor(vis: Vis) {\n super(vis);\n this._analyser = this._vis.analyser!;\n this._bufferLength = this._analyser.fftSize;\n this._dataArray = new Uint8Array(this._bufferLength);\n\n this._16h.width = 1;\n this._16h.height = 16;\n this._16h.setAttribute(\"width\", \"75\");\n this._16h.setAttribute(\"height\", \"16\");\n\n //* see https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio#monitoring_screen_resolution_or_zoom_level_changes\n this._pixelRatio = window.devicePixelRatio || 1;\n\n // draws the oscilloscope and handles overly complex operations\n // in relation to oscilloscope style and main window states\n this.paintWav = this.paintOscilloscope.bind(this);\n this.pushDown = 0;\n }\n\n prepare() {\n const vis = this._vis;\n\n //? paint bar\n this._bar.width = 1;\n this._bar.height = 5;\n this._bar.setAttribute(\"width\", \"1\");\n this._bar.setAttribute(\"height\", \"5\");\n const ctx = this._bar.getContext(\"2d\");\n if (ctx) {\n for (let y = 0; y < 5; y++) {\n ctx.fillStyle = vis.colors[18 + y];\n ctx.fillRect(0, y, 1, y + 1);\n }\n }\n\n // @ts-ignore\n this._ctx.imageSmoothingEnabled = false;\n // @ts-ignore\n this._ctx.mozImageSmoothingEnabled = false;\n // @ts-ignore\n this._ctx.webkitImageSmoothingEnabled = false;\n // @ts-ignore\n this._ctx.msImageSmoothingEnabled = false;\n }\n\n paintFrame() {\n if (!this._ctx) return;\n this._analyser.getByteTimeDomainData(this._dataArray);\n this._dataArray = this._dataArray.slice(0, 576);\n const bandwidth = this._dataArray.length;\n\n const width = this._ctx!.canvas.width;\n const height = this._ctx!.canvas.height;\n\n // width would technically be correct, but if the main window is\n // in windowshade mode, it is set to 150, making sliceWidth look\n // wrong in that mode, concerning the oscilloscope\n const sliceWidth = Math.floor(bandwidth / 75);\n\n // Iterate over the width of the canvas in fixed 75 pixels.\n for (let j = 0; j <= 75; j++) {\n const amplitude = slice1st(this._dataArray, sliceWidth, j);\n this.paintWav(j, amplitude);\n }\n }\n\n /**\n *\n * @param y 0..5\n * @returns value in use for coloring stuff in\n */\n colorIndex(y: number): number {\n if (this._vis.smallVis) {\n return 0;\n }\n if (y >= 14) return 4;\n if (y >= 12) return 3;\n if (y >= 10) return 2;\n if (y >= 8) return 1;\n if (y >= 6) return 0;\n if (y >= 4) return 1;\n if (y >= 2) return 2;\n if (y >= 0) return 3;\n return 3;\n }\n\n paintOscilloscope(x: number, y: number) {\n // we skip rendering of the oscilloscope if we are in windowShade mode\n // previously the renderWidth variable in Vis.tsx scaled down the width\n // of the canvas, but i didn't really like the idea since we squished\n // down the result of y to fit within 35/75 pixels, winamp doesn't\n // squish it's audio data down in the x axis, resulting in only\n // getting a small portion of what we hear, they did it, so do we\n if (this._vis.smallVis && this._vis.doubled) {\n if (x >= 75) {\n // SORRY NOTHING\n return;\n }\n } else if (x >= (this._vis.smallVis ? 38 : 75)) {\n // SORRY NOTHING\n return;\n }\n // pushes vis down if not double size, winamp does this\n if (this._vis.smallVis) {\n this.pushDown = 0;\n } else if (this._vis.doubled && !this._vis.isMWOpen) {\n this.pushDown = 2;\n } else if (this._vis.doubled) {\n this.pushDown = 0;\n } else {\n this.pushDown = 2;\n }\n\n // rounds y down to the nearest int\n // before that even happens, y is scaled down and then doubled again (could've done * 8\n // but i feel this makes more sense to me)\n // y is then adjusted downward to be in the center of the scope\n y = Math.round((y / 16) * 2) - 9;\n\n // adjusts the center point of y if we are in windowShade mode, and if pixelDensity is 2\n // where it's adjusted further to give you the fullest view possible in that small window\n // else we leave y as is\n let yadjust: number;\n if (this._vis.pixelDensity === 2) yadjust = 3;\n else yadjust = 5;\n y = this._vis.smallVis ? y - yadjust : y;\n\n // scales down the already scaled down result of y to 0..10 or 0..5, depending on\n // if pixelDensity returns 2, this serves the purpose of avoiding full sending\n // y to that really tiny space we have there\n if (this._vis.smallVis && this._vis.pixelDensity === 2) {\n y = Math.round(((y + 11) / 16) * 10) - 5;\n } else if (this._vis.smallVis) {\n y = Math.round(((y + 11) / 16) * 5) - 2;\n }\n\n // clamp y to be within a certain range, here it would be 0..10 if both windowShade and pixelDensity apply\n // else we clamp y to 0..15 or 0..3, depending on renderHeight\n if (this._vis.smallVis && this._vis.pixelDensity === 2) {\n y = y < 0 ? 0 : y > 10 - 1 ? 10 - 1 : y;\n } else {\n y =\n y < 0\n ? 0\n : y > this._vis.renderHeight - 1\n ? this._vis.renderHeight - 1\n : y;\n }\n const v = y;\n if (x === 0) this._lastY = y;\n\n let top = y;\n let bottom = this._lastY;\n this._lastY = y;\n\n if (this._vis.oscStyle === \"solid\") {\n if (this._vis.pixelDensity === 2) {\n if (y >= (this._vis.smallVis ? 5 : 8)) {\n top = this._vis.smallVis ? 5 : 8;\n bottom = y;\n } else {\n top = y;\n bottom = this._vis.smallVis ? 5 : 7;\n }\n if (x === 0 && this._vis.smallVis) {\n // why? i dont know!!\n top = y;\n bottom = y;\n }\n } else {\n if (y >= (this._vis.smallVis ? 2 : 8)) {\n top = this._vis.smallVis ? 2 : 8;\n bottom = y;\n } else {\n top = y;\n bottom = this._vis.smallVis ? 2 : 7;\n }\n if (x === 0 && this._vis.smallVis) {\n // why? i dont know!!\n top = y;\n bottom = y;\n }\n }\n } else if (this._vis.oscStyle === \"dots\") {\n top = y;\n bottom = y;\n } else if (bottom < top) {\n [bottom, top] = [top, bottom];\n if (this._vis.smallVis) {\n // SORRY NOTHING\n // really just removes the smoother line descending thing that's present in the Main Window\n } else {\n top++; //top++, that emulates Winamp's/WACUP's OSC behavior correctly\n }\n }\n\n for (y = top; y <= bottom; y++) {\n this._ctx!.drawImage(\n this._bar,\n 0,\n this.colorIndex(v), // sx,sy\n 1,\n 1, // sw,sh\n x,\n y + this.pushDown,\n 1,\n 1 //dw,dh\n );\n }\n }\n}\n\nexport class NoVisualizerHandler extends VisPaintHandler {\n cleared: boolean = false;\n prepare() {\n this.cleared = false;\n }\n\n paintFrame() {\n if (!this._ctx) return;\n const ctx = this._ctx;\n this.cleared = true;\n }\n}\n","import React, { useMemo, useState, useLayoutEffect, useEffect } from \"react\";\n\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\nimport { VISUALIZERS, MEDIA_STATUS } from \"../constants\";\n\nimport {\n Vis as IVis,\n BarPaintHandler,\n WavePaintHandler,\n NoVisualizerHandler,\n} from \"./VisPainter\";\n\ntype Props = {\n analyser: AnalyserNode;\n};\n\n// Pre-render the background grid\nfunction preRenderBg(\n width: number,\n height: number,\n bgColor: string,\n fgColor: string,\n windowShade: boolean,\n pixelDensity: number\n): HTMLCanvasElement {\n // Off-screen canvas for pre-rendering the background\n const bgCanvas = document.createElement(\"canvas\");\n bgCanvas.width = width;\n bgCanvas.height = height;\n const distance = 2 * pixelDensity;\n\n const bgCanvasCtx = bgCanvas.getContext(\"2d\");\n if (bgCanvasCtx == null) {\n throw new Error(\"Could not construct canvas context\");\n }\n bgCanvasCtx.fillStyle = bgColor;\n bgCanvasCtx.fillRect(0, 0, width, height);\n if (!windowShade) {\n bgCanvasCtx.fillStyle = fgColor;\n for (let x = 0; x < width; x += distance) {\n for (let y = pixelDensity; y < height; y += distance) {\n bgCanvasCtx.fillRect(x, y, pixelDensity, pixelDensity);\n }\n }\n }\n return bgCanvas;\n}\n\nexport default function Vis({ analyser }: Props) {\n useLayoutEffect(() => {\n analyser.fftSize = 1024;\n }, [analyser, analyser.fftSize]);\n\n const colors = useTypedSelector(Selectors.getSkinColors);\n const mode = useTypedSelector(Selectors.getVisualizerStyle);\n const audioStatus = useTypedSelector(Selectors.getMediaStatus);\n const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n const getWindowOpen = useTypedSelector(Selectors.getWindowOpen);\n const isMWOpen = getWindowOpen(\"main\");\n const doubled = useTypedSelector(Selectors.getDoubled);\n const toggleVisualizerStyle = useActionCreator(Actions.toggleVisualizerStyle);\n const windowShade = getWindowShade(\"main\");\n\n const smallVis = windowShade && isMWOpen;\n const renderHeight = smallVis ? 5 : 16;\n const renderWidth = 76;\n const pixelDensity = doubled && smallVis ? 2 : 1;\n const renderWidthBG = !isMWOpen\n ? renderWidth\n : windowShade\n ? doubled\n ? renderWidth\n : 38\n : renderWidth * pixelDensity;\n\n const width = renderWidth * pixelDensity;\n const height = renderHeight * pixelDensity;\n\n const bgCanvas = useMemo(() => {\n return preRenderBg(\n renderWidthBG,\n height,\n colors[0],\n colors[1],\n Boolean(windowShade),\n pixelDensity\n );\n }, [colors, height, renderWidthBG, windowShade, pixelDensity]);\n\n const [canvas, setCanvas] = useState<HTMLCanvasElement | null>(null);\n\n //? painter administration\n const painter = useMemo(() => {\n if (!canvas) return null;\n\n const vis: IVis = {\n canvas,\n colors,\n analyser,\n oscStyle: \"lines\",\n bandwidth: \"wide\",\n coloring: \"normal\",\n peaks: true,\n saFalloff: \"moderate\",\n saPeakFalloff: \"slow\",\n sa: \"analyzer\", // unused, but hopefully will be used in the future for providing config options\n renderHeight,\n smallVis,\n pixelDensity,\n doubled,\n isMWOpen,\n };\n\n switch (mode) {\n case VISUALIZERS.OSCILLOSCOPE:\n return new WavePaintHandler(vis);\n case VISUALIZERS.BAR:\n return new BarPaintHandler(vis);\n case VISUALIZERS.NONE:\n return new NoVisualizerHandler(vis);\n default:\n return new NoVisualizerHandler(vis);\n }\n }, [\n analyser,\n canvas,\n mode,\n colors,\n renderHeight,\n smallVis,\n pixelDensity,\n doubled,\n isMWOpen,\n ]);\n\n // reacts to changes in doublesize mode\n useEffect(() => {\n if (canvas && painter) {\n const canvasCtx = canvas.getContext(\"2d\");\n if (canvasCtx) {\n painter.prepare();\n // wipes the canvas clean if playback is paused and doubled is changing\n if (audioStatus === MEDIA_STATUS.PAUSED) {\n canvasCtx.clearRect(0, 0, canvas.width, canvas.height);\n }\n }\n }\n // TODO: Double check expected behavior when pause state changes.\n // Here we ignore the audioStatus dependency because we don't\n // want to clear the canvas when the audio is paused.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [doubled, canvas, painter]);\n\n useEffect(() => {\n if (canvas == null || painter == null) {\n return;\n }\n\n const canvasCtx = canvas.getContext(\"2d\");\n if (canvasCtx == null) {\n return;\n }\n canvasCtx.imageSmoothingEnabled = false;\n\n let animationRequest: number | null = null;\n\n const loop = () => {\n canvasCtx.drawImage(bgCanvas, 0, 0);\n painter.paintFrame();\n animationRequest = window.requestAnimationFrame(loop);\n };\n\n if (audioStatus === MEDIA_STATUS.PLAYING) {\n if (mode === VISUALIZERS.NONE) {\n canvasCtx.clearRect(0, 0, renderWidthBG, height);\n } else {\n loop();\n }\n }\n\n return () => {\n if (animationRequest !== null) {\n window.cancelAnimationFrame(animationRequest);\n }\n };\n }, [audioStatus, canvas, painter, bgCanvas, renderWidthBG, height, mode]);\n\n if (audioStatus === MEDIA_STATUS.STOPPED) {\n return null;\n }\n\n return (\n <canvas\n id=\"visualizer\"\n ref={setCanvas}\n style={{ width: renderWidth, height: renderHeight }}\n width={width}\n height={height}\n onClick={toggleVisualizerStyle}\n />\n );\n}\n","import { memo } from \"react\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst ActionButtons = memo(() => {\n const previous = useActionCreator(Actions.previous);\n const play = useActionCreator(Actions.play);\n const pause = useActionCreator(Actions.pause);\n const next = useActionCreator(Actions.next);\n const stop = useActionCreator(Actions.stop);\n return (\n <div className=\"actions\">\n <WinampButton id=\"previous\" onClick={previous} title=\"Previous Track\" />\n <WinampButton id=\"play\" onClick={play} title=\"Play\" />\n <WinampButton id=\"pause\" onClick={pause} title=\"Pause\" />\n <WinampButton id=\"stop\" onClick={stop} title=\"Stop\" />\n <WinampButton id=\"next\" onClick={next} title=\"Next Track\" />\n </div>\n );\n});\n\nexport default ActionButtons;\n","import * as React from \"react\";\n\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\ninterface Props {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport default function Balance({ style, className, id }: Props) {\n const balance = useTypedSelector(Selectors.getBalance);\n const setBalance = useActionCreator(Actions.setBalance);\n const setFocus = useActionCreator(Actions.setFocus);\n const unsetFocus = useActionCreator(Actions.unsetFocus);\n return (\n <input\n id={id}\n className={className}\n type=\"range\"\n min=\"-100\"\n max=\"100\"\n step=\"1\"\n value={balance}\n style={{ ...style, touchAction: \"none\" }}\n onChange={(e) => setBalance(Number(e.target.value))}\n onPointerDown={() => setFocus(\"balance\")}\n onPointerUp={unsetFocus}\n title=\"Balance\"\n />\n );\n}\n","import { memo } from \"react\";\n\nimport Balance from \"../Balance\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nexport const offsetFromBalance = (balance: number): number => {\n const percent = Math.abs(balance) / 100;\n const sprite = Math.floor(percent * 27);\n const offset = sprite * 15;\n return offset;\n};\n\nconst MainBalance = memo(() => {\n const balance = useTypedSelector(Selectors.getBalance);\n return (\n <Balance\n id=\"balance\"\n style={{ backgroundPosition: `0 -${offsetFromBalance(balance)}px` }}\n />\n );\n});\n\nexport default MainBalance;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\nimport { useActionCreator } from \"../../hooks\";\n\nimport * as Actions from \"../../actionCreators\";\n\nconst Close = memo(() => {\n const close = useActionCreator(Actions.close);\n return <ClickedDiv id=\"close\" onClick={close} title=\"Close\" />;\n});\n\nexport default Close;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { Action, Thunk } from \"../../types\";\nimport OptionsContextMenu from \"../OptionsContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\n\nfunction setFocusDouble(): Action {\n return Actions.setFocus(\"double\");\n}\n\nfunction mouseUp(): Thunk {\n return (dispatch) => {\n dispatch(Actions.toggleDoubleSizeMode());\n dispatch(Actions.unsetFocus());\n };\n}\n\nconst ClutterBar = memo(() => {\n const handleMouseDown = useActionCreator(setFocusDouble);\n const handleMouseUp = useActionCreator(mouseUp);\n const doubled = useTypedSelector(Selectors.getDoubled);\n return (\n <div id=\"clutter-bar\">\n <ContextMenuTarget bottom renderMenu={() => <OptionsContextMenu />}>\n <div id=\"button-o\" />\n </ContextMenuTarget>\n <div id=\"button-a\" />\n <div id=\"button-i\" />\n <div\n title={\"Toggle Doublesize Mode\"}\n id=\"button-d\"\n className={classnames({ selected: doubled })}\n onPointerUp={handleMouseUp}\n onPointerDown={(e) => {\n e.preventDefault();\n handleMouseDown();\n }}\n />\n <div id=\"button-v\" />\n </div>\n );\n});\n\nexport default ClutterBar;\n","import { memo } from \"react\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst Eject = memo(() => {\n const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n return (\n <WinampButton\n id=\"eject\"\n onClick={openMediaFileDialog}\n title=\"Open File(s)\"\n />\n );\n});\n\nexport default Eject;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nfunction toggleEqualizer() {\n return Actions.toggleWindow(\"equalizer\");\n}\n\nconst EqToggleButton = memo(() => {\n const handleClick = useActionCreator(toggleEqualizer);\n const windowOpen = useTypedSelector(Selectors.getWindowOpen)(\"equalizer\");\n return (\n <WinampButton\n id=\"equalizer-button\"\n className={classnames({ selected: windowOpen })}\n onClick={handleClick}\n title=\"Toggle Graphical Equalizer\"\n />\n );\n});\n\nexport default EqToggleButton;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nfunction togglePlaylist() {\n return Actions.toggleWindow(\"playlist\");\n}\n\nconst PlaylistToggleButton = memo(() => {\n const selected = useTypedSelector(Selectors.getWindowOpen)(\"playlist\");\n const handleClick = useActionCreator(togglePlaylist);\n return (\n <WinampButton\n id=\"playlist-button\"\n className={classnames({ selected })}\n onClick={handleClick}\n title=\"Toggle Playlist Editor\"\n />\n );\n});\n\nexport default PlaylistToggleButton;\n","import { memo, Fragment } from \"react\";\nimport Character from \"./Character\";\n\ninterface Props {\n children: string;\n}\n\nconst CharacterString = memo((props: Props) => {\n const text = `${props.children}` || \"\";\n const chars = text.split(\"\");\n return (\n <Fragment>\n {chars.map((character, index) => (\n <Character key={index + character}>{character}</Character>\n ))}\n </Fragment>\n );\n});\n\nexport default CharacterString;\n","import { memo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst Kbps = memo(() => {\n const kbps = useTypedSelector(Selectors.getKbps);\n return (\n <div id=\"kbps\">\n <CharacterString>{kbps || \"\"}</CharacterString>\n </div>\n );\n});\n\nexport default Kbps;\n","import { memo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst Khz = memo(() => {\n const khz = useTypedSelector(Selectors.getKhz);\n return (\n <div id=\"khz\">\n <CharacterString>{khz || \"\"}</CharacterString>\n </div>\n );\n});\n\nexport default Khz;\n","// Single line text display that can animate and hold multiple registers\n// Knows how to display various modes like tracking, volume, balance, etc.\nimport * as React from \"react\";\nimport CharacterString from \"../CharacterString\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Utils from \"../../utils\";\n\nconst SEPARATOR = \" *** \";\n\nconst CHAR_WIDTH = 5;\nconst MARQUEE_MAX_LENGTH = 31;\n\n// Always positive modulus\nexport const mod = (n: number, m: number): number => ((n % m) + m) % m;\n\nconst isLong = (text: string): boolean => text.length >= MARQUEE_MAX_LENGTH;\n\n// Given text and step, how many pixels should it be shifted?\nexport const stepOffset = (\n text: string,\n step: number,\n pixels: number\n): number => {\n if (!isLong(text)) {\n return 0;\n }\n\n const stepOffsetWidth = step * CHAR_WIDTH; // Steps move one char at a time\n const offset = stepOffsetWidth + pixels;\n const stringLength = (text.length + SEPARATOR.length) * CHAR_WIDTH;\n\n return mod(offset, stringLength);\n};\n\n// Format an int as pixels\nexport const pixelUnits = (pixels: number): string => `${pixels}px`;\n\n// If text is wider than the marquee, it needs to loop\nexport const loopText = (text: string): string =>\n isLong(text)\n ? `${text}${SEPARATOR}${text}`\n : text.padEnd(MARQUEE_MAX_LENGTH, \" \");\n\ninterface UseStepperArgs {\n step: () => void;\n dragging: boolean;\n}\n\n// Call `step` every second, except when dragging. Resume stepping 1 second after dragging ceases.\nfunction useStepper({ step, dragging }: UseStepperArgs): void {\n const [stepping, setStepping] = React.useState(true);\n React.useEffect(() => {\n if (stepping === false) {\n return;\n }\n const stepHandle = setInterval(step, 220);\n return () => clearInterval(stepHandle);\n }, [step, stepping]);\n\n React.useEffect(() => {\n if (dragging) {\n setStepping(false);\n return;\n }\n const steppingTimeout = window.setTimeout(() => {\n setStepping(true);\n }, 1000);\n return () => {\n window.clearTimeout(steppingTimeout);\n };\n }, [dragging]);\n}\n\n// When user calls `handleMouseDown`, and moves the mouse, `dragOffset` will update as they drag.\nfunction useDragX() {\n const [mouseDownX, setMouseDownX] = React.useState<number | null>(null);\n const [dragOffset, setDragOffset] = React.useState(0);\n\n React.useEffect(() => {\n if (mouseDownX == null) {\n return;\n }\n const xStart = mouseDownX;\n const handleMouseMove = (ee: MouseEvent | TouchEvent) => {\n const diff = Utils.getX(ee) - xStart;\n setDragOffset(-diff);\n };\n\n // TODO: Use `once` or something instead of this flag nonsense\n let cleanedUp = false;\n const handleMouseUp = () => {\n if (cleanedUp) {\n return;\n }\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"touchmove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n document.removeEventListener(\"touchend\", handleMouseUp);\n setMouseDownX(null);\n cleanedUp = true;\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"touchmove\", handleMouseMove);\n document.addEventListener(\"touseup\", handleMouseUp);\n document.addEventListener(\"touchend\", handleMouseUp);\n\n return handleMouseUp;\n }, [mouseDownX]);\n\n const handleMouseDown = React.useCallback(\n (\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n ): void => {\n setMouseDownX(Utils.getX(e));\n },\n []\n );\n\n return { handleMouseDown, dragOffset, dragging: mouseDownX != null };\n}\n\nconst Marquee = React.memo(() => {\n const text = useTypedSelector(Selectors.getMarqueeText);\n const doubled = useTypedSelector(Selectors.getDoubled);\n const marqueeStep = useTypedSelector(Selectors.getMarqueeStep);\n const stepMarquee = useActionCreator(Actions.stepMarquee);\n const { handleMouseDown, dragOffset, dragging } = useDragX();\n const offset = stepOffset(text, marqueeStep, dragOffset);\n const offsetPixels = pixelUnits(-offset);\n\n useStepper({ step: stepMarquee, dragging });\n\n return (\n <div\n id=\"marquee\"\n className=\"text\"\n onPointerDown={handleMouseDown}\n title=\"Song Title\"\n >\n <div\n style={{\n whiteSpace: \"nowrap\",\n willChange: \"transform\",\n transform: `translateX(${offsetPixels})`,\n }}\n // Force the DOM node to be recreated when the doubled size changes.\n // This works around a Chrome browser bug where the `will-change: transform;`\n // on this node seems to cause a change to the `image-rendering:\n // pixelated;` which we inherit from `#webamp` not to be respected.\n key={doubled ? \"doubled\" : \"not-doubled\"}\n >\n <CharacterString>{loopText(text)}</CharacterString>\n </div>\n </div>\n );\n});\n\nexport default Marquee;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst MonoStereo = memo(() => {\n const channels = useTypedSelector(Selectors.getChannels);\n return (\n <div className=\"mono-stereo\">\n <div id=\"stereo\" className={classnames({ selected: channels === 2 })} />\n <div id=\"mono\" className={classnames({ selected: channels === 1 })} />\n </div>\n );\n});\n\nexport default MonoStereo;\n","import { FormEvent, memo, useCallback } from \"react\";\n\nimport {\n SEEK_TO_PERCENT_COMPLETE,\n SET_FOCUS,\n UNSET_FOCUS,\n SET_SCRUB_POSITION,\n} from \"../../actionTypes\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useTypedDispatch } from \"../../hooks\";\n\nfunction usePosition() {\n const duration = useTypedSelector(Selectors.getDuration);\n const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n const position = duration ? (Math.floor(timeElapsed) / duration) * 100 : 0;\n const scrubPosition = useTypedSelector(Selectors.getUserInputScrubPosition);\n const userInputFocus = useTypedSelector(Selectors.getUserInputFocus);\n\n const displayedPosition =\n userInputFocus === \"position\" ? scrubPosition : position;\n\n return [position, displayedPosition];\n}\n\nconst Position = memo(() => {\n const [position, displayedPosition] = usePosition();\n const dispatch = useTypedDispatch();\n\n const seekToPercentComplete = useCallback(\n (e: FormEvent) => {\n dispatch({\n type: SEEK_TO_PERCENT_COMPLETE,\n percent: Number((e.target as HTMLInputElement).value),\n });\n dispatch({ type: UNSET_FOCUS });\n },\n [dispatch]\n );\n\n const setPosition = useCallback(\n (e: FormEvent) => {\n dispatch({ type: SET_FOCUS, input: \"position\" });\n dispatch({\n type: SET_SCRUB_POSITION,\n position: Number((e.target as HTMLInputElement).value),\n });\n },\n [dispatch]\n );\n\n // In shade mode, the position slider shows up differently depending on if\n // it's near the start, middle or end of its progress\n let className = \"\";\n if (position <= 33) {\n className = \"left\";\n } else if (position >= 66) {\n className = \"right\";\n }\n\n return (\n <input\n id=\"position\"\n className={className}\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"1\"\n style={{ touchAction: \"none\" }}\n value={displayedPosition}\n onInput={setPosition}\n onChange={\n () => {} /* React complains without this, can probably rename onInput to onChange */\n }\n onPointerUp={seekToPercentComplete}\n onPointerDown={setPosition}\n title=\"Seeking Bar\"\n />\n );\n});\n\nexport default Position;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ContextMenuWraper from \"../ContextMenuWrapper\";\nimport { Node } from \"../ContextMenu\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst Repeat = memo(() => {\n const repeat = useTypedSelector(Selectors.getRepeat);\n const handleClick = useActionCreator(Actions.toggleRepeat);\n return (\n <ContextMenuWraper\n renderContents={() => (\n <Node\n checked={repeat}\n label=\"Repeat\"\n onClick={handleClick}\n hotkey=\"(R)\"\n />\n )}\n >\n <WinampButton\n id=\"repeat\"\n className={classnames({ selected: repeat })}\n onClick={handleClick}\n title=\"Toggle Repeat\"\n />\n </ContextMenuWraper>\n );\n});\n\nexport default Repeat;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst Shade = memo(() => {\n const handleClick = useActionCreator(Actions.toggleMainWindowShadeMode);\n return (\n <ClickedDiv\n id=\"shade\"\n onPointerDown={handleClick}\n onDoubleClick={(e) => e.stopPropagation()}\n title=\"Toggle Windowshade Mode\"\n />\n );\n});\n\nexport default Shade;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst Minimize = memo(() => {\n const minimize = useActionCreator(Actions.minimize);\n return <ClickedDiv id=\"minimize\" title=\"Minimize\" onClick={minimize} />;\n});\n\nexport default Minimize;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ContextMenuWraper from \"../ContextMenuWrapper\";\nimport { Node } from \"../ContextMenu\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst Shuffle = memo(() => {\n const shuffle = useTypedSelector(Selectors.getShuffle);\n const handleClick = useActionCreator(Actions.toggleShuffle);\n return (\n <ContextMenuWraper\n renderContents={() => (\n <Node\n checked={shuffle}\n label=\"Shuffle\"\n onClick={handleClick}\n hotkey=\"(S)\"\n />\n )}\n >\n <WinampButton\n id=\"shuffle\"\n className={classnames({ selected: shuffle })}\n onClick={handleClick}\n title=\"Toggle Shuffle\"\n />\n </ContextMenuWraper>\n );\n});\n\nexport default Shuffle;\n","import { memo } from \"react\";\nimport * as Utils from \"../../utils\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { TIME_MODE } from \"../../constants\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\nconst Time = memo(() => {\n const toggleTimeMode = useActionCreator(Actions.toggleTimeMode);\n const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n const duration = useTypedSelector(Selectors.getDuration) || 0;\n const timeMode = useTypedSelector(Selectors.getTimeMode);\n const seconds =\n timeMode === TIME_MODE.ELAPSED ? timeElapsed : duration - timeElapsed;\n\n const timeObj = Utils.getTimeObj(seconds);\n return (\n <div id=\"time\" onClick={toggleTimeMode} className=\"countdown\">\n {timeMode === TIME_MODE.REMAINING && <div id=\"minus-sign\" />}\n <div\n id=\"minute-first-digit\"\n className={`digit digit-${timeObj.minutesFirstDigit}`}\n />\n <div\n id=\"minute-second-digit\"\n className={`digit digit-${timeObj.minutesSecondDigit}`}\n />\n <div\n id=\"second-first-digit\"\n className={`digit digit-${timeObj.secondsFirstDigit}`}\n />\n <div\n id=\"second-second-digit\"\n className={`digit digit-${timeObj.secondsSecondDigit}`}\n />\n </div>\n );\n});\n\nexport default Time;\n","import * as React from \"react\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\ninterface Props {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport default function Volume({ id, style, className }: Props) {\n const volume = useTypedSelector(Selectors.getVolume);\n const setFocus = useActionCreator(Actions.setFocus);\n const unsetFocus = useActionCreator(Actions.unsetFocus);\n const setVolume = useActionCreator(Actions.setVolume);\n\n return (\n <input\n id={id}\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"1\"\n value={volume}\n style={{ ...style, touchAction: \"none\" }}\n className={className}\n onChange={(e) => setVolume(Number(e.target.value))}\n onPointerDown={() => setFocus(\"volume\")}\n onPointerUp={unsetFocus}\n title=\"Volume Bar\"\n />\n );\n}\n","import { memo } from \"react\";\nimport * as Selectors from \"../../selectors\";\n\nimport Volume from \"../Volume\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst MainVolume = memo(() => {\n const volume = useTypedSelector(Selectors.getVolume);\n const percent = volume / 100;\n const sprite = Math.round(percent * 28);\n const offset = (sprite - 1) * 15;\n\n const style = {\n backgroundPosition: `0 -${offset}px`,\n };\n return (\n <div id=\"volume\" style={style}>\n <Volume />\n </div>\n );\n});\n\nexport default MainVolume;\n","import * as React from \"react\";\nimport classnames from \"classnames\";\nimport { WINDOWS, MEDIA_STATUS, LOAD_STYLE } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\n\nimport DropTarget from \"../DropTarget\";\nimport MiniTime from \"../MiniTime\";\n\nimport ClickedDiv from \"../ClickedDiv\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport Vis from \"../Vis\";\nimport ActionButtons from \"./ActionButtons\";\nimport MainBalance from \"./MainBalance\";\nimport Close from \"./Close\";\nimport ClutterBar from \"./ClutterBar\";\nimport MainContextMenu from \"./MainContextMenu\";\nimport Eject from \"./Eject\";\nimport EqToggleButton from \"./EqToggleButton\";\nimport PlaylistToggleButton from \"./PlaylistToggleButton\";\nimport Kbps from \"./Kbps\";\nimport Khz from \"./Khz\";\nimport Marquee from \"./Marquee\";\nimport MonoStereo from \"./MonoStereo\";\nimport Position from \"./Position\";\nimport Repeat from \"./Repeat\";\nimport Shade from \"./Shade\";\nimport Minimize from \"./Minimize\";\nimport Shuffle from \"./Shuffle\";\nimport Time from \"./Time\";\nimport MainVolume from \"./MainVolume\";\nimport * as Selectors from \"../../selectors\";\n\nimport { FilePicker } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\ninterface Props {\n analyser: AnalyserNode;\n filePickers: FilePicker[];\n}\n\nfunction loadMediaAndPlay(e: React.DragEvent<HTMLDivElement>) {\n return Actions.loadMedia(e, LOAD_STYLE.PLAY);\n}\n\nconst MainWindow = React.memo(({ analyser, filePickers }: Props) => {\n const mainShade = useTypedSelector(Selectors.getWindowShade)(\"main\");\n const status = useTypedSelector(Selectors.getMediaStatus);\n const focused = useTypedSelector(Selectors.getFocusedWindow);\n const loading = useTypedSelector(Selectors.getLoading);\n const doubled = useTypedSelector(Selectors.getDoubled);\n const llama = useTypedSelector(Selectors.getLlamaMode);\n const working = useTypedSelector(Selectors.getWorking);\n\n const className = classnames({\n window: true,\n play: status === MEDIA_STATUS.PLAYING,\n stop: status === MEDIA_STATUS.STOPPED,\n pause: status === MEDIA_STATUS.PAUSED,\n selected: focused === WINDOWS.MAIN,\n shade: mainShade,\n draggable: true,\n loading,\n doubled,\n llama,\n });\n\n const toggleMainWindowShadeMode = useActionCreator(\n Actions.toggleMainWindowShadeMode\n );\n const scrollVolume = useActionCreator(Actions.scrollVolume);\n const loadMedia = useActionCreator(loadMediaAndPlay);\n\n return (\n <DropTarget\n id=\"main-window\"\n windowId={WINDOWS.MAIN}\n className={className}\n handleDrop={loadMedia}\n onWheel={scrollVolume}\n >\n <FocusTarget windowId={WINDOWS.MAIN}>\n <div\n id=\"title-bar\"\n className=\"selected draggable\"\n onDoubleClick={toggleMainWindowShadeMode}\n >\n <ContextMenuTarget\n id=\"option-context\"\n bottom\n renderMenu={() => <MainContextMenu filePickers={filePickers} />}\n >\n <ClickedDiv id=\"option\" title=\"Winamp Menu\" />\n </ContextMenuTarget>\n {mainShade && <MiniTime />}\n <Minimize />\n <Shade />\n <Close />\n </div>\n <div className=\"webamp-status\">\n <ClutterBar />\n {!working && <div id=\"play-pause\" />}\n <div\n id=\"work-indicator\"\n className={classnames({ selected: working })}\n />\n <Time />\n </div>\n <Vis analyser={analyser} />\n <div className=\"media-info\">\n <Marquee />\n <Kbps />\n <Khz />\n <MonoStereo />\n </div>\n <MainVolume />\n <MainBalance />\n <div className=\"windows\">\n <EqToggleButton />\n <PlaylistToggleButton />\n </div>\n <Position />\n <ActionButtons />\n <Eject />\n <div className=\"shuffle-repeat\">\n <Shuffle />\n <Repeat />\n </div>\n <a\n id=\"about\"\n target=\"_blank\"\n href=\"https://webamp.org/about\"\n title=\"About\"\n />\n </FocusTarget>\n </DropTarget>\n );\n});\n\nexport default MainWindow;\n","import ResizeTarget from \"../ResizeTarget\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\ntype Props = {\n widthOnly?: boolean;\n};\n\nfunction PlaylistResizeTarget({ widthOnly }: Props) {\n const windowSize = useTypedSelector(Selectors.getWindowSize);\n const setWindowSize = useActionCreator(Actions.setWindowSize);\n const currentSize = windowSize(\"playlist\");\n\n return (\n <ResizeTarget\n currentSize={currentSize}\n id=\"playlist-resize-target\"\n setWindowSize={(size) => {\n setWindowSize(\"playlist\", size);\n }}\n widthOnly={widthOnly}\n />\n );\n}\nexport default PlaylistResizeTarget;\n","import { useMemo } from \"react\";\nimport classnames from \"classnames\";\nimport { getTimeStr } from \"../../utils\";\nimport * as Selectors from \"../../selectors\";\n\nimport {\n WINDOWS,\n WINDOW_RESIZE_SEGMENT_WIDTH,\n WINDOW_WIDTH,\n CHARACTER_WIDTH,\n UTF8_ELLIPSIS,\n} from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport CharacterString from \"../CharacterString\";\nimport PlaylistResizeTarget from \"./PlaylistResizeTarget\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nfunction PlaylistShade() {\n const focused = useTypedSelector(Selectors.getFocusedWindow);\n const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n const playlistSize = getWindowSize(\"playlist\");\n const duration = useTypedSelector(Selectors.getDuration);\n const name = useTypedSelector(Selectors.getMinimalMediaText);\n\n const closeWindow = useActionCreator(Actions.closeWindow);\n const toggleShade = useActionCreator(Actions.togglePlaylistShadeMode);\n const focusWindow = useActionCreator(Actions.setFocusedWindow);\n\n const addedWidth = playlistSize[0] * WINDOW_RESIZE_SEGMENT_WIDTH;\n\n const trimmedName = useMemo(() => {\n if (name == null) {\n return \"[No file]\";\n }\n\n const MIN_NAME_WIDTH = 205;\n\n const nameLength = (MIN_NAME_WIDTH + addedWidth) / CHARACTER_WIDTH;\n return name.length > nameLength\n ? name.slice(0, nameLength - 1) + UTF8_ELLIPSIS\n : name;\n }, [addedWidth, name]);\n\n const time = useMemo(() => {\n return name == null ? \"\" : getTimeStr(duration);\n }, [duration, name]);\n\n return (\n <div\n id=\"playlist-window-shade\"\n className={classnames(\"window\", \"draggable\", {\n selected: focused === WINDOWS.PLAYLIST,\n })}\n style={{ width: `${WINDOW_WIDTH + addedWidth}px` }}\n onPointerDown={() => focusWindow(\"playlist\")}\n onDoubleClick={toggleShade}\n >\n <div className=\"left\">\n <div className=\"right draggable\">\n <div id=\"playlist-shade-track-title\">\n <CharacterString>{trimmedName}</CharacterString>\n </div>\n <div id=\"playlist-shade-time\">\n <CharacterString>{time}</CharacterString>\n </div>\n <PlaylistResizeTarget widthOnly />\n <WinampButton id=\"playlist-shade-button\" onClick={toggleShade} />\n <WinampButton\n id=\"playlist-close-button\"\n onClick={() => closeWindow(\"playlist\")}\n />\n </div>\n </div>\n </div>\n );\n}\n\nexport default PlaylistShade;\n","import { memo, ReactNode } from \"react\";\nimport classnames from \"classnames\";\nimport { useIsHovered } from \"../../hooks\";\n\ninterface Props {\n children: ReactNode;\n}\n\n// We implement hover ourselves, because we hate ourselves and https://stackoverflow.com/a/13259049/1263117\nfunction PlaylistMenuEntry({ children }: Props) {\n const { ref, hover } = useIsHovered();\n return (\n <li ref={ref} className={classnames({ hover })}>\n {children}\n </li>\n );\n}\n\nexport default memo(PlaylistMenuEntry);\n","import { Children, memo, useState, ReactNode, useCallback } from \"react\";\nimport classnames from \"classnames\";\nimport { useOnClickAway } from \"../../hooks\";\n\nimport PlaylistMenuEnry from \"./PlaylistMenuEntry\";\n\ninterface Props {\n id: string;\n children: ReactNode | Array<ReactNode>;\n}\n\ninterface State {\n selected: boolean;\n}\n\nfunction PlaylistMenu(props: Props) {\n const [selected, setSelected] = useState(false);\n\n const [ref, setRef] = useState<Element | null>(null);\n\n const callback = useCallback(() => {\n // If we've clicked on a Context Menu spawed inside this menu, it will\n // register as an external click. However, hiding the menu will remove\n // the Context Menu from the DOM. Therefore, we wait until the next\n // event loop to actually hide ourselves.\n setTimeout(() => {\n // Close the menu\n setSelected(false);\n }, 0);\n }, []);\n\n useOnClickAway(ref, selected ? callback : null);\n\n return (\n <div\n id={props.id}\n className={classnames(\"playlist-menu\", {\n selected,\n })}\n ref={setRef}\n onClick={() => setSelected((selected_) => !selected_)}\n >\n <div className=\"bar\" />\n {selected && (\n <ul>\n {Children.map(props.children, (child, i) => (\n <PlaylistMenuEnry key={i}>{child}</PlaylistMenuEnry>\n ))}\n </ul>\n )}\n </div>\n );\n}\nexport default memo(PlaylistMenu);\n","import * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\n\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst AddMenu = () => {\n const nextIndex = useTypedSelector(Selectors.getTrackCount);\n const addDirAtIndex = useActionCreator(Actions.addDirAtIndex);\n const addFilesAtIndex = useActionCreator(Actions.addFilesAtIndex);\n const addFilesFromUrl = useActionCreator(Actions.addFilesFromUrl);\n return (\n <PlaylistMenu id=\"playlist-add-menu\">\n <div className=\"add-url\" onClick={() => addFilesFromUrl(nextIndex)} />\n <div className=\"add-dir\" onClick={() => addDirAtIndex(nextIndex)} />\n <div className=\"add-file\" onClick={() => addFilesAtIndex(nextIndex)} />\n </PlaylistMenu>\n );\n};\n\nexport default AddMenu;\n","import * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\nimport { useActionCreator } from \"../../hooks\";\n\n/* eslint-disable no-alert */\n\nconst RemoveMenu = () => {\n const removeSelected = useActionCreator(Actions.removeSelectedTracks);\n const removeAll = useActionCreator(Actions.removeAllTracks);\n const crop = useActionCreator(Actions.cropPlaylist);\n return (\n <PlaylistMenu id=\"playlist-remove-menu\">\n <div\n className=\"remove-misc\"\n onClick={() => alert(\"Not supported in Webamp\")}\n />\n <div className=\"remove-all\" onClick={removeAll} />\n <div className=\"crop\" onClick={crop} />\n <div className=\"remove-selected\" onClick={removeSelected} />\n </PlaylistMenu>\n );\n};\n\nexport default RemoveMenu;\n","import PlaylistMenu from \"./PlaylistMenu\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nexport default function SelectionMenu() {\n const invert = useActionCreator(Actions.invertSelection);\n const zero = useActionCreator(Actions.selectZero);\n const all = useActionCreator(Actions.selectAll);\n return (\n <PlaylistMenu id=\"playlist-selection-menu\">\n <div className=\"invert-selection\" onClick={invert} />\n <div className=\"select-zero\" onClick={zero} />\n <div className=\"select-all\" onClick={all} />\n </PlaylistMenu>\n );\n}\n","import * as Actions from \"../../actionCreators\";\n\nimport { Hr, Node } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator } from \"../../hooks\";\n\ninterface DispatchProps {\n sortListByTitle: () => void;\n reverseList: () => void;\n randomizeList: () => void;\n}\n\n/* eslint-disable no-alert */\n/* TODO: This should really be kitty-corner to the upper right hand corner of the MiscMenu */\nexport default function SortContextMenu() {\n const reverseList = useActionCreator(Actions.reverseList);\n const randomizeList = useActionCreator(Actions.randomizeList);\n const sortListByTitle = useActionCreator(Actions.sortListByTitle);\n return (\n <ContextMenuTarget\n style={{ width: \"100%\", height: \"100%\" }}\n top\n renderMenu={() => (\n <>\n <Node label=\"Sort list by title\" onClick={sortListByTitle} />\n <Hr />\n <Node label=\"Reverse list\" onClick={reverseList} />\n <Node label=\"Randomize list\" onClick={randomizeList} />\n </>\n )}\n >\n <div />\n </ContextMenuTarget>\n );\n}\n","import { Node } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst MiscOptionsContextMenu = () => {\n const downloadHtmlPlaylist = useActionCreator(Actions.downloadHtmlPlaylist);\n return (\n <ContextMenuTarget\n style={{ width: \"100%\", height: \"100%\" }}\n top\n renderMenu={() => (\n <Node onClick={downloadHtmlPlaylist} label=\"Generate HTML playlist\" />\n )}\n >\n <div />\n </ContextMenuTarget>\n );\n};\n\nexport default MiscOptionsContextMenu;\n","import PlaylistMenu from \"./PlaylistMenu\";\nimport SortContextMenu from \"./SortContextMenu\";\nimport MiscOptionsContextMenu from \"./MiscOptionsContextMenu\";\n\nconst MiscMenu = () => (\n <PlaylistMenu id=\"playlist-misc-menu\">\n <div className=\"sort-list\" onClick={(e) => e.stopPropagation()}>\n <SortContextMenu />\n </div>\n <div\n className=\"file-info\"\n onClick={() => alert(\"Not supported in Webamp\")}\n />\n\n <div className=\"misc-options\" onClick={(e) => e.stopPropagation()}>\n <MiscOptionsContextMenu />\n </div>\n </PlaylistMenu>\n);\n\nexport default MiscMenu;\n","import * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\nimport { useActionCreator } from \"../../hooks\";\n\n/* eslint-disable no-alert */\nexport default function ListMenu() {\n const removeAllTracks = useActionCreator(Actions.removeAllTracks);\n const addFilesFromList = useActionCreator(Actions.addFilesFromList);\n const saveFilesToList = useActionCreator(Actions.saveFilesToList);\n return (\n <PlaylistMenu id=\"playlist-list-menu\">\n <div className=\"new-list\" onClick={removeAllTracks} />\n <div className=\"save-list\" onClick={saveFilesToList} />\n <div className=\"load-list\" onClick={addFilesFromList} />\n </PlaylistMenu>\n );\n}\n","import { useMemo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Actions from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\n// While all the browsers I care about support String.prototype.padEnd,\n// Not all node versions do, and I want tests to pass in Jest...\n// Sigh.\nfunction rightPad(str: string, len: number, fillChar: string): string {\n while (str.length < len) {\n str += fillChar;\n }\n return str;\n}\n\nconst RunningTimeDisplay = () => {\n const runningTimeMessage = useTypedSelector(Actions.getRunningTimeMessage);\n const text = useMemo(\n () => rightPad(runningTimeMessage, 18, \" \"),\n [runningTimeMessage]\n );\n return (\n <div className=\"playlist-running-time-display draggable\">\n {/* This div is probably not strictly needed */}\n <div>\n <CharacterString>{text}</CharacterString>\n </div>\n </div>\n );\n};\n\nexport default RunningTimeDisplay;\n","import { Fragment } from \"react\";\n\nimport * as Actions from \"../../actionCreators\";\n\nimport MiniTime from \"../MiniTime\";\nimport RunningTimeDisplay from \"./RunningTimeDisplay\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst PlaylistWindow = () => {\n const play = useActionCreator(Actions.play);\n const pause = useActionCreator(Actions.pause);\n const stop = useActionCreator(Actions.stop);\n const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n const next = useActionCreator(Actions.next);\n const previous = useActionCreator(Actions.previous);\n return (\n <Fragment>\n <RunningTimeDisplay />\n <div className=\"playlist-action-buttons\">\n <div className=\"playlist-previous-button\" onClick={previous} />\n <div className=\"playlist-play-button\" onClick={play} />\n <div className=\"playlist-pause-button\" onClick={pause} />\n <div className=\"playlist-stop-button\" onClick={stop} />\n <div className=\"playlist-next-button\" onClick={next} />\n <div className=\"playlist-eject-button\" onClick={openMediaFileDialog} />\n </div>\n <MiniTime />\n </Fragment>\n );\n};\nexport default PlaylistWindow;\n","import { useCallback, ReactNode, TouchEvent } from \"react\";\nimport classnames from \"classnames\";\nimport {\n CLICKED_TRACK,\n CTRL_CLICKED_TRACK,\n SHIFT_CLICKED_TRACK,\n} from \"../../actionTypes\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport {\n useTypedSelector,\n useActionCreator,\n useTypedDispatch,\n} from \"../../hooks\";\n\ninterface Props {\n id: number;\n index: number;\n handleMoveClick: (\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n ) => void;\n children: ReactNode;\n}\n\nfunction TrackCell({ children, handleMoveClick, index, id }: Props) {\n const skinPlaylistStyle = useTypedSelector(Selectors.getSkinPlaylistStyle);\n const selectedTrackIds = useTypedSelector(Selectors.getSelectedTrackIds);\n const currentTrackId = useTypedSelector(Selectors.getCurrentTrackId);\n const selected = selectedTrackIds.has(id);\n const current = currentTrackId === id;\n\n const dispatch = useTypedDispatch();\n const playTrackNow = useActionCreator(Actions.playTrackNow);\n\n const onMouseDown = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (e.shiftKey) {\n e.preventDefault();\n dispatch({ type: SHIFT_CLICKED_TRACK, index });\n return;\n } else if (e.metaKey || e.ctrlKey) {\n e.preventDefault();\n dispatch({ type: CTRL_CLICKED_TRACK, index });\n return;\n }\n\n if (!selected) {\n dispatch({ type: CLICKED_TRACK, index });\n }\n\n handleMoveClick(e);\n },\n [dispatch, handleMoveClick, index, selected]\n );\n\n const handleTouchStart = useCallback(\n (e: TouchEvent<HTMLDivElement>) => {\n if (!selected) {\n dispatch({ type: CLICKED_TRACK, index });\n }\n handleMoveClick(e);\n\n // There's no touch equivalent of onDoubleClick, so we fake one:\n function handleSecondTap() {\n playTrackNow(id);\n }\n e.target.addEventListener(\"touchstart\", handleSecondTap);\n setTimeout(() => {\n // Technically we might be unmounted here, but that's fine since you\n // can't tap an unmounted element and we will clean up eventually.\n e.target.removeEventListener(\"touchstart\", handleSecondTap);\n }, 250);\n },\n [dispatch, handleMoveClick, id, index, playTrackNow, selected]\n );\n\n const style: React.CSSProperties = {\n backgroundColor: selected ? skinPlaylistStyle.selectedbg : undefined,\n color: current ? skinPlaylistStyle.current : undefined,\n };\n return (\n <div\n className={classnames(\"track-cell\", { selected, current })}\n style={style}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={onMouseDown}\n onTouchStart={handleTouchStart}\n onContextMenu={(e) => e.preventDefault()}\n onDoubleClick={() => playTrackNow(id)}\n >\n {children}\n </div>\n );\n}\n\nexport default TrackCell;\n","import * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\ninterface Props {\n id: number;\n paddedTrackNumber: string;\n}\n\nconst TrackTitle = ({ id, paddedTrackNumber }: Props) => {\n const title = useTypedSelector(Selectors.getTrackDisplayName)(id);\n return (\n <span>\n {paddedTrackNumber}. {title}\n </span>\n );\n};\n\nexport default TrackTitle;\n","import { useState, useEffect } from \"react\";\n\nimport * as Selectors from \"../../selectors\";\nimport { TRACK_HEIGHT } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport TrackCell from \"./TrackCell\";\nimport TrackTitle from \"./TrackTitle\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Utils from \"../../utils\";\n\nfunction getNumberLength(number: number): number {\n return number.toString().length;\n}\n\nfunction TrackList() {\n const offset = useTypedSelector(Selectors.getScrollOffset);\n const trackIds = useTypedSelector(Selectors.getVisibleTrackIds);\n const tracks = useTypedSelector(Selectors.getTracks);\n const numberOfTracks = useTypedSelector(Selectors.getNumberOfTracks);\n\n const selectZero = useActionCreator(Actions.selectZero);\n const dragSelected = useActionCreator(Actions.dragSelected);\n const scrollPlaylistByDelta = useActionCreator(Actions.scrollPlaylistByDelta);\n\n const [node, setNode] = useState<HTMLElement | null>(null);\n const [moving, setMoving] = useState(false);\n const [mouseStartY, setMouseStartY] = useState<number | null>(null);\n\n const _handleMoveClick = (\n e: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>\n ) => {\n setMoving(true);\n setMouseStartY(Utils.getY(e));\n };\n\n useEffect(() => {\n if (node == null || mouseStartY == null || moving === false) {\n return;\n }\n const { top, bottom, left, right } = node.getBoundingClientRect();\n let lastDiff = 0;\n const handleMouseMove = (ee: MouseEvent | TouchEvent) => {\n const x = Utils.getX(ee);\n const y = Utils.getY(ee);\n if (y < top || y > bottom || x < left || x > right) {\n // Mouse is outside the track list\n return;\n }\n const proposedDiff = Math.floor((y - mouseStartY) / TRACK_HEIGHT);\n if (proposedDiff !== lastDiff) {\n const diffDiff = proposedDiff - lastDiff;\n dragSelected(diffDiff);\n lastDiff = proposedDiff;\n }\n };\n\n // A little indirect here. Basically, we set `moving` false here which\n // causes our useEffect to rerun which removes all of these event listeners.\n // It might be a little tigher to actually remove these listeners in the\n // `handleMouseUp` callback, but... I'm lazy.\n const handleMouseUp = () => setMoving(false);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"touchend\", handleMouseUp);\n window.addEventListener(\"touchmove\", handleMouseMove);\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"touchmove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n window.removeEventListener(\"touchend\", handleMouseUp);\n };\n // I'm not 100% sure how well this would work if it rebound mid drag, so\n // we'll just pretend it's okay that we have stale values in there.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [moving]);\n\n function _renderTracks(\n format: (id: number, i: number) => JSX.Element | string\n ) {\n return trackIds.map((id, i) => (\n <TrackCell\n key={id}\n id={id}\n index={offset + i}\n handleMoveClick={_handleMoveClick}\n >\n {format(id, i)}\n </TrackCell>\n ));\n }\n\n const maxTrackNumberLength = getNumberLength(numberOfTracks);\n const paddedTrackNumForIndex = (i: number) =>\n (i + 1 + offset).toString().padStart(maxTrackNumberLength, \"\\u00A0\");\n\n useEffect(() => {\n if (node == null) {\n return;\n }\n\n // Chome changed wheel events to be passive be default. We need active (so\n // we can prevent default) and React does not have a way to control this, so\n // we must bind our own events.\n //\n // https://github.com/facebook/react/issues/14856#issuecomment-806052402\n node.addEventListener(\"wheel\", scrollPlaylistByDelta, { passive: false });\n\n return () => {\n node.removeEventListener(\"wheel\", scrollPlaylistByDelta);\n };\n }, [node, scrollPlaylistByDelta]);\n return (\n <div\n ref={setNode}\n className=\"playlist-tracks\"\n style={{ height: \"100%\", userSelect: \"none\" }}\n onClick={selectZero}\n >\n <div className=\"playlist-track-titles\">\n {_renderTracks((id, i) => (\n <TrackTitle id={id} paddedTrackNumber={paddedTrackNumForIndex(i)} />\n ))}\n </div>\n <div className=\"playlist-track-durations\">\n {_renderTracks((id) => Utils.getTimeStr(tracks[id].duration))}\n </div>\n </div>\n );\n}\n\nexport default TrackList;\n","import * as Utils from \"../utils\";\nimport { ReactNode, useRef } from \"react\";\n\ntype Props = {\n height: number;\n width: number;\n handleHeight: number;\n value: number;\n handle: ReactNode;\n onBeforeChange?: () => void;\n onChange: (value: number) => void;\n onAfterChange?: () => void;\n requireClicksOriginateLocally?: boolean;\n disabled?: boolean;\n};\n\ntype RegOptions = {\n target: HTMLElement;\n clientY: number;\n};\n\n// `<input type=\"range\" />` can be rotated to become a vertical slider using\n// CSS, but that makes it impossible to style the handle in a pixel perfect\n// manner. Instead we reimplement it in React.\nexport default function VerticalSlider({\n value,\n height,\n width,\n handle,\n handleHeight,\n onBeforeChange,\n onChange,\n onAfterChange,\n requireClicksOriginateLocally = true,\n disabled,\n}: Props) {\n const ref = useRef<HTMLDivElement | null>(null);\n const handleRef = useRef<HTMLDivElement | null>(null);\n\n function registerMoveListener({ target, clientY }: RegOptions) {\n const sliderNode = ref.current;\n const handleNode = handleRef.current;\n if (sliderNode == null || handleNode == null) {\n // I don't think this could ever happen in practice\n return null;\n }\n\n const sliderRect = sliderNode.getBoundingClientRect();\n const handleRect = handleNode.getBoundingClientRect();\n\n const { top: sliderTop, height: sliderHeight } = sliderRect;\n const { top: handleTop, height: realHandleHeight } = handleRect;\n\n // If the user clicks on the handle we want them to continue to hold onto\n // that point of te handle. If they click outside of the handle (in the\n // slider itself) we want to center the handle at that point and have them\n // move the handle from the center.\n const handleOffset = handleNode.contains(target as HTMLElement)\n ? clientY - handleTop\n : realHandleHeight / 2;\n\n const baseOffset = sliderTop + handleOffset;\n // Measure the actual rect height rather than use the `height` prop, becuase\n // we might be in double-size mode.\n const spanSize = sliderHeight - realHandleHeight;\n\n function moveToPosition(y: number) {\n // Ensure dragging does not cause elements/text to be selected.\n // https://stackoverflow.com/a/19164149/1263117\n const startOffset = y - baseOffset;\n onChange(Utils.clamp(startOffset / spanSize, 0, 1));\n }\n\n const handlePointerMove = (event: PointerEvent) => {\n event.preventDefault();\n moveToPosition(event.clientY);\n };\n const handleRelease = () => {\n if (onAfterChange != null) {\n onAfterChange();\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handleRelease);\n };\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handleRelease);\n\n if (onBeforeChange != null) {\n onBeforeChange();\n }\n\n // Move the slider to where they've started.\n moveToPosition(clientY);\n }\n\n function handlePointerDown(e: React.PointerEvent<HTMLDivElement>) {\n e.preventDefault();\n registerMoveListener({\n target: e.target as HTMLElement,\n clientY: e.clientY,\n });\n }\n\n // We watch for events onPointerEnter only when requireClicksOriginateLocally === false\n // If the mouse/touch enters the Slider area, and the button/touch is already down, trigger a PointerDown\n function handlePointerEnter(e: React.PointerEvent<HTMLDivElement>) {\n if (e.buttons === 1) {\n handlePointerDown(e);\n }\n }\n\n const offset = Math.floor((height - handleHeight) * value);\n return (\n <div\n style={{ height, width }}\n onPointerDown={disabled ? undefined : handlePointerDown}\n onPointerEnter={\n disabled || requireClicksOriginateLocally\n ? undefined\n : handlePointerEnter\n }\n ref={ref}\n >\n <div style={{ transform: `translateY(${offset}px)` }} ref={handleRef}>\n {handle}\n </div>\n </div>\n );\n}\n","import VerticalSlider from \"../VerticalSlider\";\n\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport { WINDOWS } from \"../../constants\";\n\nconst HANDLE_HEIGHT = 18;\n\nconst Handle = () => (\n <div\n className=\"playlist-scrollbar-handle\"\n style={{ height: HANDLE_HEIGHT }}\n />\n);\n\nexport default function PlaylistScrollBar() {\n const getWindowPixelSize = useTypedSelector(Selectors.getWindowPixelSize);\n const playlistHeight = getWindowPixelSize(WINDOWS.PLAYLIST).height;\n const playlistScrollPosition = useTypedSelector(\n Selectors.getPlaylistScrollPosition\n );\n const allTracksAreVisible = useTypedSelector(\n Selectors.getAllTracksAreVisible\n );\n const setPlaylistScrollPosition = useActionCreator(\n Actions.setPlaylistScrollPosition\n );\n return (\n <div className=\"playlist-scrollbar\" style={{ marginLeft: 5 }}>\n <VerticalSlider\n height={playlistHeight - 58}\n handleHeight={HANDLE_HEIGHT}\n width={8}\n value={playlistScrollPosition / 100}\n onChange={(val) => setPlaylistScrollPosition(val * 100)}\n handle={<Handle />}\n disabled={allTracksAreVisible}\n />\n </div>\n );\n}\n","import { useCallback } from \"react\";\nimport classnames from \"classnames\";\n\nimport { WINDOWS, TRACK_HEIGHT, LOAD_STYLE } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\n\nimport { clamp } from \"../../utils\";\nimport DropTarget from \"../DropTarget\";\nimport Vis from \"../Vis\";\nimport PlaylistShade from \"./PlaylistShade\";\nimport AddMenu from \"./AddMenu\";\nimport RemoveMenu from \"./RemoveMenu\";\nimport SelectionMenu from \"./SelectionMenu\";\nimport MiscMenu from \"./MiscMenu\";\nimport ListMenu from \"./ListMenu\";\nimport PlaylistResizeTarget from \"./PlaylistResizeTarget\";\nimport PlaylistActionArea from \"./PlaylistActionArea\";\nimport TrackList from \"./TrackList\";\nimport PlaylistScrollBar from \"./PlaylistScrollBar\";\n\nimport { AppState } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\ninterface Props {\n analyser: AnalyserNode;\n}\n\nfunction _maxTrackIndex(state: AppState) {\n return state.playlist.trackOrder.length - 1;\n}\n\nfunction PlaylistWindow({ analyser }: Props) {\n const offset = useTypedSelector(Selectors.getScrollOffset);\n const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n const selectedWindow = useTypedSelector(Selectors.getFocusedWindow);\n const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n const getWindowOpen = useTypedSelector(Selectors.getWindowOpen);\n const maxTrackIndex = useTypedSelector(_maxTrackIndex);\n const skinPlaylistStyle = useTypedSelector(Selectors.getSkinPlaylistStyle);\n const getWindowPixelSize = useTypedSelector(Selectors.getWindowPixelSize);\n\n const selected = selectedWindow === WINDOWS.PLAYLIST;\n const playlistShade = Boolean(getWindowShade(WINDOWS.PLAYLIST));\n const playlistSize = getWindowSize(WINDOWS.PLAYLIST);\n const playlistWindowPixelSize = getWindowPixelSize(WINDOWS.PLAYLIST);\n\n const close = useActionCreator(Actions.closeWindow);\n const toggleShade = useActionCreator(Actions.togglePlaylistShadeMode);\n const scrollUpFourTracks = useActionCreator(Actions.scrollUpFourTracks);\n const scrollDownFourTracks = useActionCreator(Actions.scrollDownFourTracks);\n const scrollVolume = useActionCreator(Actions.scrollVolume);\n const loadMedia = useActionCreator(Actions.loadMedia);\n\n const showVisualizer = playlistSize[0] > 2;\n const activateVisualizer = !getWindowOpen(WINDOWS.MAIN);\n\n const handleDrop = useCallback(\n (\n e: React.DragEvent<HTMLDivElement>,\n targetCoords: { x: number; y: number }\n ) => {\n const top = e.clientY - targetCoords.y;\n const atIndex = clamp(\n offset + Math.round((top - 23) / TRACK_HEIGHT),\n 0,\n maxTrackIndex + 1\n );\n loadMedia(e, LOAD_STYLE.NONE, atIndex);\n },\n [loadMedia, maxTrackIndex, offset]\n );\n\n if (playlistShade) {\n return <PlaylistShade />;\n }\n\n const style = {\n color: skinPlaylistStyle.normal,\n backgroundColor: skinPlaylistStyle.normalbg,\n fontFamily: `${skinPlaylistStyle.font}, Arial, sans-serif`,\n height: `${playlistWindowPixelSize.height}px`,\n width: `${playlistWindowPixelSize.width}px`,\n };\n\n const classes = classnames(\"window\", \"draggable\", { selected });\n\n const showSpacers = playlistSize[0] % 2 === 0;\n\n return (\n <FocusTarget windowId={WINDOWS.PLAYLIST}>\n <DropTarget\n id=\"playlist-window\"\n windowId={WINDOWS.PLAYLIST}\n className={classes}\n style={style}\n handleDrop={handleDrop}\n onWheel={scrollVolume}\n >\n <div className=\"playlist-top draggable\" onDoubleClick={toggleShade}>\n <div className=\"playlist-top-left draggable\" />\n {showSpacers && (\n <div className=\"playlist-top-left-spacer draggable\" />\n )}\n <div className=\"playlist-top-left-fill draggable\" />\n <div className=\"playlist-top-title draggable\" />\n {showSpacers && (\n <div className=\"playlist-top-right-spacer draggable\" />\n )}\n <div className=\"playlist-top-right-fill draggable\" />\n <div className=\"playlist-top-right draggable\">\n <WinampButton id=\"playlist-shade-button\" onClick={toggleShade} />\n <WinampButton\n id=\"playlist-close-button\"\n onClick={() => close(WINDOWS.PLAYLIST)}\n />\n </div>\n </div>\n <div className=\"playlist-middle draggable\">\n <div className=\"playlist-middle-left draggable\" />\n <div className=\"playlist-middle-center\">\n <TrackList />\n </div>\n <WinampButton className=\"playlist-middle-right draggable\">\n <PlaylistScrollBar />\n </WinampButton>\n </div>\n <div className=\"playlist-bottom draggable\">\n <div className=\"playlist-bottom-left draggable\">\n <AddMenu />\n <RemoveMenu />\n <SelectionMenu />\n <MiscMenu />\n </div>\n <div className=\"playlist-bottom-center draggable\" />\n <div className=\"playlist-bottom-right draggable\">\n {showVisualizer && (\n <div className=\"playlist-visualizer\">\n {activateVisualizer && (\n <div className=\"visualizer-wrapper\">\n <Vis analyser={analyser} />\n </div>\n )}\n </div>\n )}\n <PlaylistActionArea />\n <ListMenu />\n <div id=\"playlist-scroll-up-button\" onClick={scrollUpFourTracks} />\n <div\n id=\"playlist-scroll-down-button\"\n onClick={scrollDownFourTracks}\n />\n <PlaylistResizeTarget />\n </div>\n </div>\n </DropTarget>\n </FocusTarget>\n );\n}\n\nexport default PlaylistWindow;\n","import { useMemo } from \"react\";\nimport { Slider as SliderType } from \"../../types\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport VerticalSlider from \"../VerticalSlider\";\nimport WinampButton from \"../WinampButton\";\n\ninterface Props {\n id: string;\n band: SliderType;\n onChange(value: number): void;\n clickOriginatedInEq?: boolean;\n}\n\nconst MAX_VALUE = 100;\n\n// Given a value between 1-100, return the sprite number (0-27)\nexport const spriteNumber = (value: number): number => {\n const percent = value / MAX_VALUE;\n return Math.round(percent * 27);\n};\n\n// Given a sprite number, return the x,y\nexport const spriteOffsets = (number: number): { x: number; y: number } => {\n const x = number % 14;\n const y = Math.floor(number / 14);\n return { x, y };\n};\n\nconst Handle = () => {\n const style = { width: 11, height: 11, marginLeft: 1 };\n return <div style={style} className=\"slider-handle\" />;\n};\n\nexport default function Band({\n id,\n onChange,\n band,\n clickOriginatedInEq,\n}: Props) {\n const sliders = useTypedSelector(Selectors.getSliders);\n const value = sliders[band];\n const backgroundPosition = useMemo(() => {\n const { x, y } = spriteOffsets(spriteNumber(value));\n const xOffset = x * 15; // Each sprite is 15px wide\n const yOffset = y * 65; // Each sprite is 15px tall\n return `-${xOffset}px -${yOffset}px`;\n }, [value]);\n const focusBand = useActionCreator(Actions.focusBand);\n const unsetFocus = useActionCreator(Actions.unsetFocus);\n\n // Note: The band background is actually one pixel taller (63) than the slider\n // it contains (62).\n return (\n <WinampButton\n id={id}\n className=\"band\"\n style={{ backgroundPosition, height: 63 }}\n requireClicksOriginateLocally={\n !(band !== \"preamp\" && clickOriginatedInEq)\n }\n >\n <VerticalSlider\n height={62}\n width={14}\n handleHeight={11}\n value={1 - value / MAX_VALUE}\n onBeforeChange={() => focusBand(band)}\n onChange={(val) => onChange((1 - val) * MAX_VALUE)}\n onAfterChange={unsetFocus}\n requireClicksOriginateLocally={\n !(band !== \"preamp\" && clickOriginatedInEq)\n }\n handle={<Handle />}\n />\n </WinampButton>\n );\n}\n","import classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst EqOn = () => {\n const toggleEq = useActionCreator(Actions.toggleEq);\n const on = useTypedSelector(Selectors.getEqualizerEnabled);\n return (\n <WinampButton\n id=\"on\"\n className={classnames({ selected: on })}\n onClick={toggleEq}\n />\n );\n};\n\nexport default EqOn;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst EqAuto = memo(() => {\n const selected = useTypedSelector((state) => state.equalizer.auto);\n const toggleAuto = useActionCreator(Actions.toggleEqAuto);\n return (\n <WinampButton\n id=\"auto\"\n className={classnames({ selected })}\n onClick={toggleAuto}\n />\n );\n});\n\nexport default EqAuto;\n","// Adapted from https://github.com/morganherlocker/cubic-spline\n\nexport default function spline(xs, ys) {\n const ks = getNaturalKs(xs, ys);\n const maxX = xs[xs.length - 1];\n const allYs = [];\n let i = 1;\n for (let x = 0; x <= maxX; x++) {\n while (xs[i] < x) i++;\n const t = (x - xs[i - 1]) / (xs[i] - xs[i - 1]);\n const a = ks[i - 1] * (xs[i] - xs[i - 1]) - (ys[i] - ys[i - 1]);\n const b = -ks[i] * (xs[i] - xs[i - 1]) + (ys[i] - ys[i - 1]);\n const q =\n (1 - t) * ys[i - 1] + t * ys[i] + t * (1 - t) * (a * (1 - t) + b * t);\n allYs.push(q);\n }\n return allYs;\n}\n\nfunction getNaturalKs(xs, ys) {\n const ks = xs.map(() => 0);\n const n = xs.length - 1;\n const matrix = zerosMatrix(n + 1, n + 2);\n\n for (\n let i = 1;\n i < n;\n i++ // rows\n ) {\n matrix[i][i - 1] = 1 / (xs[i] - xs[i - 1]);\n matrix[i][i] = 2 * (1 / (xs[i] - xs[i - 1]) + 1 / (xs[i + 1] - xs[i]));\n matrix[i][i + 1] = 1 / (xs[i + 1] - xs[i]);\n matrix[i][n + 1] =\n 3 *\n ((ys[i] - ys[i - 1]) / ((xs[i] - xs[i - 1]) * (xs[i] - xs[i - 1])) +\n (ys[i + 1] - ys[i]) / ((xs[i + 1] - xs[i]) * (xs[i + 1] - xs[i])));\n }\n\n matrix[0][0] = 2 / (xs[1] - xs[0]);\n matrix[0][1] = 1 / (xs[1] - xs[0]);\n matrix[0][n + 1] =\n (3 * (ys[1] - ys[0])) / ((xs[1] - xs[0]) * (xs[1] - xs[0]));\n\n matrix[n][n - 1] = 1 / (xs[n] - xs[n - 1]);\n matrix[n][n] = 2 / (xs[n] - xs[n - 1]);\n matrix[n][n + 1] =\n (3 * (ys[n] - ys[n - 1])) / ((xs[n] - xs[n - 1]) * (xs[n] - xs[n - 1]));\n\n return solve(matrix, ks);\n}\n\nfunction solve(matrix, ks) {\n const m = matrix.length;\n // column\n for (let k = 0; k < m; k++) {\n // pivot for column\n let iMax = 0;\n let vali = Number.NEGATIVE_INFINITY;\n for (let i = k; i < m; i++)\n if (matrix[i][k] > vali) {\n iMax = i;\n vali = matrix[i][k];\n }\n swapRows(matrix, k, iMax);\n\n // for all rows below pivot\n for (let i = k + 1; i < m; i++) {\n for (let j = k + 1; j < m + 1; j++)\n matrix[i][j] =\n matrix[i][j] - matrix[k][j] * (matrix[i][k] / matrix[k][k]);\n matrix[i][k] = 0;\n }\n }\n // rows = columns\n for (let i = m - 1; i >= 0; i--) {\n const v = matrix[i][m] / matrix[i][i];\n ks[i] = v;\n // rows\n for (let j = i - 1; j >= 0; j--) {\n matrix[j][m] -= matrix[j][i] * v;\n matrix[j][i] = 0;\n }\n }\n return ks;\n}\n\nfunction zerosMatrix(rows, columns) {\n const matrix = [];\n for (let i = 0; i < rows; i++) {\n matrix.push([]);\n for (let j = 0; j < columns; j++) {\n matrix[i].push(0);\n }\n }\n return matrix;\n}\n\nfunction swapRows(m, k, l) {\n const p = m[k];\n m[k] = m[l];\n m[l] = p;\n}\n","import { useState, useMemo, useLayoutEffect } from \"react\";\nimport { percentToRange, clamp } from \"../../utils\";\nimport { BANDS } from \"../../constants\";\nimport spline from \"./spline\";\nimport * as Selectors from \"../../selectors\";\nimport { usePromiseValueOrNull, useTypedSelector } from \"../../hooks\";\nimport { Slider } from \"../../types\";\n\nconst GRAPH_HEIGHT = 19;\nconst GRAPH_WIDTH = 113;\n\nfunction EqGraph() {\n const sliders = useTypedSelector(Selectors.getSliders);\n\n const preampLineImagePromise = useTypedSelector(Selectors.getPreampLineImage);\n const preampLineImage = usePromiseValueOrNull(preampLineImagePromise);\n\n const [canvasNode, setCanvasNode] = useState<HTMLCanvasElement | null>(null);\n\n const canvasCtx = useMemo(\n () => canvasNode?.getContext(\"2d\") ?? null,\n [canvasNode]\n );\n const colorPattern = useColorPattern(canvasCtx);\n\n useLayoutEffect(() => {\n if (\n canvasCtx == null ||\n canvasNode == null ||\n preampLineImage == null ||\n colorPattern == null\n ) {\n return;\n }\n const width = Number(canvasNode.width);\n const height = Number(canvasNode.height);\n canvasCtx.clearRect(0, 0, width, height);\n drawEqLine({ colorPattern, sliders, canvasCtx, preampLineImage });\n }, [canvasCtx, canvasNode, colorPattern, preampLineImage, sliders]);\n\n return (\n <canvas\n id=\"eqGraph\"\n ref={setCanvasNode}\n width={GRAPH_WIDTH}\n height={GRAPH_HEIGHT}\n />\n );\n}\n\nfunction useColorPattern(canvasCtx: CanvasRenderingContext2D | null) {\n const lineColorsImagePromise = useTypedSelector(Selectors.getLineColorsImage);\n const lineColorsImage = usePromiseValueOrNull(lineColorsImagePromise);\n return useMemo(() => {\n if (canvasCtx == null || lineColorsImage == null) {\n return null;\n }\n return canvasCtx.createPattern(lineColorsImage, \"repeat-x\");\n }, [canvasCtx, lineColorsImage]);\n}\n\nfunction drawEqLine({\n colorPattern,\n sliders,\n canvasCtx,\n preampLineImage,\n}: {\n sliders: Record<Slider, number>;\n colorPattern: CanvasPattern;\n preampLineImage: HTMLImageElement;\n canvasCtx: CanvasRenderingContext2D;\n}) {\n const preampValue = percentToRange(sliders.preamp / 100, 0, GRAPH_HEIGHT - 1);\n canvasCtx.drawImage(\n preampLineImage,\n 0,\n preampValue,\n preampLineImage.width,\n preampLineImage.height\n );\n\n const amplitudes = BANDS.map((band) => sliders[band]);\n\n canvasCtx.fillStyle = colorPattern;\n const paddingLeft = 2; // TODO: This should be 1.5\n\n const min = 0;\n const max = GRAPH_HEIGHT - 1;\n\n const xs: number[] = [];\n const ys: number[] = [];\n amplitudes.forEach((value, i) => {\n const percent = (100 - value) / 100;\n // Each band is 12 pixels widex\n xs.push(i * 12);\n ys.push(percentToRange(percent, min, max));\n });\n\n const allYs = spline(xs, ys);\n\n const maxX = xs[xs.length - 1];\n let lastY = ys[0];\n for (let x = 0; x <= maxX; x++) {\n const y = clamp(Math.round(allYs[x]), 0, GRAPH_HEIGHT - 1);\n const yTop = Math.min(y, lastY);\n const height = 1 + Math.abs(lastY - y);\n canvasCtx.fillRect(paddingLeft + x, yTop, 1, height);\n lastY = y;\n }\n}\n\nexport default EqGraph;\n","import builtin from \"../../../presets/builtin.json\";\nimport * as Actions from \"../../actionCreators\";\nimport { Node, Parent, Hr } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator } from \"../../hooks\";\nimport WinampButton from \"../WinampButton\";\n\nconst PresetsContextMenu = () => {\n const openEqfFileDialog = useActionCreator(Actions.openEqfFileDialog);\n const downloadPreset = useActionCreator(Actions.downloadPreset);\n const setEqFromObject = useActionCreator(Actions.setEqFromObject);\n return (\n <ContextMenuTarget\n top\n id=\"presets-context\"\n renderMenu={() => (\n <>\n <Parent label=\"Load\">\n {builtin.presets.map((preset) => (\n <Node\n key={preset.name}\n onClick={() => setEqFromObject(preset)}\n label={preset.name}\n />\n ))}\n <Hr />\n <Node onClick={openEqfFileDialog} label=\"From Eqf...\" />\n </Parent>\n <Node onClick={downloadPreset} label=\"Save\" />\n </>\n )}\n >\n <WinampButton id=\"presets\" />\n </ContextMenuTarget>\n );\n};\n\nexport default PresetsContextMenu;\n","import ClickedDiv from \"../ClickedDiv\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { WINDOWS } from \"../../constants\";\nimport WinampButton from \"../WinampButton\";\n\nexport default function EqTitleButtons() {\n const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n\n const selected = focusedWindow === WINDOWS.EQUALIZER;\n const closeWindow = useActionCreator(Actions.closeWindow);\n const toggleEqualizerShadeMode = useActionCreator(\n Actions.toggleEqualizerShadeMode\n );\n return (\n <ClickedDiv id=\"eq-buttons\" key={selected ? \"selected\" : \"unselected\"}>\n <WinampButton id=\"equalizer-shade\" onClick={toggleEqualizerShadeMode} />\n <WinampButton\n id=\"equalizer-close\"\n onClick={() => closeWindow(WINDOWS.EQUALIZER)}\n />\n </ClickedDiv>\n );\n}\n","import Volume from \"../Volume\";\nimport Balance from \"../Balance\";\nimport { segment } from \"../../utils\";\nimport EqTitleButtons from \"./EqTitleButtons\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst EqualizerShade = () => {\n const volume = useTypedSelector(Selectors.getVolume);\n const balance = useTypedSelector(Selectors.getBalance);\n const toggleEqualizerShadeMode = useActionCreator(\n Actions.toggleEqualizerShadeMode\n );\n\n const classes = [\"left\", \"center\", \"right\"];\n const eqVolumeClassName = segment(0, 100, volume, classes);\n const eqBalanceClassName = segment(-100, 100, balance, classes);\n return (\n <div\n className=\"draggable\"\n onDoubleClick={toggleEqualizerShadeMode}\n style={{ width: \"100%\", height: \"100%\" }}\n >\n <EqTitleButtons />\n <Volume id=\"equalizer-volume\" className={eqVolumeClassName} />\n <Balance id=\"equalizer-balance\" className={eqBalanceClassName} />\n </div>\n );\n};\nexport default EqualizerShade;\n","import { useState } from \"react\";\nimport classnames from \"classnames\";\n\nimport { BANDS, WINDOWS } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\n\nimport Band from \"./Band\";\nimport EqOn from \"./EqOn\";\nimport EqAuto from \"./EqAuto\";\nimport EqGraph from \"./EqGraph\";\nimport PresetsContextMenu from \"./PresetsContextMenu\";\nimport EqualizerShade from \"./EqualizerShade\";\n\nimport { Band as BandType } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport EqTitleButtons from \"./EqTitleButtons\";\n\nconst bandClassName = (band: BandType) => `band-${band}`;\n\nconst EqualizerWindow = () => {\n const doubled = useTypedSelector(Selectors.getDoubled);\n const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n\n const selected = focusedWindow === WINDOWS.EQUALIZER;\n const shade = getWindowShade(WINDOWS.EQUALIZER);\n\n const setPreampValue = useActionCreator(Actions.setPreamp);\n const setEqToMin = useActionCreator(Actions.setEqToMin);\n const setEqToMid = useActionCreator(Actions.setEqToMid);\n const setEqToMax = useActionCreator(Actions.setEqToMax);\n const setHertzValue = useActionCreator(Actions.setEqBand);\n const toggleEqualizerShadeMode = useActionCreator(\n Actions.toggleEqualizerShadeMode\n );\n\n const className = classnames({\n selected,\n doubled,\n shade,\n window: true,\n draggable: true,\n });\n\n // Track whether the click originated in the \"hertz\" area of the EQ\n // We only want to allow drag across the EQ when the click originated in that area\n const [clickOriginatedInEq, setClickOriginatedInEq] = useState(false);\n\n const onPointerDownHz = (e: React.PointerEvent<HTMLDivElement>) => {\n e.stopPropagation();\n // Release the pointer capture\n // https://w3c.github.io/pointerevents/#implicit-pointer-capture\n // https://w3c.github.io/pointerevents/#pointer-capture\n const target = e.target as HTMLDivElement;\n target.releasePointerCapture(e.pointerId);\n\n setClickOriginatedInEq(true);\n\n function onReleaseHz(ee: PointerEvent) {\n // Release only if it is the actual pointer release, not the simulated one coming from WinampButton\n // Simulated pointer release coming from WinampButton has ee.detail == -42\n // Actual pointer release here will come in as ee.detail === 0\n if (ee.detail === 0) {\n setClickOriginatedInEq(false);\n document.removeEventListener(\"pointerup\", onReleaseHz);\n }\n }\n document.addEventListener(\"pointerup\", onReleaseHz);\n };\n\n return (\n <div id=\"equalizer-window\" className={className}>\n <FocusTarget windowId={WINDOWS.EQUALIZER}>\n {shade ? (\n <EqualizerShade />\n ) : (\n <div>\n <div\n className=\"equalizer-top title-bar draggable\"\n onDoubleClick={toggleEqualizerShadeMode}\n >\n <EqTitleButtons />\n </div>\n <EqOn />\n <EqAuto />\n <EqGraph />\n <PresetsContextMenu />\n <Band id=\"preamp\" band=\"preamp\" onChange={setPreampValue} />\n <div id=\"plus12db\" onClick={setEqToMax} />\n <div id=\"zerodb\" onClick={setEqToMid} />\n <div id=\"minus12db\" onClick={setEqToMin} />\n <div onPointerDown={onPointerDownHz}>\n {BANDS.map((hertz) => (\n <Band\n key={hertz}\n id={bandClassName(hertz)}\n band={hertz}\n onChange={(value) => setHertzValue(hertz, value)}\n clickOriginatedInEq={clickOriginatedInEq}\n />\n ))}\n </div>\n </div>\n )}\n </FocusTarget>\n </div>\n );\n};\nexport default EqualizerWindow;\n","import { LETTERS } from \"./constants\";\nimport { FONT_LOOKUP, imageConstFromChar } from \"./skinSprites\";\n\ninterface Selectors {\n [name: string]: string[];\n}\n\nexport const imageSelectors: Selectors = {\n MAIN_BALANCE_BACKGROUND: [\"#balance\"],\n MAIN_BALANCE_THUMB: [\n \"#balance::-webkit-slider-thumb\",\n \"#balance::-moz-range-thumb\",\n ],\n MAIN_BALANCE_THUMB_ACTIVE: [\n \"#balance:active::-webkit-slider-thumb\",\n \"#balance:active::-moz-range-thumb\",\n ],\n MAIN_PREVIOUS_BUTTON: [\".actions #previous\"],\n MAIN_PREVIOUS_BUTTON_ACTIVE: [\".actions #previous.winamp-active\"],\n MAIN_PLAY_BUTTON: [\".actions #play\"],\n MAIN_PLAY_BUTTON_ACTIVE: [\".actions #play.winamp-active\"],\n MAIN_PAUSE_BUTTON: [\".actions #pause\"],\n MAIN_PAUSE_BUTTON_ACTIVE: [\".actions #pause.winamp-active\"],\n MAIN_STOP_BUTTON: [\".actions #stop\"],\n MAIN_STOP_BUTTON_ACTIVE: [\".actions #stop.winamp-active\"],\n MAIN_NEXT_BUTTON: [\".actions #next\"],\n MAIN_NEXT_BUTTON_ACTIVE: [\".actions #next.winamp-active\"],\n MAIN_EJECT_BUTTON: [\"#eject\"],\n MAIN_EJECT_BUTTON_ACTIVE: [\"#eject.winamp-active\"],\n MAIN_WINDOW_BACKGROUND: [\"#main-window\"],\n MAIN_STEREO: [\".media-info #stereo\", \".stop .media-info #stereo.selected\"],\n MAIN_STEREO_SELECTED: [\".media-info #stereo.selected\"],\n MAIN_MONO: [\".media-info #mono\", \".stop .media-info #mono.selected\"],\n MAIN_MONO_SELECTED: [\".media-info #mono.selected\"],\n NO_MINUS_SIGN: [\"#time #minus-sign\"],\n MINUS_SIGN: [\"#time.countdown #minus-sign\"],\n DIGIT_0: [\".digit-0\"],\n DIGIT_1: [\".digit-1\"],\n DIGIT_2: [\".digit-2\"],\n DIGIT_3: [\".digit-3\"],\n DIGIT_4: [\".digit-4\"],\n DIGIT_5: [\".digit-5\"],\n DIGIT_6: [\".digit-6\"],\n DIGIT_7: [\".digit-7\"],\n DIGIT_8: [\".digit-8\"],\n DIGIT_9: [\".digit-9\"],\n NO_MINUS_SIGN_EX: [\"#time #minus-sign\"],\n MINUS_SIGN_EX: [\"#time.countdown #minus-sign\"],\n DIGIT_0_EX: [\".digit-0\"],\n DIGIT_1_EX: [\".digit-1\"],\n DIGIT_2_EX: [\".digit-2\"],\n DIGIT_3_EX: [\".digit-3\"],\n DIGIT_4_EX: [\".digit-4\"],\n DIGIT_5_EX: [\".digit-5\"],\n DIGIT_6_EX: [\".digit-6\"],\n DIGIT_7_EX: [\".digit-7\"],\n DIGIT_8_EX: [\".digit-8\"],\n DIGIT_9_EX: [\".digit-9\"],\n MAIN_PLAYING_INDICATOR: [\".play #play-pause\"],\n MAIN_PAUSED_INDICATOR: [\".pause #play-pause\"],\n MAIN_STOPPED_INDICATOR: [\".stop #play-pause\"],\n MAIN_NOT_WORKING_INDICATOR: [\"#work-indicator\"],\n MAIN_WORKING_INDICATOR: [\"#work-indicator.selected\"],\n PLAYLIST_TOP_TILE: [\n \".playlist-top-left-fill\",\n \".playlist-top-left-spacer\",\n \".playlist-top-right-fill\",\n \".playlist-top-right-spacer\",\n ],\n PLAYLIST_TOP_LEFT_CORNER: [\".playlist-top-left\"],\n PLAYLIST_TITLE_BAR: [\".playlist-top-title\"],\n PLAYLIST_TOP_RIGHT_CORNER: [\".playlist-top-right\"],\n PLAYLIST_TOP_TILE_SELECTED: [\n \".selected .playlist-top-left-fill\",\n \".selected .playlist-top-left-spacer\",\n \".selected .playlist-top-right-fill\",\n \".selected .playlist-top-right-spacer\",\n ],\n PLAYLIST_TOP_LEFT_SELECTED: [\".selected .playlist-top-left\"],\n PLAYLIST_TITLE_BAR_SELECTED: [\".selected .playlist-top-title\"],\n PLAYLIST_TOP_RIGHT_CORNER_SELECTED: [\".selected .playlist-top-right\"],\n PLAYLIST_LEFT_TILE: [\".playlist-middle-left\"],\n PLAYLIST_RIGHT_TILE: [\".playlist-middle-right\"],\n PLAYLIST_SCROLL_HANDLE: [\".playlist-scrollbar-handle\"],\n PLAYLIST_SCROLL_HANDLE_SELECTED: [\n \".playlist-middle-right.winamp-active .playlist-scrollbar-handle\",\n ],\n PLAYLIST_BOTTOM_TILE: [\".playlist-bottom\"],\n PLAYLIST_BOTTOM_LEFT_CORNER: [\".playlist-bottom-left\"],\n PLAYLIST_BOTTOM_RIGHT_CORNER: [\".playlist-bottom-right\"],\n PLAYLIST_VISUALIZER_BACKGROUND: [\".playlist-visualizer\"],\n PLAYLIST_SHADE_BACKGROUND: [\"#playlist-window-shade\"],\n PLAYLIST_SHADE_BACKGROUND_LEFT: [\"#playlist-window-shade .left\"],\n PLAYLIST_SHADE_BACKGROUND_RIGHT: [\"#playlist-window-shade .right\"],\n PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED: [\n \"#playlist-window-shade.selected .right\",\n ],\n\n PLAYLIST_ADD_MENU_BAR: [\"#playlist-add-menu.selected .bar\"],\n PLAYLIST_ADD_URL: [\"#playlist-add-menu .add-url\"],\n PLAYLIST_ADD_URL_SELECTED: [\"#playlist-add-menu .hover .add-url\"],\n PLAYLIST_ADD_DIR: [\"#playlist-add-menu .add-dir\"],\n PLAYLIST_ADD_DIR_SELECTED: [\"#playlist-add-menu .hover .add-dir\"],\n PLAYLIST_ADD_FILE: [\"#playlist-add-menu .add-file\"],\n PLAYLIST_ADD_FILE_SELECTED: [\"#playlist-add-menu .hover .add-file\"],\n\n PLAYLIST_REMOVE_MENU_BAR: [\"#playlist-remove-menu.selected .bar\"],\n PLAYLIST_REMOVE_ALL: [\"#playlist-remove-menu .remove-all\"],\n PLAYLIST_REMOVE_ALL_SELECTED: [\"#playlist-remove-menu .hover .remove-all\"],\n PLAYLIST_CROP: [\"#playlist-remove-menu .crop\"],\n PLAYLIST_CROP_SELECTED: [\"#playlist-remove-menu .hover .crop\"],\n PLAYLIST_REMOVE_SELECTED: [\"#playlist-remove-menu .remove-selected\"],\n PLAYLIST_REMOVE_SELECTED_SELECTED: [\n \"#playlist-remove-menu .hover .remove-selected\",\n ],\n PLAYLIST_REMOVE_MISC: [\"#playlist-remove-menu .remove-misc\"],\n PLAYLIST_REMOVE_MISC_SELECTED: [\"#playlist-remove-menu .hover .remove-misc\"],\n\n PLAYLIST_SELECT_MENU_BAR: [\"#playlist-selection-menu.selected .bar\"],\n PLAYLIST_INVERT_SELECTION: [\"#playlist-selection-menu .invert-selection\"],\n PLAYLIST_INVERT_SELECTION_SELECTED: [\n \"#playlist-selection-menu .hover .invert-selection\",\n ],\n PLAYLIST_SELECT_ZERO: [\"#playlist-selection-menu .select-zero\"],\n PLAYLIST_SELECT_ZERO_SELECTED: [\n \"#playlist-selection-menu .hover .select-zero\",\n ],\n PLAYLIST_SELECT_ALL: [\"#playlist-selection-menu .select-all\"],\n PLAYLIST_SELECT_ALL_SELECTED: [\"#playlist-selection-menu .hover .select-all\"],\n PLAYLIST_CLOSE_SELECTED: [\"#playlist-close-button.winamp-active\"],\n PLAYLIST_COLLAPSE_SELECTED: [\n \"#playlist-window #playlist-shade-button.winamp-active\",\n ],\n PLAYLIST_EXPAND_SELECTED: [\n \"#playlist-window-shade #playlist-shade-button.winamp-active\",\n ],\n\n PLAYLIST_MISC_MENU_BAR: [\"#playlist-misc-menu.selected .bar\"],\n PLAYLIST_MISC_OPTIONS: [\"#playlist-misc-menu .misc-options\"],\n PLAYLIST_MISC_OPTIONS_SELECTED: [\"#playlist-misc-menu .hover .misc-options\"],\n PLAYLIST_FILE_INFO: [\"#playlist-misc-menu .file-info\"],\n PLAYLIST_FILE_INFO_SELECTED: [\"#playlist-misc-menu .hover .file-info\"],\n PLAYLIST_SORT_LIST: [\"#playlist-misc-menu .sort-list\"],\n PLAYLIST_SORT_LIST_SELECTED: [\"#playlist-misc-menu .hover .sort-list\"],\n\n PLAYLIST_LIST_BAR: [\"#playlist-list-menu.selected .bar\"],\n PLAYLIST_NEW_LIST: [\"#playlist-list-menu .new-list\"],\n PLAYLIST_NEW_LIST_SELECTED: [\"#playlist-list-menu .hover .new-list\"],\n PLAYLIST_LOAD_LIST: [\"#playlist-list-menu .load-list\"],\n PLAYLIST_LOAD_LIST_SELECTED: [\"#playlist-list-menu .hover .load-list\"],\n PLAYLIST_SAVE_LIST: [\"#playlist-list-menu .save-list\"],\n PLAYLIST_SAVE_LIST_SELECTED: [\"#playlist-list-menu .hover .save-list\"],\n\n EQ_WINDOW_BACKGROUND: [\"#equalizer-window:not(.shade)\"],\n EQ_TITLE_BAR: [\".equalizer-top\"],\n EQ_TITLE_BAR_SELECTED: [\".selected .equalizer-top\"],\n EQ_SLIDER_BACKGROUND: [\".band\"],\n EQ_SLIDER_THUMB: [\".band .slider-handle\"],\n // Put the \"active\" pseudo selector on the parent, since clicking\n // anywhere on the track moves the slider.\n EQ_SLIDER_THUMB_SELECTED: [\".band.winamp-active .slider-handle\"],\n EQ_ON_BUTTON: [\"#on\"],\n EQ_ON_BUTTON_DEPRESSED: [\"#on.winamp-active\"],\n EQ_ON_BUTTON_SELECTED: [\"#on.selected\"],\n EQ_ON_BUTTON_SELECTED_DEPRESSED: [\"#on.selected.winamp-active\"],\n EQ_AUTO_BUTTON: [\"#auto\"],\n EQ_AUTO_BUTTON_DEPRESSED: [\"#auto.winamp-active\"],\n EQ_AUTO_BUTTON_SELECTED: [\"#auto.selected\"],\n EQ_AUTO_BUTTON_SELECTED_DEPRESSED: [\"#auto.selected.winamp-active\"],\n EQ_GRAPH_BACKGROUND: [\"#eqGraph\"],\n EQ_PRESETS_BUTTON: [\"#presets\"],\n EQ_PRESETS_BUTTON_SELECTED: [\"#presets.winamp-active\"],\n EQ_PREAMP_LINE: [\"#preamp-line\"],\n EQ_SHADE_BACKGROUND: [\"#equalizer-window.shade\"],\n EQ_SHADE_BACKGROUND_SELECTED: [\"#equalizer-window.shade.selected\"],\n EQ_SHADE_VOLUME_SLIDER_LEFT: [\n \"#equalizer-volume.left::-webkit-slider-thumb\",\n \"#equalizer-volume.left::-moz-range-thumb\",\n ],\n EQ_SHADE_VOLUME_SLIDER_CENTER: [\n \"#equalizer-volume.center::-webkit-slider-thumb\",\n \"#equalizer-volume.center::-moz-range-thumb\",\n ],\n EQ_SHADE_VOLUME_SLIDER_RIGHT: [\n \"#equalizer-volume.right::-webkit-slider-thumb\",\n \"#equalizer-volume.right::-moz-range-thumb\",\n ],\n EQ_SHADE_BALANCE_SLIDER_LEFT: [\n \"#equalizer-balance.left::-webkit-slider-thumb\",\n \"#equalizer-balance.left::-moz-range-thumb\",\n ],\n EQ_SHADE_BALANCE_SLIDER_CENTER: [\n \"#equalizer-balance.center::-webkit-slider-thumb\",\n \"#equalizer-balance.center::-moz-range-thumb\",\n ],\n EQ_SHADE_BALANCE_SLIDER_RIGHT: [\n \"#equalizer-balance.right::-webkit-slider-thumb\",\n \"#equalizer-balance.right::-moz-range-thumb\",\n ],\n EQ_MAXIMIZE_BUTTON_ACTIVE: [\"#equalizer-shade.winamp-active\"],\n EQ_MINIMIZE_BUTTON_ACTIVE: [\n \"#equalizer-window.shade #equalizer-shade.winamp-active\",\n ],\n EQ_CLOSE_BUTTON: [\n \"#equalizer-window.selected #eq-buttons.clicked #equalizer-close\",\n ],\n EQ_CLOSE_BUTTON_ACTIVE: [\n \"#equalizer-window.selected #eq-buttons.clicked #equalizer-close.winamp-active\",\n ],\n EQ_SHADE_CLOSE_BUTTON: [\n \"#equalizer-window.shade.selected #eq-buttons.clicked #equalizer-close\",\n ],\n EQ_SHADE_CLOSE_BUTTON_ACTIVE: [\n \"#equalizer-window.shade.selected #eq-buttons.clicked #equalizer-close.winamp-active\",\n ],\n MAIN_POSITION_SLIDER_BACKGROUND: [\"#position\"],\n MAIN_POSITION_SLIDER_THUMB: [\n \"#position::-webkit-slider-thumb\",\n \"#position::-moz-range-thumb\",\n ],\n MAIN_POSITION_SLIDER_THUMB_SELECTED: [\n \"#position:active::-webkit-slider-thumb\",\n \"#position:active::-moz-range-thumb\",\n ],\n MAIN_SHUFFLE_BUTTON: [\"#shuffle\"],\n MAIN_SHUFFLE_BUTTON_DEPRESSED: [\"#shuffle.winamp-active\"],\n MAIN_SHUFFLE_BUTTON_SELECTED: [\"#shuffle.selected\"],\n MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED: [\"#shuffle.selected.winamp-active\"],\n MAIN_REPEAT_BUTTON: [\"#repeat\"],\n MAIN_REPEAT_BUTTON_DEPRESSED: [\"#repeat.winamp-active\"],\n MAIN_REPEAT_BUTTON_SELECTED: [\"#repeat.selected\"],\n MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED: [\"#repeat.selected.winamp-active\"],\n MAIN_EQ_BUTTON: [\"#equalizer-button\"],\n MAIN_EQ_BUTTON_SELECTED: [\"#equalizer-button.selected\"],\n MAIN_EQ_BUTTON_DEPRESSED: [\"#equalizer-button.winamp-active\"],\n MAIN_EQ_BUTTON_DEPRESSED_SELECTED: [\n \"#equalizer-button.selected.winamp-button\",\n ],\n MAIN_PLAYLIST_BUTTON: [\"#playlist-button\"],\n MAIN_PLAYLIST_BUTTON_SELECTED: [\"#playlist-button.selected\"],\n MAIN_PLAYLIST_BUTTON_DEPRESSED: [\"#playlist-button.winamp-active\"],\n MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED: [\n \"#playlist-button.selected.winamp-active\",\n ],\n MAIN_TITLE_BAR: [\"#title-bar\"],\n MAIN_TITLE_BAR_SELECTED: [\".selected #title-bar\"],\n MAIN_EASTER_EGG_TITLE_BAR: [\".llama #title-bar\"],\n MAIN_EASTER_EGG_TITLE_BAR_SELECTED: [\".llama.selected #title-bar\"],\n MAIN_OPTIONS_BUTTON: [\".selected #title-bar #option.clicked\"],\n MAIN_OPTIONS_BUTTON_DEPRESSED: [\n \".selected #title-bar #option:active\",\n \".selected #title-bar #option.selected\",\n ],\n MAIN_MINIMIZE_BUTTON: [\".selected #title-bar #minimize.clicked\"],\n MAIN_MINIMIZE_BUTTON_DEPRESSED: [\n \".selected #title-bar #minimize.winamp-active\",\n ],\n MAIN_SHADE_BUTTON: [\".selected #title-bar #shade.clicked\"],\n MAIN_SHADE_BUTTON_DEPRESSED: [\".selected #title-bar #shade.winamp-active\"],\n MAIN_CLOSE_BUTTON: [\".selected #title-bar #close.clicked\"],\n MAIN_CLOSE_BUTTON_DEPRESSED: [\".selected #title-bar #close.winamp-active\"],\n MAIN_CLUTTER_BAR_BACKGROUND: [\"#clutter-bar\"],\n MAIN_CLUTTER_BAR_BACKGROUND_DISABLED: [\"#clutter-bar.disabled\"],\n MAIN_CLUTTER_BAR_BUTTON_O_SELECTED: [\n \"#button-o:active\",\n \"#button-0.selected\",\n ],\n MAIN_CLUTTER_BAR_BUTTON_A_SELECTED: [\n \"#button-a:active\",\n \"#button-a.selected\",\n ],\n MAIN_CLUTTER_BAR_BUTTON_I_SELECTED: [\n \"#button-i:active\",\n \"#button-i.selected\",\n ],\n MAIN_CLUTTER_BAR_BUTTON_D_SELECTED: [\n \"#button-d:active\",\n \"#button-d.selected\",\n ],\n MAIN_CLUTTER_BAR_BUTTON_V_SELECTED: [\n \"#button-v:active\",\n \"#button-v.selected\",\n ],\n MAIN_SHADE_BACKGROUND: [\".shade #title-bar\"],\n MAIN_SHADE_BACKGROUND_SELECTED: [\".shade.selected #title-bar\"],\n MAIN_SHADE_BUTTON_SELECTED: [\".shade.selected #title-bar #shade\"],\n MAIN_SHADE_BUTTON_SELECTED_DEPRESSED: [\n \".shade #title-bar #shade.winamp-active\",\n ],\n MAIN_SHADE_POSITION_BACKGROUND: [\".shade #position\"],\n MAIN_SHADE_POSITION_THUMB: [\n \".shade #position::-moz-range-thumb\",\n \".shade #position::-webkit-slider-thumb\",\n ],\n MAIN_SHADE_POSITION_THUMB_LEFT: [\n \".shade #position.left::-moz-range-thumb\",\n \".shade #position.left::-webkit-slider-thumb\",\n ],\n MAIN_SHADE_POSITION_THUMB_RIGHT: [\n \".shade #position.right::-moz-range-thumb\",\n \".shade #position.right::-webkit-slider-thumb\",\n ],\n MAIN_VOLUME_BACKGROUND: [\"#volume\"],\n MAIN_VOLUME_THUMB: [\n \"#volume input::-webkit-slider-thumb\",\n \"#volume input::-moz-range-thumb\",\n ],\n MAIN_VOLUME_THUMB_SELECTED: [\n \"#volume input:active::-webkit-slider-thumb\",\n \"#volume input:active::-moz-range-thumb\",\n ],\n GEN_TOP_CENTER_FILL: [\".gen-window .gen-top\"],\n GEN_TOP_LEFT: [\".gen-window .gen-top-left\"],\n GEN_TOP_LEFT_END: [\".gen-window .gen-top-left-end\"],\n GEN_TOP_RIGHT: [\".gen-window .gen-top-right\"],\n GEN_TOP_RIGHT_END: [\".gen-window .gen-top-right-end\"],\n GEN_TOP_LEFT_RIGHT_FILL: [\n \".gen-window .gen-top-left-fill\",\n \".gen-window .gen-top-right-fill\",\n ],\n\n GEN_TOP_CENTER_FILL_SELECTED: [\".gen-window.selected .gen-top\"],\n GEN_TOP_LEFT_SELECTED: [\".gen-window.selected .gen-top-left\"],\n GEN_TOP_LEFT_END_SELECTED: [\".gen-window.selected .gen-top-left-end\"],\n GEN_TOP_RIGHT_SELECTED: [\".gen-window.selected .gen-top-right\"],\n GEN_TOP_RIGHT_END_SELECTED: [\".gen-window.selected .gen-top-right-end\"],\n GEN_TOP_LEFT_RIGHT_FILL_SELECTED: [\n \".gen-window.selected .gen-top-left-fill\",\n \".gen-window.selected .gen-top-right-fill\",\n ],\n GEN_BOTTOM_LEFT: [\".gen-window .gen-bottom-left\"],\n GEN_BOTTOM_RIGHT: [\".gen-window .gen-bottom-right\"],\n GEN_BOTTOM_FILL: [\".gen-window .gen-bottom\"],\n GEN_MIDDLE_LEFT: [\".gen-window .gen-middle-left\"],\n GEN_MIDDLE_LEFT_BOTTOM: [\".gen-window .gen-middle-left-bottom\"],\n GEN_MIDDLE_RIGHT: [\".gen-window .gen-middle-right\"],\n GEN_MIDDLE_RIGHT_BOTTOM: [\".gen-window .gen-middle-right-bottom\"],\n GEN_CLOSE_SELECTED: [\".gen-window .gen-close.winamp-active\"],\n};\n\nObject.keys(FONT_LOOKUP).forEach((character) => {\n const key = imageConstFromChar(character);\n const code = character.charCodeAt(0);\n imageSelectors[key] = [`.character-${code}`];\n});\n\nLETTERS.forEach((character) => {\n imageSelectors[`GEN_TEXT_${character}`] = [\n `.gen-text-${character.toLowerCase()}`,\n ];\n imageSelectors[`GEN_TEXT_SELECTED_${character}`] = [\n `.gen-window.selected .gen-text-${character.toLowerCase()}`,\n ];\n});\n\nexport const cursorSelectors: Selectors = {\n CLOSE: [\"#title-bar #close\"],\n // This is not quite right. There are some areas that show this cursor\n // but are not clickable.\n EQSLID: [\"#equalizer-window .band\"],\n EQNORMAL: [\"#equalizer-window\"],\n EQCLOSE: [\"#equalizer-window #equalizer-close\"],\n EQTITLE: [\n \"#equalizer-window .title-bar\",\n \"#equalizer-window.shade\",\n \"#equalizer-window.shade input\",\n ],\n MAINMENU: [\"#main-window #option\", \"#webamp-context-menu .context-menu\"],\n MIN: [\"#main-window #minimize\"],\n NORMAL: [\n // Use this as the default cursor.\n \".window\",\n \".window input\", // Otherwise\n \"#main-window\",\n \"#main-window.shade #title-bar\",\n ],\n MMENU: [\"#main-window.shade #option\"],\n PNORMAL: [\"#playlist-window\"],\n // TODO: This is should really only apply to the top part of the top.\n // The chrome around the playlist window is larger than others. The\n // cursor only applies to the same height as the other window's chrome.\n PTBAR: [\"#playlist-window .playlist-top\"],\n PCLOSE: [\n \"#playlist-window #playlist-close-button\",\n \"#playlist-window-shade #playlist-close-button\",\n ],\n PWINBUT: [\n \"#playlist-window #playlist-shade-button\",\n \"#playlist-window-shade #playlist-shade-button\",\n ],\n POSBAR: [\"#main-window #position\"],\n PSIZE: [\"#playlist-window #playlist-resize-target\"],\n PWSSIZE: [\"#playlist-window-shade #playlist-resize-target\"],\n PWSNORM: [\"#playlist-window-shade\"],\n // TODO: The target for this is not quite right.\n PVSCROLL: [\"#playlist-window .playlist-scrollbar\"],\n SONGNAME: [\"#main-window #marquee\"],\n TITLEBAR: [\"#main-window #title-bar\"],\n VOLBAL: [\"#volume\", \"#volume input\", \"#balance\"],\n WINBUT: [\"#main-window #shade\"],\n WSNORMAL: [\"#main-window.shade #title-bar\"],\n WSPOSBAR: [\"#main-window.shade #position\"],\n};\n","import { createPortal } from \"react-dom\";\nimport { useMemo, useLayoutEffect } from \"react\";\n\ntype Props = {\n children: string;\n id?: string;\n};\n\nexport default function Css({ children, id }: Props) {\n const style = useMemo(() => {\n const s = document.createElement(\"style\");\n s.type = \"text/css\";\n if (id != null) {\n s.id = id;\n }\n return s;\n }, [id]);\n\n useLayoutEffect(() => {\n document.head.appendChild(style);\n return () => style.remove();\n }, [style]);\n\n return createPortal(children, style);\n}\n","import { useMemo, useLayoutEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype Props = {\n children: { [id: string]: string[] };\n};\n\n// this.props.children should be an object containing arrays of strings. The\n// keys are ids, and the arrays are arrays of polygon point strings\nexport default function ClipPaths({ children }: Props) {\n const paths = useMemo(() => {\n return document.createElement(\"div\");\n }, []);\n\n useLayoutEffect(() => {\n document.body.appendChild(paths);\n return () => paths.remove();\n }, [paths]);\n\n return createPortal(\n <svg height={0} width={0}>\n <defs>\n {Object.keys(children).map((id) => (\n <clipPath id={id} key={id}>\n {children[id].map((points, i) => (\n <polygon points={points} key={i} />\n ))}\n </clipPath>\n ))}\n </defs>\n </svg>,\n paths\n );\n}\n","/*\r\n * Copyright (c) 2017-2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview A function to swap endianness in byte buffers.\r\n * @see https://github.com/rochars/endianness\r\n */\r\n\r\n/** @module endianness */\r\n\r\n/**\r\n * Swap the byte ordering in a buffer. The buffer is modified in place.\r\n * @param {!Array|!Uint8Array} bytes The bytes.\r\n * @param {number} offset The byte offset.\r\n * @param {number=} start The start index. Assumes 0.\r\n * @param {number=} end The end index. Assumes the buffer length.\r\n * @throws {Error} If the buffer length is not valid.\r\n */\r\nexport default function endianness(bytes, offset, start=0, end=bytes.length) {\r\n if (end % offset) {\r\n throw new Error(\"Bad buffer length.\");\r\n }\r\n for (let index = start; index < end; index += offset) {\r\n swap(bytes, offset, index);\r\n }\r\n}\r\n\r\n/**\r\n * Swap the byte order of a value in a buffer. The buffer is modified in place.\r\n * @param {!Array|!Uint8Array} bytes The bytes.\r\n * @param {number} offset The byte offset.\r\n * @param {number} index The start index.\r\n * @private\r\n */\r\nfunction swap(bytes, offset, index) {\r\n offset--;\r\n for(let x = 0; x < offset; x++) {\r\n /** @type {*} */\r\n let theByte = bytes[index + x];\r\n bytes[index + x] = bytes[index + offset];\r\n bytes[index + offset] = theByte;\r\n offset--;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Functions to serialize and deserialize UTF-8 strings.\r\n * @see https://github.com/rochars/utf8-buffer\r\n * @see https://encoding.spec.whatwg.org/#the-encoding\r\n * @see https://encoding.spec.whatwg.org/#utf-8-encoder\r\n */\r\n\r\n/** @module utf8-buffer */\r\n\r\n/**\r\n * Read a string of UTF-8 characters from a byte buffer.\r\n * Invalid characters are replaced with 'REPLACEMENT CHARACTER' (U+FFFD).\r\n * @see https://encoding.spec.whatwg.org/#the-encoding\r\n * @see https://stackoverflow.com/a/34926911\r\n * @param {!Uint8Array|!Array<number>} buffer A byte buffer.\r\n * @param {number=} start The buffer index to start reading.\r\n * @param {?number=} end The buffer index to stop reading.\r\n * Assumes the buffer length if undefined.\r\n * @return {string}\r\n */\r\nexport function unpack(buffer, start=0, end=buffer.length) {\r\n /** @type {string} */\r\n let str = '';\r\n for(let index = start; index < end;) {\r\n /** @type {number} */\r\n let lowerBoundary = 0x80;\r\n /** @type {number} */\r\n let upperBoundary = 0xBF;\r\n /** @type {boolean} */\r\n let replace = false;\r\n /** @type {number} */\r\n let charCode = buffer[index++];\r\n if (charCode >= 0x00 && charCode <= 0x7F) {\r\n str += String.fromCharCode(charCode);\r\n } else {\r\n /** @type {number} */\r\n let count = 0;\r\n if (charCode >= 0xC2 && charCode <= 0xDF) {\r\n count = 1;\r\n } else if (charCode >= 0xE0 && charCode <= 0xEF ) {\r\n count = 2;\r\n if (buffer[index] === 0xE0) {\r\n lowerBoundary = 0xA0;\r\n }\r\n if (buffer[index] === 0xED) {\r\n upperBoundary = 0x9F;\r\n }\r\n } else if (charCode >= 0xF0 && charCode <= 0xF4 ) {\r\n count = 3;\r\n if (buffer[index] === 0xF0) {\r\n lowerBoundary = 0x90;\r\n }\r\n if (buffer[index] === 0xF4) {\r\n upperBoundary = 0x8F;\r\n }\r\n } else {\r\n replace = true;\r\n }\r\n charCode = charCode & (1 << (8 - count - 1)) - 1;\r\n for (let i = 0; i < count; i++) {\r\n if (buffer[index] < lowerBoundary || buffer[index] > upperBoundary) {\r\n replace = true;\r\n }\r\n charCode = (charCode << 6) | (buffer[index] & 0x3f);\r\n index++;\r\n }\r\n if (replace) {\r\n str += String.fromCharCode(0xFFFD);\r\n } \r\n else if (charCode <= 0xffff) {\r\n str += String.fromCharCode(charCode);\r\n } else {\r\n charCode -= 0x10000;\r\n str += String.fromCharCode(\r\n ((charCode >> 10) & 0x3ff) + 0xd800,\r\n (charCode & 0x3ff) + 0xdc00);\r\n }\r\n }\r\n }\r\n return str;\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters to a byte buffer.\r\n * @see https://encoding.spec.whatwg.org/#utf-8-encoder\r\n * @param {string} str The string to pack.\r\n * @param {!Uint8Array|!Array<number>} buffer The buffer to pack the string to.\r\n * @param {number=} index The buffer index to start writing.\r\n * @return {number} The next index to write in the buffer.\r\n */\r\nexport function pack(str, buffer, index=0) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n /** @type {number} */\r\n let codePoint = str.codePointAt(i);\r\n if (codePoint < 128) {\r\n buffer[index] = codePoint;\r\n index++;\r\n } else {\r\n /** @type {number} */\r\n let count = 0;\r\n /** @type {number} */\r\n let offset = 0;\r\n if (codePoint <= 0x07FF) {\r\n count = 1;\r\n offset = 0xC0;\r\n } else if(codePoint <= 0xFFFF) {\r\n count = 2;\r\n offset = 0xE0;\r\n } else if(codePoint <= 0x10FFFF) {\r\n count = 3;\r\n offset = 0xF0;\r\n i++;\r\n }\r\n buffer[index] = (codePoint >> (6 * count)) + offset;\r\n index++;\r\n while (count > 0) {\r\n buffer[index] = 0x80 | (codePoint >> (6 * (count - 1)) & 0x3F);\r\n index++;\r\n count--;\r\n }\r\n }\r\n }\r\n return index;\r\n}\r\n","/*\r\n * Copyright (c) 2017-2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Encode and decode int numbers to and from byte buffers.\r\n * @see https://github.com/rochars/byte-data\r\n */\r\n\r\n/**\r\n * A class to write and read integer numbers to and from byte buffers.\r\n */\r\nexport class IntParser {\r\n \r\n /**\r\n * @param {number} bits The number of bits used by the integer.\r\n * @param {boolean} [signed=false] True for signed, false otherwise.\r\n * @param {boolean} [clamp=false] True to clamp on overflow.\r\n */\r\n constructor(bits, signed=false, clamp=false) {\r\n /**\r\n * The number of bits used by one number.\r\n * @type {number}\r\n */\r\n this.bits = bits;\r\n /**\r\n * The number of bytes used by one number.\r\n * @type {number}\r\n */\r\n this.bytes = bits < 8 ? 1 : Math.ceil(bits / 8);\r\n /**\r\n * @type {number}\r\n * @protected\r\n */\r\n this.max = Math.pow(2, bits) - 1;\r\n /**\r\n * @type {number}\r\n * @protected\r\n */\r\n this.min = 0;\r\n /** @type {number} */\r\n let r = 8 - ((((bits - 1) | 7) + 1) - bits);\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.lastByteMask_ = Math.pow(2, r > 0 ? r : 8) - 1;\r\n /**\r\n * @type {Function}\r\n * @protected\r\n */\r\n this.unpack = this.unpackUnsigned_;\r\n if (signed) {\r\n this.max = Math.pow(2, bits) / 2 - 1;\r\n this.min = -this.max - 1;\r\n this.unpack = this.unpackSigned_;\r\n }\r\n if (clamp) {\r\n this.overflow_ = this.overflowClamp_;\r\n }\r\n }\r\n\r\n /**\r\n * Write one unsigned integer to a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n * @param {number} num The number. Overflows are truncated.\r\n * @param {number} [index=0] The index being written in the byte buffer.\r\n * @return {number} The next index to write on the byte buffer.\r\n */\r\n pack(buffer, num, index=0) {\r\n if (num !== num || num.constructor != Number) {\r\n throw new TypeError();\r\n }\r\n num = this.overflow_(num);\r\n buffer[index] = (num < 0 ? num + Math.pow(2, this.bits) : num) & 255;\r\n index++;\r\n for (let i = 2, len = this.bytes; i < len; i++) {\r\n buffer[index] = Math.floor(num / Math.pow(2, ((i - 1) * 8))) & 255;\r\n index++;\r\n }\r\n if (this.bits > 8) {\r\n buffer[index] = Math.floor(\r\n num / Math.pow(2, ((this.bytes - 1) * 8))) & this.lastByteMask_;\r\n index++;\r\n }\r\n return index;\r\n }\r\n\r\n /**\r\n * Read one unsigned integer from a byte buffer.\r\n * Does not check for overflows.\r\n * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n * @param {number} [index=0] The index to read.\r\n * @return {number}\r\n */\r\n unpack_(buffer, index=0) {\r\n /** @type {number} */\r\n let num = 0;\r\n for(let x = 0; x < this.bytes; x++) {\r\n num += buffer[index + x] * Math.pow(256, x);\r\n }\r\n return num;\r\n }\r\n\r\n unpackUnsigned_(buffer, index=0) {\r\n return this.overflow_(this.unpack_(buffer, index));\r\n }\r\n\r\n /**\r\n * Read one two's complement signed integer from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n * @param {number} [index=0] The index to read.\r\n * @return {number}\r\n */\r\n unpackSigned_(buffer, index=0) {\r\n return this.overflow_(this.sign_(this.unpack_(buffer, index)));\r\n }\r\n\r\n /**\r\n * Truncate values in case of overflow.\r\n * @param {number} num The number.\r\n * @private\r\n */\r\n overflow_(num) {\r\n if (num > this.max || num < this.min) {\r\n throw new RangeError();\r\n }\r\n return num;\r\n }\r\n\r\n /**\r\n * Truncate values in case of overflow.\r\n * @param {number} num The number.\r\n * @private\r\n */\r\n overflowClamp_(num) {\r\n if (num > this.max) {\r\n return this.max;\r\n } else if (num < this.min) {\r\n return this.min;\r\n }\r\n return num;\r\n }\r\n\r\n /**\r\n * Sign a number.\r\n * @param {number} num The number.\r\n * @return {number}\r\n * @private\r\n */\r\n sign_(num) {\r\n if (num > this.max) {\r\n num -= (this.max * 2) + 2;\r\n }\r\n return num;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2018-2019 Rafael da Silva Rocha.\r\n * Copyright (c) 2013 DeNA Co., Ltd.\r\n * Copyright (c) 2010, Linden Research, Inc\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Encode and decode IEEE 754 floating point numbers.\r\n * @see https://github.com/rochars/ieee754-buffer\r\n * @see https://bitbucket.org/lindenlab/llsd/raw/7d2646cd3f9b4c806e73aebc4b32bd81e4047fdc/js/typedarray.js\r\n * @see https://github.com/kazuho/ieee754.js/blob/master/ieee754.js\r\n */\r\n\r\n/** \r\n * @module ieee754-buffer\r\n */\r\n\r\n/**\r\n * A class to encode and decode IEEE 754 floating-point numbers.\r\n */\r\nexport class IEEE754Buffer {\r\n\r\n /**\r\n * Pack a IEEE 754 floating point number.\r\n * @param {number} ebits The exponent bits.\r\n * @param {number} fbits The fraction bits.\r\n */\r\n constructor(ebits, fbits) {\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.ebits = ebits;\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.fbits = fbits;\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.bias = (1 << (ebits - 1)) - 1;\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.numBytes = Math.ceil((ebits + fbits) / 8);\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.biasP2 = Math.pow(2, this.bias + 1);\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.ebitsFbits = (ebits + fbits);\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.fbias = Math.pow(2, -(8 * this.numBytes - 1 - ebits));\r\n }\r\n\r\n /**\r\n * Pack a IEEE 754 floating point number.\r\n * @param {!Uint8Array|!Array<number>} buffer The buffer.\r\n * @param {number} num The number.\r\n * @param {number} index The index to write on the buffer.\r\n * @return {number} The next index to write on the buffer.\r\n * @throws {TypeError} If input is not a number.\r\n */\r\n pack(buffer, num, index) {\r\n // Only numbers can be packed\r\n if (typeof num != 'number') {\r\n throw new TypeError();\r\n }\r\n // Round overflows\r\n if (Math.abs(num) > this.biasP2 - (this.ebitsFbits * 2)) {\r\n num = num < 0 ? -Infinity : Infinity;\r\n }\r\n /**\r\n * sign, need this to handle negative zero\r\n * @see http://cwestblog.com/2014/02/25/javascript-testing-for-negative-zero/\r\n * @type {number}\r\n */\r\n let sign = (((num = +num) || 1 / num) < 0) ? 1 : num < 0 ? 1 : 0;\r\n num = Math.abs(num);\r\n /** @type {number} */\r\n let exp = Math.min(Math.floor(Math.log(num) / Math.LN2), 1023);\r\n /** @type {number} */\r\n let fraction = roundToEven(num / Math.pow(2, exp) * Math.pow(2, this.fbits));\r\n // NaN\r\n if (num !== num) {\r\n fraction = Math.pow(2, this.fbits - 1);\r\n exp = (1 << this.ebits) - 1;\r\n // Number\r\n } else if (num !== 0) {\r\n if (num >= Math.pow(2, 1 - this.bias)) {\r\n if (fraction / Math.pow(2, this.fbits) >= 2) {\r\n exp = exp + 1;\r\n fraction = 1;\r\n }\r\n // Overflow\r\n if (exp > this.bias) {\r\n exp = (1 << this.ebits) - 1;\r\n fraction = 0;\r\n } else {\r\n exp = exp + this.bias;\r\n fraction = roundToEven(fraction) - Math.pow(2, this.fbits);\r\n }\r\n } else {\r\n fraction = roundToEven(num / Math.pow(2, 1 - this.bias - this.fbits));\r\n exp = 0;\r\n } \r\n }\r\n return this.packFloatBits_(buffer, index, sign, exp, fraction);\r\n }\r\n\r\n /**\r\n * Unpack a IEEE 754 floating point number.\r\n * Derived from IEEE754 by DeNA Co., Ltd., MIT License. \r\n * Adapted to handle NaN. Should port the solution to the original repo.\r\n * @param {!Uint8Array|!Array<number>} buffer The buffer.\r\n * @param {number} index The index to read from the buffer.\r\n * @return {number} The floating point number.\r\n */\r\n unpack(buffer, index) {\r\n /** @type {number} */\r\n let eMax = (1 << this.ebits) - 1;\r\n /** @type {number} */\r\n let significand;\r\n /** @type {string} */\r\n let leftBits = \"\";\r\n for (let i = this.numBytes - 1; i >= 0 ; i--) {\r\n /** @type {string} */\r\n let t = buffer[i + index].toString(2);\r\n leftBits += \"00000000\".substring(t.length) + t;\r\n }\r\n /** @type {number} */\r\n let sign = leftBits.charAt(0) == \"1\" ? -1 : 1;\r\n leftBits = leftBits.substring(1);\r\n /** @type {number} */\r\n let exponent = parseInt(leftBits.substring(0, this.ebits), 2);\r\n leftBits = leftBits.substring(this.ebits);\r\n if (exponent == eMax) {\r\n if (parseInt(leftBits, 2) !== 0) {\r\n return NaN;\r\n }\r\n return sign * Infinity; \r\n } else if (exponent === 0) {\r\n exponent += 1;\r\n significand = parseInt(leftBits, 2);\r\n } else {\r\n significand = parseInt(\"1\" + leftBits, 2);\r\n }\r\n return sign * significand * this.fbias * Math.pow(2, exponent - this.bias);\r\n }\r\n\r\n /**\r\n * Pack a IEEE754 from its sign, exponent and fraction bits\r\n * and place it in a byte buffer.\r\n * @param {!Uint8Array|!Array<number>} buffer The byte buffer to write to.\r\n * @param {number} index The buffer index to write.\r\n * @param {number} sign The sign.\r\n * @param {number} exp the exponent.\r\n * @param {number} fraction The fraction.\r\n * @return {number}\r\n * @private\r\n */\r\n packFloatBits_(buffer, index, sign, exp, fraction) {\r\n /** @type {!Array<number>} */\r\n let bits = [];\r\n // the sign\r\n bits.push(sign);\r\n // the exponent\r\n for (let i = this.ebits; i > 0; i -= 1) {\r\n bits[i] = (exp % 2 ? 1 : 0);\r\n exp = Math.floor(exp / 2);\r\n }\r\n // the fraction\r\n let len = bits.length;\r\n for (let i = this.fbits; i > 0; i -= 1) {\r\n bits[len + i] = (fraction % 2 ? 1 : 0);\r\n fraction = Math.floor(fraction / 2);\r\n }\r\n // pack as bytes\r\n /** @type {string} */\r\n let str = bits.join('');\r\n /** @type {number} */\r\n let numBytes = this.numBytes + index - 1;\r\n /** @type {number} */\r\n let k = index;\r\n while (numBytes >= index) {\r\n buffer[numBytes] = parseInt(str.substring(0, 8), 2);\r\n str = str.substring(8);\r\n numBytes--;\r\n k++;\r\n }\r\n return k;\r\n }\r\n}\r\n\r\n/**\r\n * Round a number to its nearest even value.\r\n * @param {number} n The number.\r\n * @return {number}\r\n * @private\r\n */\r\nfunction roundToEven(n) {\r\n /** @type {number} */\r\n let w = Math.floor(n);\r\n let f = n - w;\r\n if (f < 0.5) {\r\n return w;\r\n }\r\n if (f > 0.5) {\r\n return w + 1;\r\n }\r\n return w % 2 ? w + 1 : w;\r\n}\r\n","/*\r\n * Copyright (c) 2017-2019 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview JavaScript binary parser for any browser or environment.\r\n * @see https://github.com/rochars/byte-data\r\n */\r\n\r\n/** @module byte-data */\r\n\r\nimport endianness from 'endianness';\r\nimport { pack as packUTF8, unpack as unpackUTF8 } from 'utf8-buffer';\r\nimport { IntParser } from './lib/int-parser';\r\nimport { IEEE754Buffer } from 'ieee754-buffer';\r\n\r\n/**\r\n * Read a string of UTF-8 characters from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer A byte buffer.\r\n * @param {number} [index=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The index to stop reading, non inclusive.\r\n * @return {string}\r\n */\r\nexport function unpackString(buffer, index=0, end=buffer.length) {\r\n return unpackUTF8(buffer, index, end);\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters as a byte buffer.\r\n * @param {string} str The string to pack.\r\n * @return {!Array<number>} The UTF-8 string bytes.\r\n */\r\nexport function packString(str) {\r\n /** @type {!Array<number>} */\r\n let buffer = [];\r\n packUTF8(str, buffer, 0);\r\n return buffer;\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters to a byte buffer.\r\n * @param {string} str The string to pack.\r\n * @param {!(Uint8Array|Array<number>)} buffer The output buffer.\r\n * @param {number} [index=0] The buffer index to start writing.\r\n * @return {number} The next index to write in the buffer.\r\n */\r\nexport function packStringTo(str, buffer, index=0) {\r\n return packUTF8(str, buffer, index);\r\n}\r\n\r\n// Numbers\r\n/**\r\n * Pack a array of numbers to a byte buffer.\r\n * All other packing functions are interfaces to this function.\r\n * @param {!(Array<number>|TypedArray)} values The values to pack.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(Uint8Array|Array<number>)} buffer The buffer to write on.\r\n * @param {number} [index=0] The buffer index to start writing.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number} The next index to write.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packArrayTo(values, theType, buffer, index=0, clamp=false) {\r\n theType = theType || {};\r\n /** @type {!Object} */\r\n let packer = getParser_(theType.bits, theType.fp, theType.signed, clamp);\r\n /** @type {number} */\r\n let offset = Math.ceil(theType.bits / 8);\r\n /** @type {number} */\r\n let i = 0;\r\n /** @type {number} */\r\n let start = index;\r\n try {\r\n for (let valuesLen = values.length; i < valuesLen; i++) {\r\n index = packer.pack(buffer, values[i], index);\r\n }\r\n if (theType.be) {\r\n endianness(buffer, offset, start, index);\r\n }\r\n } catch (e) {\r\n throwValueError_(e, values[i], i);\r\n }\r\n return index;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers from a byte buffer to a array or a typed array.\r\n * All other unpacking functions are interfaces to this function.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(TypedArray|Array<number>)} output The output array or typed array.\r\n * @param {number} [start=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The buffer index to stop reading.\r\n * @param {boolean} [safe=false] If set to false, extra bytes in the end of\r\n * the array are ignored and input buffers with insufficient bytes will\r\n * write nothing to the output array. If safe is set to true the function\r\n * will throw a 'Bad buffer length' error.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpackArrayTo(\r\n buffer, theType, output, start=0, end=buffer.length,\r\n safe=false, clamp=false) {\r\n theType = theType || {};\r\n /** @type {!Object} */\r\n let packer = getParser_(theType.bits, theType.fp, theType.signed, clamp);\r\n /** @type {number} */\r\n let offset = Math.ceil(theType.bits / 8);\r\n // getUnpackLen_ will either fix the length of the input buffer\r\n // according to the byte offset of the type (on unsafe mode) or\r\n // throw a Error if the input buffer has a bad length (on safe mode)\r\n end = getUnpackLen_(buffer, start, end, offset, safe);\r\n /** @type {number} */\r\n let index = 0;\r\n let j = start;\r\n try {\r\n if (theType.be) {\r\n endianness(buffer, offset, start, end);\r\n }\r\n for (; j < end; j += offset, index++) {\r\n output[index] = packer.unpack(buffer, j);\r\n }\r\n if (theType.be) {\r\n endianness(buffer, offset, start, end);\r\n }\r\n } catch (e) {\r\n throwValueError_(e, buffer.slice(j, j + offset), j);\r\n }\r\n}\r\n\r\n/**\r\n * Pack a number to a byte buffer.\r\n * @param {number} value The value.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer to write on.\r\n * @param {number} [index=0] The buffer index to write.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number} The next index to write.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packTo(value, theType, buffer, index=0, clamp=false) {\r\n return packArrayTo([value], theType, buffer, index, clamp);\r\n}\r\n\r\n/**\r\n * Pack a number as a array of bytes.\r\n * @param {number} value The number to pack.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>} The packed value.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function pack(value, theType, clamp=false) {\r\n /** @type {!Array<number>} */\r\n let output = [];\r\n packTo(value, theType, output, 0, clamp);\r\n return output;\r\n}\r\n\r\n/**\r\n * Pack a array of numbers as a array of bytes.\r\n * @param {!(Array<number>|TypedArray)} values The values to pack.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>} The packed values.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packArray(values, theType, clamp=false) {\r\n /** @type {!Array<number>} */\r\n let output = [];\r\n packArrayTo(values, theType, output, 0, clamp);\r\n return output;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {number} [start=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The buffer index to stop reading.\r\n * @param {boolean} [safe=false] If set to false, extra bytes in the end of\r\n * the array are ignored and input buffers with insufficient bytes will\r\n * output a empty array. If safe is set to true the function\r\n * will throw a 'Bad buffer length' error.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>}\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpackArray(\r\n buffer, theType, start=0, end=buffer.length, safe=false, clamp=false) {\r\n /** @type {!Array<number>} */\r\n let output = [];\r\n unpackArrayTo(buffer, theType, output, start, end, safe, clamp);\r\n return output;\r\n}\r\n\r\n/**\r\n * Unpack a number from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {number} [index=0] The buffer index to read.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number}\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {Error} On bad buffer length.\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpack(buffer, theType, index=0, clamp=false) {\r\n return unpackArray(\r\n buffer, theType, index, index + Math.ceil(theType.bits / 8),\r\n true, clamp)[0];\r\n}\r\n\r\n/**\r\n * Throw a error with information about the problem.\r\n * @param {!Object} err The Error object that is being raised.\r\n * @param {*} value The value that caused the error.\r\n * @param {number} index The index of the value that caused the error.\r\n * @throws {RangeError|TypeError|Error} A Error with a message.\r\n * @private\r\n */\r\nfunction throwValueError_(err, value, index) {\r\n err.message = err.constructor.name +\r\n ' at index ' + index + ': ' + value;\r\n throw err;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers to a typed array.\r\n * All other unpacking functions are interfaces to this function.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {number} start The buffer index to start reading.\r\n * @param {number} end The buffer index to stop reading.\r\n * @param {number} offset The number of bytes used by the type.\r\n * @param {boolean} safe True for size-safe buffer reading.\r\n * @throws {Error} On bad buffer length, if safe.\r\n * @private\r\n */\r\nfunction getUnpackLen_(buffer, start, end, offset, safe) {\r\n /** @type {number} */\r\n let extra = (end - start) % offset;\r\n if (safe && (extra || buffer.length < offset)) {\r\n throw new Error('Bad buffer length');\r\n }\r\n return end - extra;\r\n}\r\n\r\n/**\r\n * Return a parser for int, uint or fp numbers.\r\n * @param {number} bits The number of bits.\r\n * @param {boolean|undefined} fp True for fp numbers, false otherwise.\r\n * @param {boolean|undefined} signed True for signed ints, false otherwise.\r\n * @param {boolean|undefined} clamp True to clamp ints on overflow, false otherwise.\r\n * @return {!Object}\r\n * @private\r\n */\r\nfunction getParser_(bits, fp, signed, clamp) {\r\n if (fp) {\r\n validateFloatType(bits);\r\n } else {\r\n validateIntType(bits);\r\n }\r\n if (fp && bits === 16) {\r\n return new IEEE754Buffer(5, 11);\r\n } else if (fp && bits == 32) {\r\n return new IEEE754Buffer(8, 23);\r\n } else if(fp && bits == 64) {\r\n return new IEEE754Buffer(11, 52);\r\n }\r\n return new IntParser(bits, signed, clamp);\r\n}\r\n\r\n/**\r\n * The type definition error message.\r\n * @type {string}\r\n * @private\r\n */\r\nconst TYPE_ERR = 'Unsupported type';\r\n\r\n/**\r\n * Validate the type definition of floating-point numbers.\r\n * @param {number} bits The number of bits.\r\n * @throws {Error} If the type definition is not valid.\r\n * @private\r\n */\r\nfunction validateFloatType(bits) {\r\n if (!bits || bits !== 16 && bits !== 32 && bits !== 64) {\r\n throw new Error(TYPE_ERR + ': float, bits: ' + bits);\r\n }\r\n}\r\n\r\n/**\r\n * Validate the type definition of integers.\r\n * @param {number} bits The number of bits.\r\n * @throws {Error} If the type definition is not valid.\r\n * @private\r\n */\r\nfunction validateIntType(bits) {\r\n if (!bits || bits < 1 || bits > 53) {\r\n throw new Error(TYPE_ERR + ': int, bits: ' + bits);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2017-2019 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview The RIFFFile class.\r\n * @see https://github.com/rochars/riff-file\r\n */\r\n\r\n/** @module riff-file */\r\n\r\nimport {unpackString, unpack} from 'byte-data';\r\n\r\n/**\r\n * A class to perform low-level reading of RIFF/RIFX files.\r\n */\r\nexport class RIFFFile {\r\n\r\n constructor() {\r\n /**\r\n * The container identifier.\r\n * 'RIFF', 'RIFX' and 'RF64' are supported.\r\n * @type {string}\r\n */\r\n this.container = '';\r\n /**\r\n * The main chunk size, in bytes.\r\n * @type {number}\r\n */\r\n this.chunkSize = 0;\r\n /**\r\n * The format identifier.\r\n * @type {string}\r\n */\r\n this.format = '';\r\n /**\r\n * An object representing the signature of all chunks in the file.\r\n * @type {{\r\n chunkId: string,\r\n chunkSize: number,\r\n format: string,\r\n chunkData: {start: number, end: number},\r\n subChunks: Array\r\n }|null}\r\n */\r\n this.signature = null;\r\n /**\r\n * @type {number}\r\n * @protected\r\n */\r\n this.head = 0;\r\n /**\r\n * @type {\r\n {bits: number, be: boolean, signed: boolean, fp: boolean}\r\n }\r\n * @protected\r\n */\r\n this.uInt32 = { bits: 32, be: false, signed: false, fp: false };\r\n /**\r\n * The list of supported containers.\r\n * Any format different from RIFX will be treated as RIFF.\r\n * @type {!Array<string>}\r\n * @protected\r\n */\r\n this.supported_containers = ['RIFF', 'RIFX'];\r\n }\r\n\r\n /**\r\n * Read the signature of the chunks in a RIFF/RIFX file.\r\n * @param {!Uint8Array} buffer The file bytes.\r\n * @protected\r\n */\r\n setSignature(buffer) {\r\n this.head = 0;\r\n this.container = this.readString(buffer, 4);\r\n if (this.supported_containers.indexOf(this.container) === -1) {\r\n throw Error('Not a supported format.');\r\n }\r\n this.uInt32.be = this.container === 'RIFX';\r\n this.chunkSize = this.readUInt32(buffer);\r\n this.format = this.readString(buffer, 4);\r\n // The RIFF file signature\r\n this.signature = {\r\n chunkId: this.container,\r\n chunkSize: this.chunkSize,\r\n format: this.format,\r\n subChunks: this.getSubChunksIndex_(buffer),\r\n chunkData: {start: 0, end: this.chunkSize}\r\n };\r\n }\r\n\r\n /**\r\n * Find a chunk by its fourCC_ in a array of RIFF chunks.\r\n * @param {string} chunkId The chunk fourCC_.\r\n * @param {boolean} multiple True if there may be multiple chunks\r\n * with the same chunkId.\r\n * @return {Object}\r\n * @protected\r\n */\r\n findChunk(chunkId, multiple=false) {\r\n /** @type {!Array|null} */\r\n let chunks = this.signature.subChunks;\r\n /** @type {!Array<!Object>} */\r\n let chunk = [];\r\n for (let i=0; i<chunks.length; i++) {\r\n if (chunks[i].chunkId == chunkId) {\r\n if (multiple) {\r\n chunk.push(chunks[i]);\r\n } else {\r\n return chunks[i];\r\n }\r\n }\r\n }\r\n if (chunkId == 'LIST') {\r\n return chunk.length ? chunk : null;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Read bytes as a string from a RIFF chunk.\r\n * @param {!Uint8Array} bytes The bytes.\r\n * @param {number} maxSize the max size of the string.\r\n * @return {string} The string.\r\n * @protected\r\n */\r\n readString(bytes, maxSize) {\r\n /** @type {string} */\r\n let str = '';\r\n str = unpackString(bytes, this.head, this.head + maxSize);\r\n this.head += maxSize;\r\n return str;\r\n }\r\n\r\n /**\r\n * Read a number from a chunk.\r\n * @param {!Uint8Array} bytes The chunk bytes.\r\n * @return {number} The number.\r\n * @protected\r\n */\r\n readUInt32(bytes) {\r\n /** @type {number} */\r\n let value = unpack(bytes, this.uInt32, this.head);\r\n this.head += 4;\r\n return value;\r\n }\r\n\r\n /**\r\n * Return the sub chunks of a RIFF file.\r\n * @param {!Uint8Array} buffer the RIFF file bytes.\r\n * @return {!Array<Object>} The subchunks of a RIFF/RIFX or LIST chunk.\r\n * @private\r\n */\r\n getSubChunksIndex_(buffer) {\r\n /** @type {!Array<!Object>} */\r\n let chunks = [];\r\n /** @type {number} */\r\n let i = this.head;\r\n while(i <= buffer.length - 8) {\r\n chunks.push(this.getSubChunkIndex_(buffer, i));\r\n i += 8 + chunks[chunks.length - 1].chunkSize;\r\n i = i % 2 ? i + 1 : i;\r\n }\r\n return chunks;\r\n }\r\n\r\n /**\r\n * Return a sub chunk from a RIFF file.\r\n * @param {!Uint8Array} buffer the RIFF file bytes.\r\n * @param {number} index The start index of the chunk.\r\n * @return {!Object} A subchunk of a RIFF/RIFX or LIST chunk.\r\n * @private\r\n */\r\n getSubChunkIndex_(buffer, index) {\r\n /** @type {!Object} */\r\n let chunk = {\r\n chunkId: this.getChunkId_(buffer, index),\r\n chunkSize: this.getChunkSize_(buffer, index),\r\n };\r\n if (chunk.chunkId == 'LIST') {\r\n chunk.format = unpackString(buffer, index + 8, index + 12);\r\n this.head += 4;\r\n chunk.subChunks = this.getSubChunksIndex_(buffer);\r\n } else {\r\n /** @type {number} */\r\n let realChunkSize = chunk.chunkSize % 2 ?\r\n chunk.chunkSize + 1 : chunk.chunkSize;\r\n this.head = index + 8 + realChunkSize;\r\n chunk.chunkData = {\r\n start: index + 8,\r\n end: this.head\r\n };\r\n }\r\n return chunk;\r\n }\r\n\r\n /**\r\n * Return the fourCC_ of a chunk.\r\n * @param {!Uint8Array} buffer the RIFF file bytes.\r\n * @param {number} index The start index of the chunk.\r\n * @return {string} The id of the chunk.\r\n * @private\r\n */\r\n getChunkId_(buffer, index) {\r\n this.head += 4;\r\n return unpackString(buffer, index, index + 4);\r\n }\r\n\r\n /**\r\n * Return the size of a chunk.\r\n * @param {!Uint8Array} buffer the RIFF file bytes.\r\n * @param {number} index The start index of the chunk.\r\n * @return {number} The size of the chunk without the id and size fields.\r\n * @private\r\n */\r\n getChunkSize_(buffer, index) {\r\n this.head += 4;\r\n return unpack(buffer, this.uInt32, index + 4);\r\n }\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseAni = void 0;\nvar riff_file_1 = require(\"riff-file\");\nvar byte_data_1 = require(\"byte-data\");\nvar DWORD = { bits: 32, be: false, signed: false, fp: false };\nfunction parseAni(arr) {\n var riff = new riff_file_1.RIFFFile();\n riff.setSignature(arr);\n var signature = riff.signature;\n if (signature.format !== \"ACON\") {\n throw new Error(\"Expected format. Expected \\\"ACON\\\", got \\\"\" + signature.format + \"\\\"\");\n }\n // Helper function to get a chunk by chunkId and transform it if it's non-null.\n function mapChunk(chunkId, mapper) {\n var chunk = riff.findChunk(chunkId);\n return chunk == null ? null : mapper(chunk);\n }\n var metadata = mapChunk(\"anih\", function (c) {\n var words = byte_data_1.unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n return {\n cbSize: words[0],\n nFrames: words[1],\n nSteps: words[2],\n iWidth: words[3],\n iHeight: words[4],\n iBitCount: words[5],\n nPlanes: words[6],\n iDispRate: words[7],\n bfAttributes: words[8],\n };\n });\n if (metadata == null) {\n throw new Error(\"Did not find anih\");\n }\n var rate = mapChunk(\"rate\", function (c) {\n return byte_data_1.unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n });\n // chunkIds are always four chars, hence the trailing space.\n var seq = mapChunk(\"seq \", function (c) {\n return byte_data_1.unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n });\n var lists = riff.findChunk(\"LIST\", true);\n var imageChunk = lists === null || lists === void 0 ? void 0 : lists.find(function (c) { return c.format === \"fram\"; });\n if (imageChunk == null) {\n throw new Error(\"Did not find fram LIST\");\n }\n var images = imageChunk.subChunks.slice(0, metadata.nFrames).map(function (c) {\n if (c.chunkId !== \"icon\") {\n throw new Error(\"Unexpected chunk type in fram: \" + c.chunkId);\n }\n return arr.slice(c.chunkData.start, c.chunkData.end);\n });\n var title = null;\n var artist = null;\n var infoChunk = lists === null || lists === void 0 ? void 0 : lists.find(function (c) { return c.format === \"INFO\"; });\n if (infoChunk != null) {\n infoChunk.subChunks.forEach(function (c) {\n switch (c.chunkId) {\n case \"INAM\":\n title = byte_data_1.unpackString(arr, c.chunkData.start, c.chunkData.end);\n break;\n case \"IART\":\n artist = byte_data_1.unpackString(arr, c.chunkData.start, c.chunkData.end);\n break;\n default:\n // Unexpected subchunk\n }\n });\n }\n return { images: images, rate: rate, seq: seq, metadata: metadata, artist: artist, title: title };\n}\nexports.parseAni = parseAni;\n//# sourceMappingURL=parser.js.map","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertAniBinaryToCSS = void 0;\nvar parser_1 = require(\"./parser\");\nvar JIFFIES_PER_MS = 1000 / 60;\n// Generate CSS for an animated cursor.\n//\n// This function returns CSS containing a set of keyframes with embedded Data\n// URIs as well as a CSS rule to the given selector.\nfunction convertAniBinaryToCSS(selector, aniBinary) {\n var ani = readAni(aniBinary);\n var animationName = \"ani-cursor-\" + uniqueId();\n var keyframes = ani.frames.map(function (_a) {\n var url = _a.url, percents = _a.percents;\n var percent = percents.map(function (num) { return num + \"%\"; }).join(\", \");\n return percent + \" { cursor: url(\" + url + \"), auto; }\";\n });\n // CSS properties with a animation type of \"discrete\", like `cursor`, actually\n // switch half-way _between_ each keyframe percentage. Luckily this half-way\n // measurement is applied _after_ the easing function is applied. So, we can\n // force the frames to appear at exactly the % that we specify by using\n // `timing-function` of `step-end`.\n //\n // https://drafts.csswg.org/web-animations-1/#discrete\n var timingFunction = \"step-end\";\n // Winamp (re)starts the animation cycle when your mouse enters an element. By\n // default this approach would cause the animation to run continuously, even\n // when the cursor is not visible. To match Winamp's behavior we add a\n // `:hover` pseudo selector so that the animation only runs when the cursor is\n // visible.\n var pseudoSelector = \":hover\";\n // prettier-ignore\n return \"\\n @keyframes \" + animationName + \" {\\n \" + keyframes.join(\"\\n\") + \"\\n }\\n \" + selector + pseudoSelector + \" {\\n animation: \" + animationName + \" \" + ani.duration + \"ms \" + timingFunction + \" infinite;\\n }\\n \";\n}\nexports.convertAniBinaryToCSS = convertAniBinaryToCSS;\nfunction readAni(contents) {\n var _a;\n var ani = parser_1.parseAni(contents);\n var rate = (_a = ani.rate) !== null && _a !== void 0 ? _a : ani.images.map(function () { return ani.metadata.iDispRate; });\n var duration = sum(rate);\n var frames = ani.images.map(function (image) { return ({\n url: curUrlFromByteArray(image),\n percents: [],\n }); });\n var elapsed = 0;\n rate.forEach(function (r, i) {\n var frameIdx = ani.seq ? ani.seq[i] : i;\n frames[frameIdx].percents.push((elapsed / duration) * 100);\n elapsed += r;\n });\n return { duration: duration * JIFFIES_PER_MS, frames: frames };\n}\n/* Utility Functions */\nvar i = 0;\nvar uniqueId = function () { return i++; };\nfunction base64FromDataArray(dataArray) {\n return window.btoa(String.fromCharCode.apply(String, __spread(dataArray)));\n}\nfunction curUrlFromByteArray(arr) {\n var base64 = base64FromDataArray(arr);\n return \"data:image/x-win-bitmap;base64,\" + base64;\n}\nfunction sum(values) {\n return values.reduce(function (total, value) { return total + value; }, 0);\n}\n//# sourceMappingURL=index.js.map","// Dynamically set the css background images for all the sprites\nimport { LETTERS } from \"../constants\";\nimport { imageSelectors, cursorSelectors } from \"../skinSelectors\";\nimport { useTypedSelector } from \"../hooks\";\nimport * as Selectors from \"../selectors\";\nimport { SkinImages } from \"../types\";\nimport { createSelector } from \"reselect\";\nimport Css from \"./Css\";\nimport ClipPaths from \"./ClipPaths\";\nimport { convertAniBinaryToCSS } from \"ani-cursor\";\n\nconst CSS_PREFIX = \"#webamp\";\n\nconst mapRegionNamesToIds: { [key: string]: string } = {\n normal: \"mainWindowClipPath\",\n windowshade: \"shadeMainWindowClipPath\",\n equalizer: \"equalizerWindowClipPath\",\n equalizerws: \"shadeEqualizerWindowClipPath\",\n};\n\nconst mapRegionNamesToMatcher: { [key: string]: string } = {\n normal: \"#main-window:not(.shade)\",\n windowshade: \"#main-window.shade\",\n equalizer: \"#equalizer-window:not(.shade)\",\n equalizerws: \"#equalizer-window.shade\",\n};\n\nconst numExIsUsed = (skinImages: SkinImages) => Boolean(skinImages.DIGIT_0_EX);\n\nconst FALLBACKS: { [key: string]: string } = {\n MAIN_BALANCE_BACKGROUND: \"MAIN_VOLUME_BACKGROUND\",\n MAIN_BALANCE_THUMB: \"MAIN_VOLUME_THUMB\",\n MAIN_BALANCE_THUMB_ACTIVE: \"MAIN_VOLUME_THUMB_SELECTED\",\n EQ_MAXIMIZE_BUTTON_ACTIVE: \"EQ_MAXIMIZE_BUTTON_ACTIVE_FALLBACK\",\n};\n\n// Cursors might appear in context menus which are not nested inside the window layout div.\nfunction normalizeCursorSelector(selector: string): string {\n return `${\n // TODO: Fix this hack\n // Maybe our CSS name spacing should be based on some other class/id\n // than the one we use for defining the main div.\n // That way it could be shared by both the player and the context menu.\n selector.startsWith(\"#webamp-context-menu\") ? \"\" : CSS_PREFIX\n } ${selector}`;\n}\n\nconst getCssRules = createSelector(\n Selectors.getSkinImages,\n Selectors.getSkinCursors,\n Selectors.getSkinLetterWidths,\n Selectors.getSkinRegion,\n (skinImages, skinCursors, skinGenLetterWidths, skinRegion): string | null => {\n if (!skinImages || !skinCursors) {\n return null;\n }\n const cssRules = [];\n Object.keys(imageSelectors).forEach((imageName) => {\n const imageUrl =\n skinImages[imageName] || skinImages[FALLBACKS[imageName]];\n if (imageUrl) {\n imageSelectors[imageName].forEach((_selector) => {\n const selector = _selector; // .replace(\":active\", \".active\");\n cssRules.push(\n `${CSS_PREFIX} ${selector} {background-image: url(${imageUrl})}`\n );\n });\n }\n });\n\n if (skinGenLetterWidths != null) {\n LETTERS.forEach((letter) => {\n const width = skinGenLetterWidths[`GEN_TEXT_${letter}`];\n const selectedWidth =\n skinGenLetterWidths[`GEN_TEXT_SELECTED_${letter}`];\n cssRules.push(\n `${CSS_PREFIX} .gen-text-${letter.toLowerCase()} {width: ${width}px;}`\n );\n cssRules.push(\n `${CSS_PREFIX} .selected .gen-text-${letter.toLowerCase()} {width: ${selectedWidth}px;}`\n );\n });\n }\n\n Object.entries(cursorSelectors).forEach(([cursorName, cursorSelector]) => {\n const cursor = skinCursors[cursorName];\n if (cursor == null) {\n return;\n }\n const cursorRules = cursorSelector\n .map(normalizeCursorSelector)\n .map((selector) => {\n switch (cursor.type) {\n case \"cur\":\n return `${selector} {cursor: url(${cursor.url}), auto}`;\n case \"ani\": {\n try {\n return convertAniBinaryToCSS(selector, cursor.aniData);\n } catch (e) {\n console.error(e);\n return null;\n }\n }\n }\n })\n .filter(Boolean);\n cssRules.push(...cursorRules);\n });\n\n if (numExIsUsed(skinImages)) {\n // This alternate number file requires that the minus sign be\n // formatted differently.\n cssRules.push(\n `${CSS_PREFIX} .webamp-status #time #minus-sign { top: 0px; left: -1px; width: 9px; height: 13px; }`\n );\n }\n\n for (const [regionName, polygons] of Object.entries(skinRegion)) {\n if (polygons) {\n const matcher = mapRegionNamesToMatcher[regionName];\n const id = mapRegionNamesToIds[regionName];\n cssRules.push(`${CSS_PREFIX} ${matcher} { clip-path: url(#${id}); }`);\n }\n }\n\n return cssRules.join(\"\\n\");\n }\n);\n\nconst getClipPaths = createSelector(Selectors.getSkinRegion, (skinRegion) => {\n const clipPaths: { [id: string]: string[] } = {};\n for (const [regionName, polygons] of Object.entries(skinRegion)) {\n if (polygons) {\n const id = mapRegionNamesToIds[regionName];\n clipPaths[id] = polygons;\n }\n }\n return clipPaths;\n});\n\nexport default function Skin() {\n const cssRules = useTypedSelector(getCssRules);\n const clipPaths = useTypedSelector(getClipPaths);\n if (cssRules == null) {\n return null;\n }\n return (\n <>\n <Css id=\"webamp-skin\">{cssRules}</Css>\n <ClipPaths>{clipPaths}</ClipPaths>\n </>\n );\n}\n","import {\n useLayoutEffect,\n useEffect,\n useState,\n useCallback,\n StrictMode,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { FilePicker } from \"../types\";\nimport { WINDOWS } from \"../constants\";\nimport * as Selectors from \"../selectors\";\nimport * as Actions from \"../actionCreators\";\nimport * as Utils from \"../utils\";\nimport MilkdropWindow from \"../components/MilkdropWindow\";\nimport ContextMenuWrapper from \"./ContextMenuWrapper\";\nimport MainContextMenu from \"./MainWindow/MainContextMenu\";\nimport WindowManager from \"./WindowManager\";\nimport MainWindow from \"./MainWindow\";\nimport PlaylistWindow from \"./PlaylistWindow\";\nimport EqualizerWindow from \"./EqualizerWindow\";\nimport Skin from \"./Skin\";\n\nimport Media from \"../media\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\nimport Css from \"./Css\";\n\n// @ts-ignore\nimport cssText from \"../../css/webamp.css?inline\";\n\ninterface Props {\n filePickers: FilePicker[];\n media: Media;\n}\n\n/**\n * Constructs the windows to render\n */\nexport default function App({ media, filePickers }: Props) {\n const closed = useTypedSelector(Selectors.getClosed);\n const genWindowsInfo = useTypedSelector(Selectors.getGenWindows);\n const zIndex = useTypedSelector(Selectors.getZIndex);\n\n const browserWindowSizeChanged = useActionCreator(\n Actions.browserWindowSizeChanged\n );\n const setFocusedWindow = useActionCreator(Actions.setFocusedWindow);\n\n const [webampNode] = useState(() => {\n const node = document.createElement(\"div\");\n node.id = \"webamp\";\n // @ts-ignore I think I'm supposed to set this with setAttribute, but I can't confirm.\n node.role = \"application\";\n return node;\n });\n\n useLayoutEffect(() => {\n webampNode.style.zIndex = String(zIndex);\n }, [webampNode, zIndex]);\n\n useLayoutEffect(() => {\n document.body.appendChild(webampNode);\n return () => {\n document.body.removeChild(webampNode);\n };\n }, [webampNode]);\n\n useEffect(() => {\n const handleWindowResize = () => {\n if (webampNode == null) {\n return;\n }\n // It's a bit tricky to measure the \"natural\" size of the browser window.\n // Specifically we want to know how large the window would be without our\n // own Webamp windows influencing it. To achieve this, we temporarily make\n // our container `overflow: hidden;`. We then make our container full\n // screen by setting the bottom/right properties to zero. This second part\n // allows our Webamp windows to stay visible during the resize. After we\n // measure, we set the style back so that we don't end up interfering with\n // click events outside of our Webamp windows.\n webampNode.style.right = \"0\";\n webampNode.style.bottom = \"0\";\n webampNode.style.overflow = \"hidden\";\n browserWindowSizeChanged(Utils.getWindowSize());\n webampNode.style.right = \"auto\";\n webampNode.style.bottom = \"auto\";\n webampNode.style.overflow = \"visible\";\n };\n\n handleWindowResize();\n\n window.addEventListener(\"resize\", handleWindowResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleWindowResize);\n };\n }, [browserWindowSizeChanged, webampNode]);\n\n const renderWindows = useCallback(() => {\n return Utils.objectMap(genWindowsInfo, (w, id) => {\n if (!w.open) {\n return null;\n }\n switch (id) {\n case WINDOWS.MAIN:\n return (\n <MainWindow\n analyser={media.getAnalyser()}\n filePickers={filePickers}\n />\n );\n case WINDOWS.EQUALIZER:\n return <EqualizerWindow />;\n case WINDOWS.PLAYLIST:\n return <PlaylistWindow analyser={media.getAnalyser()} />;\n case WINDOWS.MILKDROP:\n return <MilkdropWindow analyser={media.getAnalyser()} />;\n default:\n throw new Error(`Tried to render an unknown window: ${id}`);\n }\n });\n }, [media, filePickers, genWindowsInfo]);\n\n const handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n if (!e.currentTarget.contains(e.relatedTarget as Element)) {\n setFocusedWindow(null);\n }\n };\n\n if (closed) {\n return null;\n }\n\n return ReactDOM.createPortal(\n <StrictMode>\n <Css>{cssText}</Css>\n <div onBlur={handleBlur}>\n <Skin />\n <ContextMenuWrapper\n renderContents={() => <MainContextMenu filePickers={filePickers} />}\n >\n <WindowManager windows={renderWindows()} />\n </ContextMenuWrapper>\n </div>\n </StrictMode>,\n webampNode\n );\n}\n","import {\n play,\n pause,\n stop,\n adjustVolume,\n toggleRepeat,\n toggleShuffle,\n openMediaFileDialog,\n seekForward,\n seekBackward,\n reverseList,\n nextN,\n next,\n previous,\n toggleDoubleSizeMode,\n toggleWindow,\n} from \"./actionCreators\";\n\nimport { TOGGLE_TIME_MODE, TOGGLE_LLAMA_MODE } from \"./actionTypes\";\n\nimport { Dispatch } from \"./types\";\n\nconst IGNORE_EVENTS_FROM_TAGS = new Set([\"input\", \"textarea\", \"select\"]);\n\nexport function bindHotkeys(dispatch: Dispatch): () => void {\n let currentPos: number = 0;\n const trigger = [\n 78, // N\n 85, // U\n 76, // L\n 76, // L\n 83, // S\n 79, // O\n 70, // F\n 84, // T\n ];\n\n const listener = (e: KeyboardEvent) => {\n if (\n e.target instanceof Element &&\n IGNORE_EVENTS_FROM_TAGS.has(e.target.tagName.toLowerCase())\n ) {\n return;\n }\n if (e.ctrlKey) {\n switch (e.keyCode) {\n case 68: // CTRL+D\n dispatch(toggleDoubleSizeMode());\n e.preventDefault(); // Supress the \"Bookmark\" action on windows.\n break;\n case 76: // CTRL+L FIXME\n break;\n case 82: // CTRL+R\n dispatch(reverseList());\n break;\n case 84: // CTRL+T\n dispatch({ type: TOGGLE_TIME_MODE });\n break;\n }\n } else if (e.altKey) {\n switch (e.keyCode) {\n case 87: // ALT+W\n dispatch(toggleWindow(\"main\"));\n break;\n case 69: // ALT+E\n dispatch(toggleWindow(\"playlist\"));\n break;\n case 71: // ALT+G\n dispatch(toggleWindow(\"equalizer\"));\n break;\n }\n } else {\n switch (e.keyCode) {\n case 37: // left arrow\n dispatch(seekBackward(5));\n break;\n case 38: // up arrow\n dispatch(adjustVolume(1));\n break;\n case 39: // right arrow\n dispatch(seekForward(5));\n break;\n case 40: // down arrow\n dispatch(adjustVolume(-1));\n break;\n case 66: // B\n dispatch(next());\n break;\n case 67: // C\n dispatch(pause());\n break;\n case 76: // L\n dispatch(openMediaFileDialog());\n break;\n case 82: // R\n dispatch(toggleRepeat());\n break;\n case 83: // S\n dispatch(toggleShuffle());\n break;\n case 86: // V\n dispatch(stop());\n break;\n case 88: // X\n dispatch(play());\n break;\n case 90: // Z\n dispatch(previous());\n break;\n case 96: // numpad 0\n dispatch(openMediaFileDialog());\n break;\n case 97: // numpad 1\n dispatch(nextN(-10));\n break;\n case 98: // numpad 2\n dispatch(adjustVolume(-1));\n break;\n case 99: // numpad 3\n dispatch(nextN(10));\n break;\n case 100: // numpad 4\n dispatch(previous());\n break;\n case 101: // numpad 5\n dispatch(play());\n break;\n case 102: // numpad 6\n dispatch(next());\n break;\n case 103: // numpad 7\n dispatch(seekBackward(5));\n break;\n case 104: // numpad 8\n dispatch(adjustVolume(1));\n break;\n case 105: // numpad 9\n dispatch(seekForward(5));\n break;\n }\n }\n\n // Easter Egg\n\n // Ignore escape. Usually this gets swallowed by the browser, but not always.\n if (e.keyCode !== 27) {\n currentPos = e.keyCode === trigger[currentPos] ? currentPos + 1 : 0;\n if (currentPos === trigger.length) {\n dispatch({ type: TOGGLE_LLAMA_MODE });\n }\n }\n };\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n}\n","export default class Emitter {\n _listeners: { [event: string]: Array<(...args: any[]) => void> };\n\n constructor() {\n this._listeners = {};\n }\n\n on(event: string, callback: (...args: any[]) => void) {\n const eventListeners = this._listeners[event] || [];\n eventListeners.push(callback);\n this._listeners[event] = eventListeners;\n const unsubscribe = () => {\n this._listeners[event] = eventListeners.filter((cb) => cb !== callback);\n };\n return unsubscribe;\n }\n\n trigger(event: string, ...args: any[]) {\n const callbacks = this._listeners[event];\n if (callbacks) {\n callbacks.forEach((cb) => cb(...args));\n }\n }\n\n dispose() {\n this._listeners = {};\n }\n}\n","// The Web Audio API does not offer an easy way to make a stereo balance\n// control. This is an attempt to fill that void, using an API similar to\n// [StereoPannerNode](https://developer.mozilla.org/en-US/docs/Web/API/StereoPannerNode)\nexport default function StereoBalanceNode(context, options = { balance: 0 }) {\n let balance = 0;\n\n // ChannelSplitterNode cannot be told to use a `channelInterperatation` of\n // \"speakers\". This means that if we get a mono file, we will end up only\n // playing in the left speaker. So instead we use this dummy gain node to\n // convert whatever source we get (stereo, mono, or n channels) into a stereo\n // signal.\n // Idea credit: https://github.com/WebAudio/web-audio-api/issues/975#issue-177242377\n const upMixer = context.createGain();\n upMixer.channelCount = 2;\n upMixer.channelCountMode = \"explicit\";\n upMixer.channelInterpretation = \"speakers\";\n\n const splitter = context.createChannelSplitter(2);\n\n // Create the gains for left and right\n const leftGain = context.createGain();\n const rightGain = context.createGain();\n\n const merger = context.createChannelMerger(2);\n\n upMixer.connect(splitter);\n\n splitter.connect(leftGain, 0);\n splitter.connect(rightGain, 1);\n\n leftGain.connect(merger, 0, 0);\n rightGain.connect(merger, 0, 1);\n\n // -1 (left) to 1 (right)\n function set(rawValue) {\n const value = Number(rawValue);\n leftGain.gain.value = value > 0 ? 1 - value : 1;\n rightGain.gain.value = value > 0 ? 1 : 1 + value;\n balance = value;\n }\n\n function get() {\n return balance;\n }\n\n // Create our own version of an [AudioParam](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam).\n // We don't currently support any of the \"over time\" methods, but maybe some day\n // we'll want to.\n const audioParam = {};\n Object.defineProperties(audioParam, {\n value: { get, set, enumerable: true, configurable: true },\n });\n\n // The way the `.connect` API works, we can't actually construct our own\n // AudioNode. Instead we have to take an existing node and monkey patch it.\n Object.defineProperties(upMixer, {\n balance: {\n value: audioParam,\n enumerable: true,\n writable: false,\n configurable: true,\n },\n connect: {\n value: AudioNode.prototype.connect.bind(merger),\n enumerable: false,\n writable: false,\n configurable: true,\n },\n disconnect: {\n value: AudioNode.prototype.disconnect.bind(merger),\n enumerable: false,\n writable: false,\n configurable: true,\n },\n });\n\n if (balance !== options.balance) {\n set(options.balance);\n }\n\n return upMixer;\n}\n","import Emitter from \"../emitter\";\nimport { clamp } from \"../utils\";\nimport { MEDIA_STATUS } from \"../constants\";\nimport { MediaStatus } from \"../types\";\n\nexport default class ElementSource {\n _emitter: Emitter;\n _context: AudioContext;\n _source: AudioNode;\n _destination: AudioNode;\n _audio: HTMLAudioElement;\n _stalled: boolean;\n _status: MediaStatus;\n\n on(eventType: string, cb: (...args: any[]) => void) {\n return this._emitter.on(eventType, cb);\n }\n\n constructor(context: AudioContext, destination: AudioNode) {\n this._emitter = new Emitter();\n this._context = context;\n this._destination = destination;\n this._audio = document.createElement(\"audio\");\n this._audio.crossOrigin = \"anonymous\";\n this._stalled = false;\n this._status = MEDIA_STATUS.STOPPED;\n\n // TODO: #leak\n this._audio.addEventListener(\"suspend\", () => {\n this._setStalled(true);\n });\n\n // TODO: #leak\n this._audio.addEventListener(\"durationchange\", () => {\n this._emitter.trigger(\"loaded\");\n this._setStalled(false);\n });\n\n // TODO: #leak\n this._audio.addEventListener(\"ended\", () => {\n this._emitter.trigger(\"ended\");\n this._setStatus(MEDIA_STATUS.STOPPED);\n });\n\n // TODO: Throttle to 50 (if needed)\n // TODO: #leak\n this._audio.addEventListener(\"timeupdate\", () => {\n this._emitter.trigger(\"positionChange\");\n });\n\n // TODO: #leak\n this._audio.addEventListener(\"error\", (e) => {\n switch (this._audio.error!.code) {\n case 1:\n // The fetching of the associated resource was aborted by the user's request.\n console.error(\"MEDIA_ERR_ABORTED\", e);\n break;\n case 2:\n console.error(\"MEDIA_ERR_NETWORK\", e);\n // Some kind of network error occurred which prevented the media from being successfully fetched, despite having previously been available.\n break;\n case 3:\n // Despite having previously been determined to be usable, an error occurred while trying to decode the media resource, resulting in an error.\n\n // There is a bug in Chrome where improperly terminated mp3s can cuase this error.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=794782\n // Related: Commit f44e826c83c74fef04c2c448af30cfb353b28312\n console.error(\"PIPELINE_ERROR_DECODE\", e);\n break;\n case 4:\n console.error(\"MEDIA_ERR_SRC_NOT_SUPPORTED\", e);\n // The associated resource or media provider object (such as a MediaStream) has been found to be unsuitable.\n break;\n }\n // Rather than just geting stuck in this error state, we can just pretend this is\n // the end of the track.\n\n this._emitter.trigger(\"ended\");\n this._setStatus(MEDIA_STATUS.STOPPED);\n });\n\n this._source = this._context.createMediaElementSource(this._audio);\n this._source.connect(destination);\n }\n\n _setStalled(stalled: boolean) {\n this._stalled = stalled;\n this._emitter.trigger(\"stallChanged\");\n }\n\n disconnect() {\n this._source.disconnect();\n }\n\n // Async for now, for compatibility with BufferAudioSource\n // TODO: This does not need to be async\n async loadUrl(url: string) {\n this._audio.src = url;\n }\n\n async play() {\n if (this._status !== MEDIA_STATUS.PAUSED) {\n this.seekToTime(0);\n }\n try {\n await this._audio.play();\n // TODO #race\n } catch (err) {\n //\n }\n this._setStatus(MEDIA_STATUS.PLAYING);\n }\n\n pause() {\n this._audio.pause();\n this._setStatus(MEDIA_STATUS.PAUSED);\n }\n\n stop() {\n this._audio.pause();\n this._audio.currentTime = 0;\n this._setStatus(MEDIA_STATUS.STOPPED);\n }\n\n seekToTime(time: number) {\n /* TODO: We could check if this is actually seekable:\n const { seekable } = this._audio;\n for (let i = 0; i < seekable.length; i++) {\n console.log(\"start\", seekable.start(i), \"end\", seekable.end(i));\n }\n */\n this._audio.currentTime = clamp(time, 0, this.getDuration());\n this._emitter.trigger(\"positionChange\");\n }\n\n getStalled() {\n return this._stalled;\n }\n\n getStatus() {\n return this._status;\n }\n\n getDuration() {\n const { duration } = this._audio;\n // Safari on iOS currently has a strange behavior where it reports\n // the duration as infinity if an Accept-Ranges header is not returned.\n // For now, 0 is better even though it's still wrong.\n return isNaN(duration) || duration === Infinity ? 0 : duration;\n }\n\n getTimeElapsed() {\n return this._audio.currentTime;\n }\n\n _setStatus(status: MediaStatus) {\n this._status = status;\n this._emitter.trigger(\"statusChange\");\n }\n\n dispose() {\n // TODO: Dispose subscriptions to this.audio\n this.stop();\n this._emitter.dispose();\n }\n}\n","/* Emulate the native <audio> element with Web Audio API */\nimport { BANDS, MEDIA_STATUS } from \"../constants\";\nimport { Band } from \"../types\";\nimport Emitter from \"../emitter\";\nimport StereoBalanceNode from \"./StereoBalanceNode\";\nimport ElementSource from \"./elementSource\";\n\ninterface StereoBalanceNodeType extends AudioNode {\n constructor(context: AudioContext): StereoBalanceNodeType;\n balance: {\n value: number;\n };\n}\n\n// NOTE: While this is not technically a public API, https://winampify.io/ is\n// replacing this class with a custom version. Breaking changes to this API\n// surface should be communicated to Remi.\nexport default class Media {\n _emitter: Emitter;\n _context: AudioContext;\n _balance: StereoBalanceNodeType;\n _staticSource: GainNode;\n _preamp: GainNode;\n _analyser: AnalyserNode;\n _gainNode: GainNode;\n _source: ElementSource;\n _bands: { [band: number]: BiquadFilterNode };\n\n constructor() {\n this._emitter = new Emitter();\n // @ts-ignore Typescript does not know about webkitAudioContext\n this._context = new (window.AudioContext || window.webkitAudioContext)();\n // Fix for iOS and Chrome (Canary) which require that the context be created\n // or resumed by a user interaction.\n // https://developers.google.com/web/updates/2017/09/autoplay-policy-changes\n // https://gist.github.com/laziel/7aefabe99ee57b16081c\n // Via: https://stackoverflow.com/a/43395068/1263117\n // TODO #leak\n if (this._context.state === \"suspended\") {\n const resume = async () => {\n await this._context.resume();\n\n if (this._context.state === \"running\") {\n // TODO: Add this to the disposable\n document.body.removeEventListener(\"touchend\", resume, false);\n document.body.removeEventListener(\"click\", resume, false);\n document.body.removeEventListener(\"keydown\", resume, false);\n }\n };\n\n document.body.addEventListener(\"touchend\", resume, false);\n document.body.addEventListener(\"click\", resume, false);\n document.body.addEventListener(\"keydown\", resume, false);\n }\n\n // TODO: Maybe we can get rid of this now that we are using AudioAbstraction?\n this._staticSource = this._context.createGain(); // Just a noop node\n\n // @ts-ignore The way this class has to be monkey patched, makes it very hard to type.\n this._balance = new StereoBalanceNode(this._context);\n\n // Create the preamp node\n this._preamp = this._context.createGain();\n\n // Create the analyser node for the visualizer\n this._analyser = this._context.createAnalyser();\n this._analyser.fftSize = 2048;\n // don't smooth audio analysis\n this._analyser.smoothingTimeConstant = 0.0;\n\n // Create the gain node for the volume control\n this._gainNode = this._context.createGain();\n\n // Connect all the nodes in the correct way\n // (Note, source is created and connected later)\n //\n // <source>\n // |\n // |_____________\n // | \\\n // <preamp> |\n // | | <-- Optional bypass\n // [...biquadFilters] |\n // |_____________/\n // |\n // <staticSource>\n // |\n // <balance>\n // |\n // |\\\n // | <analyser>\n // <gain>\n // |\n // <destination>\n\n this._source = new ElementSource(this._context, this._staticSource);\n\n this._source.on(\"positionChange\", () => {\n this._emitter.trigger(\"timeupdate\");\n });\n this._source.on(\"ended\", () => {\n this._emitter.trigger(\"ended\");\n });\n this._source.on(\"statusChange\", () => {\n switch (this._source.getStatus()) {\n case MEDIA_STATUS.PLAYING:\n this._emitter.trigger(\"playing\");\n break;\n }\n this._emitter.trigger(\"timeupdate\");\n });\n this._source.on(\"loaded\", () => {\n this._emitter.trigger(\"fileLoaded\");\n });\n\n this._staticSource.connect(this._preamp);\n\n let output = this._preamp;\n this._bands = {};\n\n BANDS.forEach((band, i) => {\n const filter = this._context.createBiquadFilter();\n\n this._bands[band] = filter;\n\n if (i === 0) {\n // The first filter, includes all lower frequencies\n filter.type = \"lowshelf\";\n } else if (i === BANDS.length - 1) {\n // The last filter, includes all higher frequencies\n filter.type = \"highshelf\";\n } else {\n filter.type = \"peaking\";\n }\n filter.frequency.value = band;\n filter.gain.value = 0;\n\n output.connect(filter);\n output = filter;\n });\n\n output.connect(this._balance);\n\n this._balance.connect(this._gainNode);\n this._balance.connect(this._analyser);\n\n this._gainNode.connect(this._context.destination);\n }\n\n getAnalyser() {\n return this._analyser;\n }\n\n /* Properties */\n duration() {\n return this._source.getDuration();\n }\n\n timeElapsed() {\n return this._source.getTimeElapsed();\n }\n\n timeRemaining() {\n return this.duration() - this.timeElapsed();\n }\n\n percentComplete() {\n return (this.timeElapsed() / this.duration()) * 100;\n }\n\n /* Actions */\n async play() {\n await this._source.play();\n }\n\n pause() {\n this._source.pause();\n }\n\n stop() {\n this._source.stop();\n }\n\n /* Actions with arguments */\n seekToPercentComplete(percent: number) {\n const seekTime = this.duration() * (percent / 100);\n this.seekToTime(seekTime);\n }\n\n // From 0-1\n setVolume(volume: number) {\n this._gainNode.gain.value = volume / 100;\n }\n\n // from 0 to 100\n // The input value here is 0-100 which is kinda wrong, since it represents -12db to 12db.\n // For now, 50 is 0db (no change).\n // Equation used is: 10^((dB)/20) = x, where x (preamp.gain.value) is passed on to gainnode for boosting or attenuation.\n setPreamp(value: number) {\n const db = (value / 100) * 24 - 12;\n this._preamp.gain.value = Math.pow(10, db / 20);\n }\n\n // From -100 to 100\n setBalance(balance: number) {\n // Yo Dawg.\n this._balance.balance.value = balance / 100;\n }\n\n setEqBand(band: Band, value: number) {\n const db = (value / 100) * 24 - 12;\n this._bands[band].gain.value = db;\n }\n\n disableEq() {\n this._staticSource.disconnect();\n this._staticSource.connect(this._balance);\n }\n\n enableEq() {\n this._staticSource.disconnect();\n this._staticSource.connect(this._preamp);\n }\n\n /* Listeners */\n on(event: string, callback: (...args: any[]) => void) {\n this._emitter.on(event, callback);\n }\n\n seekToTime(time: number) {\n this._source.seekToTime(time);\n }\n\n // Used only for the initial load, since it must have a CORS header\n async loadFromUrl(url: string, autoPlay: boolean) {\n this._emitter.trigger(\"waiting\");\n await this._source.loadUrl(url);\n // TODO #race\n this._emitter.trigger(\"stopWaiting\");\n if (autoPlay) {\n this.play();\n }\n }\n\n dispose() {\n this._source.dispose();\n this._emitter.dispose();\n }\n}\n","type Teardown = (() => void) | { dispose: () => void };\n\nexport default class Disposable {\n _teardowns: Teardown[] = [];\n disposed: boolean;\n\n constructor() {\n this.disposed = false;\n }\n\n add(...teardowns: Teardown[]): void {\n if (this.disposed) {\n throw new Error(\n \"Attempted to add a new teardown to a disposed disposable.\"\n );\n }\n this._teardowns.push(...teardowns);\n }\n\n dispose() {\n if (this.disposed) {\n throw new Error(\n \"Attempted to dispose disposable which is already disposed.\"\n );\n }\n this._teardowns.forEach((teardown) => {\n if (typeof teardown === \"function\") {\n teardown();\n } else if (typeof teardown.dispose === \"function\") {\n teardown.dispose();\n }\n });\n this._teardowns = [];\n this.disposed = true;\n }\n}\n","import * as React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { Provider } from \"react-redux\";\n\nimport {\n Store,\n AppState,\n Track,\n LoadedURLTrack,\n Middleware,\n ButterchurnOptions,\n PartialState,\n Options,\n MediaStatus,\n} from \"./types\";\nimport getStore from \"./store\";\nimport App from \"./components/App\";\nimport { bindHotkeys } from \"./hotkeys\";\nimport Media from \"./media\";\nimport * as Selectors from \"./selectors\";\nimport * as Actions from \"./actionCreators\";\n\nimport { LOAD_STYLE } from \"./constants\";\nimport * as FileUtils from \"./fileUtils\";\n\nimport {\n SET_AVAILABLE_SKINS,\n NETWORK_CONNECTED,\n NETWORK_DISCONNECTED,\n CLOSE_WINAMP,\n MINIMIZE_WINAMP,\n LOADED,\n SET_Z_INDEX,\n CLOSE_REQUESTED,\n ENABLE_MILKDROP,\n} from \"./actionTypes\";\nimport Emitter from \"./emitter\";\n\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\nimport Disposable from \"./Disposable\";\n\nexport interface PrivateOptions {\n __initialState?: PartialState;\n __customMiddlewares?: Middleware[];\n __butterchurnOptions?: ButterchurnOptions;\n // This is used by https://winampify.io/ to proxy through to Spotify's API.\n __customMediaClass?: typeof Media; // This should have the same interface as Media\n}\n\nexport interface InjectableDependencies {\n requireJSZip: () => Promise<any>; // TODO: Type JSZip\n requireMusicMetadata: () => Promise<any>; // TODO: Type music-metadata-browser\n}\n\nclass Webamp {\n static VERSION = \"1.5.0\";\n _actionEmitter: Emitter;\n _root: ReactDOM.Root | null;\n _disposable: Disposable;\n options: Options & PrivateOptions & InjectableDependencies; // TODO: Make this _private\n media: Media; // TODO: Make this _private\n store: Store; // TODO: Make this _private\n\n /**\n * Returns a true if the current browser supports the features that Webamp depends upon.\n *\n * It is recommended to check this before you attempt to instantiate an instance of Winamp.\n */\n static browserIsSupported(): boolean {\n const supportsAudioApi = !!(\n window.AudioContext ||\n // @ts-ignore\n window.webkitAudioContext\n );\n const supportsCanvas = !!window.document.createElement(\"canvas\").getContext;\n const supportsPromises = typeof Promise !== \"undefined\";\n return supportsAudioApi && supportsCanvas && supportsPromises;\n }\n\n constructor(options: Options & PrivateOptions & InjectableDependencies) {\n this._root = null;\n this._disposable = new Disposable();\n this._actionEmitter = new Emitter();\n this.options = options;\n const {\n initialTracks,\n initialSkin,\n availableSkins,\n enableHotkeys = false,\n zIndex,\n requireJSZip,\n requireMusicMetadata,\n handleTrackDropEvent,\n handleAddUrlEvent,\n handleLoadListEvent,\n handleSaveListEvent,\n enableDoubleSizeMode,\n __butterchurnOptions,\n __customMediaClass,\n } = this.options;\n\n // TODO: Make this much cleaner\n let convertPreset = null;\n if (__butterchurnOptions != null) {\n const { importConvertPreset, presetConverterEndpoint } =\n __butterchurnOptions;\n\n if (importConvertPreset != null && presetConverterEndpoint != null) {\n convertPreset = async (file: File): Promise<Object> => {\n const { convertPreset: convert } = await importConvertPreset();\n return convert(\n await FileUtils.genStringFromFileReference(file),\n presetConverterEndpoint\n );\n };\n }\n }\n\n // TODO: Validate required options\n\n this.media = new (__customMediaClass || Media)();\n this.store = getStore(\n this.media,\n this._actionEmitter,\n this.options.__customMiddlewares,\n this.options.__initialState,\n {\n requireJSZip,\n requireMusicMetadata,\n convertPreset,\n // @ts-ignore Typescript is drunk\n handleTrackDropEvent,\n handleAddUrlEvent,\n handleLoadListEvent,\n handleSaveListEvent,\n }\n ) as Store;\n\n if (enableDoubleSizeMode) {\n this.store.dispatch(Actions.toggleDoubleSizeMode());\n }\n\n if (navigator.onLine) {\n this.store.dispatch({ type: NETWORK_CONNECTED });\n } else {\n this.store.dispatch({ type: NETWORK_DISCONNECTED });\n }\n\n if (zIndex != null) {\n this.store.dispatch({ type: SET_Z_INDEX, zIndex });\n }\n\n if (options.__butterchurnOptions) {\n this.store.dispatch({\n type: ENABLE_MILKDROP,\n open: options.__butterchurnOptions.butterchurnOpen,\n });\n this.store.dispatch(\n Actions.initializePresets(options.__butterchurnOptions)\n );\n }\n\n const handleOnline = () => this.store.dispatch({ type: NETWORK_CONNECTED });\n const handleOffline = () =>\n this.store.dispatch({ type: NETWORK_DISCONNECTED });\n\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n\n this._disposable.add(() => {\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n });\n\n if (initialSkin) {\n this.store.dispatch(Actions.setSkinFromUrl(initialSkin.url));\n } else {\n // We are using the default skin.\n this.store.dispatch({ type: LOADED });\n }\n\n if (initialTracks) {\n this._bufferTracks(initialTracks);\n }\n\n // @ts-ignore\n if (options.avaliableSkins != null) {\n console.warn(\n \"The misspelled option `avaliableSkins` is deprecated. Please use `availableSkins` instead.\"\n );\n // @ts-ignore\n this.store.dispatch({ type: SET_AVAILABLE_SKINS, skins: avaliableSkins });\n } else if (availableSkins != null) {\n this.store.dispatch({ type: SET_AVAILABLE_SKINS, skins: availableSkins });\n }\n\n this.store.dispatch(Actions.setWindowLayout(options.windowLayout));\n\n if (enableHotkeys) {\n this._disposable.add(bindHotkeys(this.store.dispatch));\n }\n }\n\n /**\n * Play the current tack\n */\n play(): void {\n this.store.dispatch(Actions.play());\n }\n\n /**\n * Pause the current tack\n */\n pause(): void {\n this.store.dispatch(Actions.pause());\n }\n\n /**\n * Stop the currently playing audio. Equivalent to pressing the \"stop\" button\n */\n stop(): void {\n this.store.dispatch(Actions.stop());\n }\n\n /**\n * Set volume from 0 - 100\n */\n setVolume(volume: number): void {\n this.store.dispatch(Actions.setVolume(volume));\n }\n\n /**\n * Seek backward n seconds in the curent track\n */\n seekBackward(seconds: number) {\n this.store.dispatch(Actions.seekBackward(seconds));\n }\n\n /**\n * Seek forward n seconds in the curent track\n */\n seekForward(seconds: number) {\n this.store.dispatch(Actions.seekForward(seconds));\n }\n\n /**\n * Seek to a given time within the current track\n */\n seekToTime(seconds: number) {\n this.store.dispatch(Actions.seekToTime(seconds));\n }\n\n /**\n * Play the next track\n */\n nextTrack(): void {\n this.store.dispatch(Actions.next());\n }\n\n /**\n * Play the previous track\n */\n previousTrack(): void {\n this.store.dispatch(Actions.previous());\n }\n\n /**\n * Add an array of `Track`s to the end of the playlist.\n */\n appendTracks(tracks: Track[]): void {\n const nextIndex = Selectors.getTrackCount(this.store.getState());\n this.store.dispatch(\n Actions.loadMediaFiles(tracks, LOAD_STYLE.NONE, nextIndex)\n );\n }\n\n /**\n * Replace the playlist with an array of `Track`s and begin playing the first track.\n */\n setTracksToPlay(tracks: Track[]): void {\n this.store.dispatch(Actions.loadMediaFiles(tracks, LOAD_STYLE.PLAY));\n }\n\n /**\n * Get the current \"playing\" status.\n */\n getMediaStatus(): MediaStatus | null {\n return Selectors.getMediaStatus(this.store.getState());\n }\n\n /**\n * A callback which will be called when Webamp is _about to_ close. Returns an\n * \"unsubscribe\" function. The callback will be passed a `cancel` function\n * which you can use to conditionally prevent Webamp from being closed.\n *\n * @returns An \"unsubscribe\" function. Useful if at some point in the future you want to stop listening to these events.\n */\n onWillClose(cb: (cancel: () => void) => void): () => void {\n return this._actionEmitter.on(CLOSE_REQUESTED, (action) => {\n cb(action.cancel);\n });\n }\n\n /**\n * A callback which will be called when Webamp is closed.\n *\n * @returns An \"unsubscribe\" function. Useful if at some point in the future you want to stop listening to these events.\n */\n onClose(cb: () => void): () => void {\n return this._actionEmitter.on(CLOSE_WINAMP, cb);\n }\n\n /**\n * Equivalent to selection \"Close\" from Webamp's options menu. Once closed,\n * you can open it again with `.reopen()`.\n */\n close(): void {\n this.store.dispatch(Actions.close());\n }\n\n /**\n * After `.close()`ing this instance, you can reopen it by calling this method.\n */\n reopen(): void {\n this.store.dispatch(Actions.open());\n }\n\n /**\n * A callback which will be called when a new track starts loading.\n *\n * This can happen on startup when the first track starts buffering, or when a subsequent track starts playing.\n * The callback will be called with an object `({url: 'https://example.com/track.mp3'})` containing the URL of the track.\n * Note: If the user drags in a track, the URL may be an ObjectURL.\n *\n * @returns An \"unsubscribe\" function. Useful if at some point in the future you want to stop listening to these events.\n */\n onTrackDidChange(cb: (trackInfo: LoadedURLTrack | null) => void): () => void {\n let previousTrackId: number | null = null;\n // TODO #leak\n return this.store.subscribe(() => {\n const state = this.store.getState();\n const trackId = Selectors.getCurrentlyPlayingTrackIdIfLoaded(state);\n if (trackId === previousTrackId) {\n return;\n }\n previousTrackId = trackId;\n cb(trackId == null ? null : Selectors.getCurrentTrackInfo(state));\n });\n }\n\n /**\n * A callback which will be called when Webamp is minimized.\n *\n * @returns An \"unsubscribe\" function. Useful if at some point in the future you want to stop listening to these events.\n */\n onMinimize(cb: () => void): () => void {\n return this._actionEmitter.on(MINIMIZE_WINAMP, cb);\n }\n\n /**\n * Set the skin to use. This can be a URL or a base64 encoded string. The skin\n * will be loaded asynchronously.\n *\n * NOTE: If the URL is not on the same domain as the page, you will need to consider CORS.\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS\n */\n setSkinFromUrl(url: string): void {\n this.store.dispatch(Actions.setSkinFromUrl(url));\n // TODO: Should this return a promise?\n // return this.skinIsLoaded(); ??\n }\n\n /**\n * Returns a promise that resolves when the skin is done loading.\n */\n async skinIsLoaded(): Promise<void> {\n // Wait for the skin to load.\n // TODO #leak\n await storeHas(this.store, (state) => !state.display.loading);\n // We attempt to pre-resolve these promises before we declare the skin\n // loaded. That's because `<EqGraph>` needs these in order to render fully.\n // As long as these are resolved before we attempt to render, we can ensure\n // that we will have all the data we need on first paint.\n //\n // Note: This won't help for non-initial skin loads.\n await Promise.all([\n Selectors.getPreampLineImage(this.store.getState()),\n Selectors.getLineColorsImage(this.store.getState()),\n ]);\n return;\n }\n\n /**\n * Webamp will wait until it has fetched the skin and fully parsed it and then render itself.\n *\n * Webamp is rendered into a new DOM node at the end of the <body> tag with the id `#webamp`.\n *\n * If a domNode is passed, Webamp will place itself in the center of that DOM node.\n *\n * @returns A promise is returned which will resolve after the render is complete.\n */\n async renderWhenReady(node: HTMLElement): Promise<void> {\n this.store.dispatch(Actions.centerWindowsInContainer(node));\n await this.skinIsLoaded();\n if (this._disposable.disposed) {\n return;\n }\n if (this._root != null) {\n throw new Error(\"Cannot render a Webamp instance twice\");\n }\n this._root = ReactDOM.createRoot(node);\n this._disposable.add(() => {\n if (this._root != null) {\n this._root.unmount();\n this._root = null;\n }\n });\n\n this._root.render(\n <Provider store={this.store}>\n <App media={this.media} filePickers={this.options.filePickers || []} />\n </Provider>\n );\n }\n\n /**\n * **Note:** _This method is not fully functional. It is currently impossible to\n * clean up a Winamp instance. This method makes an effort, but it still leaks\n * the whole instance. In the future the behavior of this method will improve,\n * so you might as well call it._\n *\n * When you are done with a Webamp instance, call this method and Webamp will\n * attempt to clean itself up to avoid memory leaks.\n */\n dispose(): void {\n // TODO: Clean up store subscription in onTrackDidChange\n // TODO: Every storeHas call represents a potential race condition\n this.media.dispose();\n this._actionEmitter.dispose();\n this._disposable.dispose();\n }\n\n __loadSerializedState(serializedState: SerializedStateV1): void {\n this.store.dispatch(Actions.loadSerializedState(serializedState));\n }\n\n __getSerializedState() {\n return Selectors.getSerlializedState(this.store.getState());\n }\n\n __onStateChange(cb: () => void): () => void {\n // TODO #leak\n return this.store.subscribe(cb);\n }\n\n _bufferTracks(tracks: Track[]): void {\n const nextIndex = Selectors.getTrackCount(this.store.getState());\n this.store.dispatch(\n Actions.loadMediaFiles(tracks, LOAD_STYLE.BUFFER, nextIndex)\n );\n }\n}\n\n// Return a promise that resolves when the store matches a predicate.\n// TODO #leak\nconst storeHas = (\n store: Store,\n predicate: (state: AppState) => boolean\n): Promise<void> =>\n new Promise((resolve) => {\n if (predicate(store.getState())) {\n resolve();\n return;\n }\n const unsubscribe = store.subscribe(() => {\n if (predicate(store.getState())) {\n resolve();\n unsubscribe();\n }\n });\n });\n\n// @ts-ignore\nwindow.Webamp = Webamp;\n\nexport default Webamp;\n"],"names":["REACT_ELEMENT_TYPE","Symbol","for","REACT_FRAGMENT_TYPE","jsxProd","type","config","maybeKey","key","propName","ref","$$typeof","props","reactJsxRuntime_production","Fragment","jsx","jsxs","jsxRuntimeModule","exports","require$$0","Scheduler","require","React","ReactDOM","formatProdErrorMessage","code","url","arguments","length","encodeURIComponent","i","isValidContainer","node","nodeType","getNearestMountedFiber","fiber","nearestMounted","alternate","return","flags","tag","getSuspenseInstanceFromFiber","suspenseState","memoizedState","dehydrated","assertIsMounted","Error","findCurrentHostFiberImpl","child","sibling","assign","Object","REACT_LEGACY_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_PROVIDER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","REACT_ACTIVITY_TYPE","REACT_MEMO_CACHE_SENTINEL","MAYBE_ITERATOR_SYMBOL","iterator","getIteratorFn","maybeIterable","REACT_CLIENT_REFERENCE","getComponentNameFromType","displayName","name","_context","innerType","render","_payload","_init","x","isArrayImpl","Array","isArray","ReactSharedInternals","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","ReactDOMSharedInternals","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","sharedNotPendingObject","pending","data","method","action","valueStack","index","createCursor","defaultValue","current","pop","cursor","push","value","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","documentElement","namespaceURI","getOwnHostContext","tagName","getChildHostContextProd","popHostContainer","pushHostContext","context","JSCompiler_inline_result","popHostContext","HostTransitionContext","_currentValue","hasOwnProperty","prototype","scheduleCallback$3","unstable_scheduleCallback","cancelCallback$1","unstable_cancelCallback","shouldYield","unstable_shouldYield","requestPaint","unstable_requestPaint","now","unstable_now","getCurrentPriorityLevel","unstable_getCurrentPriorityLevel","ImmediatePriority","unstable_ImmediatePriority","UserBlockingPriority","unstable_UserBlockingPriority","NormalPriority$1","unstable_NormalPriority","LowPriority","unstable_LowPriority","IdlePriority","unstable_IdlePriority","log$1","log","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","setStrictMode","err","clz32","Math","LN2","nextTransitionLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","root","wipLanes","rootHasPendingCommit","pendingLanes","nextLanes","suspendedLanes","pingedLanes","warmLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","currentTime","claimNextTransitionLane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markSpawnedDeferredLane","spawnedLane","entangledLanes","spawnedLaneIndex","entanglements","markRootEntangled","rootEntangledLanes","index$6","getBumpedLaneForHydrationByLane","lanesToEventPriority","resolveUpdatePriority","updatePriority","p","window","event","getEventPriority","randomKey","random","toString","slice","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","parentNode","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","stateNode","getResourcesFromRoot","resources","hoistableStyles","Map","hoistableScripts","markNodeAsHoistable","allNativeEvents","Set","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","add","prefix","suffix","VALID_ATTRIBUTE_NAME_REGEX","RegExp","illegalAttributeNameCache","validatedAttributeNameCache","setValueForAttribute","attributeName","call","test","removeAttribute","prefix$8","toLowerCase","setAttribute","setValueForKnownAttribute","setValueForNamespacedAttribute","namespace","setAttributeNS","describeBuiltInComponentFrame","match","stack","trim","indexOf","reentry","describeNativeComponentFrame","fn","construct","previousPrepareStackTrace","prepareStackTrace","RunInRootFrame","DetermineComponentFrameRoot","Fake","defineProperty","set","Reflect","control","x$9","x$10","catch","sample","namePropDescriptor","getOwnPropertyDescriptor","configurable","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","split","controlLines","includes","frame","replace","describeFiber","getStackByFiberInDevAndProd","workInProgress","info","message","getToStringValue","isCheckable","elem","nodeName","track","_valueTracker","valueField","descriptor","constructor","currentValue","get","this","enumerable","getValue","setValue","stopTracking","trackValueOnNode","updateValueIfChanged","tracker","lastValue","checked","getActiveElement","doc","document","activeElement","body","e","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","ch","charCodeAt","updateInput","element","lastDefaultValue","defaultChecked","setDefaultValue","initInput","isHydrating","ownerDocument","updateOptions","multiple","propValue","setDefaultSelected","options","selected","defaultSelected","disabled","updateTextarea","initTextarea","children","textContent","setTextContent","text","firstChild","lastChild","nodeValue","unitlessNumbers","setValueForStyle","style","styleName","isCustomProperty","setProperty","cssFloat","has","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","aliases","isJavaScriptProtocol","sanitizeURL","currentReplayingEvent","getEventTarget","nativeEvent","target","srcElement","correspondingUseElement","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","a","querySelectorAll","otherNode","form","otherProps","isInsideEventHandler","batchedUpdates$1","b","flushSyncWork$1","getListener","canUseDOM","createElement","passiveBrowserEventsSupported","addEventListener","removeEventListener","startText","fallbackText","getData","start","end","startValue","startLength","endValue","endLength","minEnd","getEventCharCode","keyCode","charCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","lastMovementX","lastMovementY","lastMouseEvent","EventInterface","eventPhase","bubbles","cancelable","timeStamp","Date","isTrusted","SyntheticEvent","UIEventInterface","view","detail","SyntheticUIEvent","MouseEventInterface","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","getEventModifierState","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","SyntheticMouseEvent","SyntheticDragEvent","dataTransfer","SyntheticFocusEvent","SyntheticAnimationEvent","animationName","elapsedTime","pseudoElement","SyntheticClipboardEvent","clipboardData","SyntheticCompositionEvent","normalizeKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","KeyboardEventInterface","String","fromCharCode","location","repeat","locale","which","SyntheticKeyboardEvent","SyntheticPointerEvent","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","SyntheticTouchEvent","touches","targetTouches","changedTouches","SyntheticTransitionEvent","propertyName","SyntheticWheelEvent","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SyntheticToggleEvent","newState","oldState","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","supportedInputTypes","color","date","datetime","email","month","number","password","range","search","tel","time","week","isTextInputElement","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","listeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$282","isSupported$jscomp$inline_417","element$jscomp$inline_418","oninput","stopWatchingForValueChange","detachEvent","handlePropertyChange","handleEventsForInputEventPolyfill","attachEvent","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","objectIs","is","y","shallowEqual","objA","objB","keysA","keys","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","offset","nodeEnd","nextSibling","containsNode","outerNode","innerNode","contains","compareDocumentPosition","getActiveElementDeep","containerInfo","defaultView","HTMLIFrameElement","contentWindow","href","hasSelectionCapabilities","contentEditable","skipSelectionChangeEvent","activeElementInst","lastSelection","mouseDown","constructSelectEvent","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitioncancel","transitionend","prefixedEventNames","getVendorPrefixedEventName","prefixMap","animation","transition","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","CapturedStacks","WeakMap","createCapturedValueAtFiber","source","existing","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","queue","update","next","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","parent","childLanes","_visibility","hiddenUpdates","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","FiberNode","pendingProps","mode","elementType","refCleanup","updateQueue","memoizedProps","subtreeFlags","deletions","createFiberImplClass","shouldConstruct","Component","isReactComponent","createWorkInProgress","firstContext","resetWorkInProgress","createFiberFromTypeAndProps","owner","fiberTag","hostContext","itemProp","precedence","rel","onLoad","onError","async","src","isHostHoistableType","createFiberFromFragment","elements","createFiberFromText","content","createFiberFromPortal","portal","pendingChildren","implementation","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","instance","listenToNonDelegatedEvent","mediaEventTypes","suppressHydrationWarning","checkForUnmatchedText","popover","onScroll","onScrollEnd","onClick","onclick","noop$1","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldSetTextContent","getNextHydratable","isSingletonScope","previousHydratableOnEnteringScopedSingleton","resetHydrationState","upgradeHydrationErrorsToRecoverable","queuedErrors","workInProgressRootRecoverableErrors","apply","error","valueCursor","currentlyRenderingFiber$1","lastContextDependency","pushProvider","providerFiber","nextValue","popProvider","scheduleContextWorkOnParentPath","propagationRoot","propagateContextChanges","contexts","forcePropagateEntireTree","list","nextFiber","dependency","propagateParentContextChanges","isInsidePropagationBailout","currentParent","checkIfContextChanged","currentDependencies","memoizedValue","prepareToReadContext","readContext","readContextForConsumer","readContextDuringReconciliation","consumer","AbortControllerLocal","AbortController","signal","aborted","listener","abort","forEach","scheduleCallback$2","NormalPriority","CacheContext","Consumer","Provider","_currentValue2","_threadCount","createCache","controller","refCount","releaseCache","cache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","pingEngtangledActionScope","status","prevOnStartTransitionFinish","S","then","thenable","entangledListeners","requestTransitionLane","resolve","entangleAsyncAction","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","workInProgressRoot","pooledCache","pushTransition","offscreenWorkInProgress","prevCachePool","pool","getSuspendedCache","cacheFromPool","SuspenseException","SuspenseyCommitException","SuspenseActionException","noopSuspenseyCommitThenable","isThenableResolved","noop$3","trackUsedThenable","thenableState","checkIfUseWrappedInAsyncCatch","reason","shellSuspendCounter","fulfilledValue","fulfilledThenable","rejectedThenable","suspendedThenable","getSuspendedThenable","rejectedReason","hasForceUpdate","initializeUpdateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","callbacks","cloneUpdateQueue","createUpdate","payload","callback","enqueueUpdate","executionContext","entangleTransitions","queueLanes","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","clone","didReadFromEntangledAsyncAction","suspendIfUpdateReadFromEntangledAsyncAction","processUpdateQueue","workInProgress$jscomp$0","instance$jscomp$0","pendingQueue","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","workInProgressRootRenderLanes","workInProgressRootSkippedLanes","callCallback","commitCallbacks","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","baseLanes","reuseHiddenContextOnStack","popHiddenContext","currentlyRenderingFiber","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter$1","thenableState$1","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","H","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","numberOfReRenders","lastEffect","events","stores","memoCache","HooksDispatcherOnRerender","TransitionAwareHostComponent","dispatcher","maybeThenable","useState","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","baseQueue","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","use","usable","useMemoCache","size","map","array","basicStateReducer","state","updateReducer","reducer","updateReducerImpl","lastRenderedReducer","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$32","revertLane","hasEagerState","eagerState","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","updateSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","isHydrating$jscomp$0","snapshotChanged","updateEffectImpl","subscribeToStore","bind","pushSimpleEffect","destroy","resource","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","scheduleUpdateOnFiber","mountStateImpl","initialState","initialStateInitializer","updateOptimisticImpl","passthrough","dispatchActionState","actionQueue","setPendingState","setState","isRenderPhaseUpdate","actionNode","isTransition","T","runActionStateAction","prevState","prevTransition","currentTransition","onStartTransitionFinish","handleActionReturnValue","onActionError","error$38","nextState","onActionSuccess","notifyActionListeners","last","actionStateReducer","mountActionState","initialStateProp","ssrFormState","formState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","updateActionStateImpl","stateHook","currentStateHook","actionStateActionEffect","rerenderActionState","create","createDeps","deps","updateRef","mountEffectImpl","fiberFlags","hookFlags","mountEffect","updateEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","updateImperativeHandle","concat","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","initialValue","requestDeferredLane","updateDeferredValueImpl","prevValue","startTransition","pendingState","finishedState","previousPriority","result","thenableWithOverride","thenableForFinishedState","dispatchSetStateInternal","requestUpdateLane","noop$2","startHostTransition","formFiber","formData","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","useHostTransitionStatus","updateId","updateRefresh","refreshCache","provider","root$41","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","throwIfDuringRender","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useInsertionEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useSyncExternalStore","useId","useFormState","useActionState","useOptimistic","useCacheRefresh","initialArg","init","identifierPrefix","booleanOrThenable","thenableIndexCounter","unwrapThenable","coerceRef","throwOnInvalidObjectType","returnFiber","newChild","join","resolveLazy","lazyType","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deleteRemainingChildren","currentFirstChild","mapRemainingChildren","existingChildren","useFiber","placeChild","newFiber","lastPlacedIndex","newIndex","placeSingleChild","updateTextNode","updateElement","updateFragment","updatePortal","fragment","createChild","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildFibersImpl","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","delete","reconcileChildrenArray","step","done","reconcileChildrenIterator","firstChildFiber","reconcileChildFibers","mountChildFibers","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","handler","suspenseStackCursor","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","row","isSuspenseInstanceFallback","revealOrder","applyDerivedStateFromProps","ctor","getDerivedStateFromProps","nextProps","classComponentUpdater","enqueueSetState","_reactInternals","enqueueReplaceState","enqueueForceUpdate","checkShouldComponentUpdate","oldProps","newProps","nextContext","shouldComponentUpdate","isPureReactComponent","callComponentWillReceiveProps","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","resolveClassComponentProps","baseProps","defaultProps","propName$73","reportGlobalError","reportError","ErrorEvent","dispatchEvent","process","emit","console","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","componentStack","e$74","setTimeout","logCaughtError","boundary","onCaughtError","errorBoundary","e$75","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","componentDidCatch","legacyErrorBoundariesThatAlreadyFailed","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","bailoutOnAlreadyFinishedWork","updateMemoComponent","compare","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","deferHiddenOffscreenComponent","cachePool","nextBaseLanes","markRef","replayFunctionComponent","updateClassComponent","contextType","updater","refs","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","unresolvedOldProps","oldContext","contextType$jscomp$0","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","mountHostRootWithoutHydrating","SUSPENDED_MARKER","treeContext","retryLane","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","didSuspend","JSCompiler_temp$jscomp$0","nextInstance","c","id","overflow","fallback","mountWorkInProgressOffscreenFiber","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","dataset","digest","dgst","renderDidSuspendDelayIfPossible","primaryChildren","offscreenProps","_pendingMarkers","_retryCache","_transitions","scheduleSuspenseWorkOnFiber","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","rendering","renderingStartTime","updateSuspenseListComponent","beginWork","didSuspendBefore","attemptEarlyBailoutIfNoScheduledUpdate","lazyComponent","isDehydrated","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","anyProps","hasAttribute","getAttribute","crossOrigin","title","canHydrateInstance","canHydrateTextInstance","pooledCacheLanes","markUpdate","preloadResourceAndSuspendIfNeeded","loading","preloadResource","scheduleRetryEffect","retryQueue","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$113","bubbleProperties","completedWork","didBailout","newChildLanes","child$114","completeWork","pendingContext","createElementNS","innerHTML","removeChild","appendChild","autoFocus","createTextNode","cache$127","listenToAllSupportedEvents","workInProgressRootExitStatus","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","commitHookEffectListMount","finishedWork","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","nearestMountedAncestor","destroy_","commitClassCallbacks","safelyCallComponentWillUnmount","componentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$143","commitHostMount","focus","srcSet","srcset","commitHostUpdate","domElement","lastProps","propKey","lastProp","setProp","propKey$205","propKey$221","propKey$226","propKey$231","setPropOnCustomElement","propKey$236","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNodeIntoContainer","before","insertBefore","_reactRootContainer","insertOrAppendPlacementNode","commitHostSingletonAcquisition","singleton","attributes","removeAttributeNode","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","WeakSet","nextEffect","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","__reactInternalSnapshotBeforeUpdate","error$142","commitSuspenseHydrationCallbacks","readyState","_reactRetry","registerSuspenseInstanceRetry","retryDehydratedSuspenseBoundary","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","onCommitFiberUnmount","count","prevHostParent","prevHostParentIsContainer","releaseSingletonInstance","clearSuspenseBoundary","retryIfBlockedOn","attachSuspenseRetryListeners","wakeables","retryCache","getRetryCache","wakeable","retry","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","parentFiber","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","getElementsByTagName","head","querySelector","maybeNodes","getHydratableHoistableCache","splice","property","httpEquiv","charSet","mountHoistable","acquireResource","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","wasHidden","prevOffscreenSubtreeIsHidden","recursivelyTraverseDisappearLayoutEffects","display","hostParentFiber","parent$144","parent$146","reset","finishedRoot$jscomp$0","includeWorkInProgressEffects","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","passiveEffectDuration","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","suspendedState","media","matchMedia","matches","getStyleKey","getStylesheetSelectorFromKey","_p","onUnsuspend","stylesheetPropsFromRawProps","preloadPropsMap","adoptPreloadPropsForStylesheet","linkInstance","Promise","reject","onload","onerror","stylesheets","preload","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","DefaultAsyncDispatcher","getCacheForType","resourceType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootConcurrentErrors","workInProgressRootDidIncludeRecursiveRenderUpdate","Infinity","workInProgressTransitions","pendingEffectsStatus","pendingEffectsRoot","pendingFinishedWork","pendingEffectsLanes","pendingEffectsRemainingLanes","pendingPassiveTransitions","pendingRecoverableErrors","suspenseHandler","cancelPendingCommit","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","expiredLanes","exitStatus","prevExecutionContext","prevDispatcher","pushDispatcher","prevAsyncDispatcher","pushAsyncDispatcher","thrownValue","throwAndUnwindWorkLoop","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","resetWorkInProgressStack","workLoopConcurrentByScheduler","thrownValue$169","handleThrow","A","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","errorRecoveryDisabledLanes","wasRootDehydrated","timeoutHandle","scheduleTimeout","commitRootWhenReady","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","updatedLanes","suspendedRetryLanes","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","unsuspend","noop","insertSuspendedStylesheets","commit","stylesheetTimer","clearTimeout","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","expirationTimes","index$4","flushSyncWorkAcrossRoots_impl","cancelTimeout","allEntangledLanes","index$2","shouldYieldForPrerendering","unitOfWork","workLoopSync","thrownValue$167","performUnitOfWork","suspendedReason","rootRenderLanes","attachPingListener","markerInstances","cause","wrapperError","throwException","unwindUnitOfWork","skipSiblings","flushPendingEffects","finishedLanes","remainingLanes","previouslyPendingLanes","index$5","hiddenUpdatesForLane","markRootFinished","callbackNode","callbackPriority","flushPassiveEffects","eventsEnabled","_enabled","selection","rangeCount","e$20","indexWithinAnchor","indexWithinFocus","selectionInformation","focusedElem","selectionRange","resolvedPrevProps","clearContainerSparingly","commitBeforeMutationEffects","flushMutationEffects","flushLayoutEffects","flushSpawnedWork","rootMutationHasEffect","priorSelectionInformation","curFocusedElem","priorFocusedElem","priorSelectionRange","min","win","start$jscomp$0","end$jscomp$0","extend","startMarker","endMarker","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","rootHasLayoutEffect","releaseRootPooledCache","onCommitFiberRoot","onRecoverableError","recoverableError","wasDelayedCommit","renderPriority","onPostCommitFiberRoot","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","scheduleMicrotask","processRootScheduleInImmediateTask","processRootScheduleInMicrotask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$174","performSyncWorkOnRoot","currentPopstateTransitionEvent","shouldAttemptEagerTransition","prev","scheduleTaskForRootDuringMicrotask","index$3","expirationTime","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","temp","FormData","i$jscomp$inline_1528","eventName$jscomp$inline_1529","toUpperCase","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","capture","passive","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","container","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","parentWindow","getParent","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","getNativeBeforeInputChars","char","getFallbackBeforeInputChars","maybeTargetInst","formAction","extractEvents$1","targetFiber","captureName","_instance2","unshift","common","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","formEncType","formMethod","formTarget","encType","__html","muted","isNaN","endsWith","hasSrc","hasSrcSet","propValue$188","parentNamespace","dangerouslySetInnerHTML","localPromise","queueMicrotask","handleErrorInNextTick","parentInstance","suspenseInstance","possiblePreambleContribution","depth","nextNode","nextNode$jscomp$0","targetInstance","previousSibling","rootContainerInstance","preconnectsSet","getRootNode","previousDispatcher","d","f","previousWasRendering","wasRendering","r","formInst","D","preconnectAs","C","L","as","globalDocument","preloadSelector","imageSrcSet","imageSizes","getScriptKey","getScriptSelectorFromKey","m","X","scripts","adoptPreloadPropsForScript","link","insertStylesheet","M","limitedEscapedHref","currentProps","styles$244","resource$245","integrity","hrefLang","referrerPolicy","preloadProps","preloadStylesheet","rawProps","styleProps","instance$250","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","incompleteTransitions","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","transitionCallbacks","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queueIfContinuousEvent","queuedFocus","accumulateOrCreateContinuousQueuedReplayableEvent","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedExplicitHydrationTargets","existingQueuedEvent","targetContainers","attemptExplicitHydrationTarget","queuedTarget","priority","runWithPriority","attemptReplayContinuousQueuedEvent","queuedEvent","nextBlockedOn","nativeEventClone","shift","attemptReplayContinuousQueuedEventInMap","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","$$reactFormReplay","formProps","ReactDOMRoot","internalRoot","_internalRoot","ReactDOMHydrationRoot","unmount","unstable_scheduleHydration","isomorphicReactPackageVersion$jscomp$inline_1785","version","findDOMNode","componentOrElement","parentA","parentB","didFindChild","child$0","findCurrentFiberUsingSlowPath","internals$jscomp$inline_2256","bundleType","rendererPackageName","currentDispatcherRef","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","hook$jscomp$inline_2257","isDisabled","supportsFiber","inject","createRoot","unstable_strictMode","unstable_transitionCallbacks","hydrateRoot","checkDCE","clientModule","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","objectAssign","test1","getOwnPropertyNames","test2","order2","n","test3","letter","shouldUseNative","from","symbols","to","val","TypeError","toObject","s","l","q","t","u","v","w","z","B","isMounted","E","F","G","forceUpdate","I","J","K","__self","__source","g","k","h","_owner","O","P","Q","R","keyPrefix","func","U","V","escape","W","aa","N","Y","Z","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","react_production_min","Children","toArray","only","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","createRef","isValidElement","lazy","_ctor","_status","_result","memo","reactModule","shim","_useState","useSyncExternalStoreShim_production","shimModule","withSelector_production","useSyncExternalStoreWithSelector","selector","isEqual","instRef","hasValue","memoizedSelector","hasMemo","memoizedSnapshot","currentSelection","memoizedSelection","nextSelection","maybeGetServerSnapshot","withSelectorModule","ReactNoopUpdateQueue","emptyObject","ComponentDummy","partialState","pureComponentPrototype","ReactElement","self","object","userProvidedKeyEscapeRegex","getElementKey","escaperLookup","mapIntoArray","escapedPrefix","nameSoFar","oldElement","newKey","invokeCallback","nextNamePrefix","resolveThenable","mapChildren","lazyInitializer","moduleObject","default","forEachFunc","forEachContext","__COMPILER_RUNTIME","__proto__","childArray","childrenLength","forwardRef","scope","unstable_useCacheRefresh","permalink","Context","Internals","getCrossOriginStringAs","input","reactDom_production","createPortal","createPortal$1","flushSync","previousTransition","previousUpdatePriority","preconnect","prefetchDNS","preinit","fetchPriority","nonce","preinitModule","preloadModule","requestFormReset","unstable_batchedUpdates","useFormStatus","reactDomModule","batch","getBatch","ContextKey","gT","globalThis","getContext","_gT$ContextKey","contextMap","realContext","ReactReduxContext","createReduxContextHook","useReduxContext","notInitialized","refEquality","createSelectorHook","useDefaultReduxContext","equalityFnOrOptions","equalityFn","stabilityCheck","noopCheck","store","subscription","getServerState","globalStabilityCheck","globalNoopCheck","wrappedSelector","selectedState","addNestedSub","getState","useSelector","reactIs_production_min","AsyncMode","ConcurrentMode","ContextProvider","Element","ForwardRef","Memo","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isProfiler","isSuspense","isValidElementType","typeOf","reactIsModule","reactIs","TYPE_STATICS","propTypes","ContextConsumer","Lazy","SuspenseList","isPortal","isSuspenseList","getModuleId","nullListeners","notify","createSubscription","parentSub","unsubscribe","subscriptionsAmount","selfSubscribed","handleChangeWrapper","onStateChange","trySubscribe","first","clear","isSubscribed","createListenerCollection","tryUnsubscribe","undefined","cleanupListener","removed","notifyNestedSubs","getListeners","useIsomorphicLayoutEffect","serverState","contextValue","previousState","createStoreHook","useStore","createDispatchHook","useDefaultStore","useDispatch","newBatch","createThunkMiddleware","extraArgument","_ref","thunk","withExtraArgument","compose","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","ADD_TRACK_FROM_URL","CLOSE_WINAMP","OPEN_WINAMP","MINIMIZE_WINAMP","IS_PLAYING","IS_STOPPED","PAUSE","PLAY","SEEK_TO_PERCENT_COMPLETE","SET_BALANCE","SET_BAND_VALUE","SET_FOCUS","SET_BAND_FOCUS","SET_FOCUSED_WINDOW","SET_MEDIA","SET_SCRUB_POSITION","SET_SKIN_DATA","SET_VOLUME","START_WORKING","STEP_MARQUEE","STOP","STOP_WORKING","TOGGLE_DOUBLESIZE_MODE","SET_EQ_AUTO","SET_EQ_ON","SET_EQ_OFF","TOGGLE_LLAMA_MODE","TOGGLE_REPEAT","TOGGLE_SHUFFLE","TOGGLE_TIME_MODE","TOGGLE_VISUALIZER_STYLE","UNSET_FOCUS","UPDATE_TIME_ELAPSED","SET_PLAYLIST_SCROLL_POSITION","CLICKED_TRACK","CTRL_CLICKED_TRACK","SHIFT_CLICKED_TRACK","SELECT_ALL","SELECT_ZERO","INVERT_SELECTION","REMOVE_ALL_TRACKS","REMOVE_TRACKS","SET_AVAILABLE_SKINS","REVERSE_LIST","RANDOMIZE_LIST","SET_TRACK_ORDER","PLAY_TRACK","BUFFER_TRACK","DRAG_SELECTED","SET_MEDIA_TAGS","SET_MEDIA_DURATION","TOGGLE_WINDOW","CLOSE_WINDOW","MEDIA_TAG_REQUEST_INITIALIZED","MEDIA_TAG_REQUEST_FAILED","NETWORK_CONNECTED","NETWORK_DISCONNECTED","UPDATE_WINDOW_POSITIONS","WINDOW_SIZE_CHANGED","TOGGLE_WINDOW_SHADE_MODE","LOADED","SET_Z_INDEX","LOADING","CLOSE_REQUESTED","LOAD_SERIALIZED_STATE","RESET_WINDOW_SIZES","BROWSER_WINDOW_SIZE_CHANGED","LOAD_DEFAULT_SKIN","ENABLE_MILKDROP","SET_MILKDROP_DESKTOP","GOT_BUTTERCHURN_PRESETS","GOT_BUTTERCHURN","RESOLVE_PRESET_AT_INDEX","SELECT_PRESET_AT_INDEX","TOGGLE_PRESET_OVERLAY","PRESET_REQUESTED","TOGGLE_RANDOMIZE_PRESETS","TOGGLE_PRESET_CYCLING","SCHEDULE_MILKDROP_MESSAGE","SET_MILKDROP_FULLSCREEN","BANDS","WINDOWS","LOAD_STYLE","MEDIA_TAG_REQUEST_STATUS","UTF8_ELLIPSIS","LETTERS","DEFAULT_SKIN","baseSkin","VISUALIZERS","VISUALIZER_ORDER","TIME_MODE","MEDIA_STATUS","imgFromUrl","img","Image","getTimeObj","minutesFirstDigit","minutesSecondDigit","secondsFirstDigit","secondsSecondDigit","minutes","floor","seconds","digits","getTimeStr","truncate","SECTION_REGEX","PROPERTY_REGEX","parseIni","section","reduce","line","clamp","max","base64FromDataArray","dataArray","btoa","byte","downloadURI","uri","download","click","toPercent","percentToRange","percent","round","percentToIndex","rebound","oldMin","oldMax","newMin","newMax","oldValue","normalizeEqBand","denormalizeEqBand","merge","segment","newValues","ratio","shuffle","sorted","moveSelected","arr","isSelected","newArr","replaceAtIndex","newValue","counter","objectMap","obj","cb","modified","calculateBoundingBox","windows","windowSizes","bottom","right","getWindowSize","scrollWidth","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","getPos","touch","getX","getY","defaultPlaylistState","trackOrder","currentTrack","lastSelectedIndex","selectedTracks","defaultWindowsState","focused","positionsAreRelative","genWindows","WINDOWS_MAIN","open","shade","canResize","canShade","canDouble","hotkey","position","WINDOWS_EQUALIZER","WINDOWS_PLAYLIST","WINDOWS_MILKDROP","browserWindowSize","windowOrder","getSerializedState","Utils.objectMap","hidden","defaultState","timeMode","timeElapsed","volume","balance","defaultMemoize_1","defaultMemoize","defaultEqualityCheck","equalityCheck","lastArgs","lastResult","areArgumentsShallowlyEqual","createSelector_1","memoize","_len","memoizeOptions","_key","_len2","funcs","_key2","recomputations","resultFunc","every","dep","dependencyTypes","getDependencies","memoizedResultFunc","params","resetRecomputations","createSelectorCreator","defaultSkinGenExColors","itemBackground","itemForeground","windowBackground","buttonText","windowText","divider","playlistSelection","listHeaderBackground","listHeaderText","listHeaderFrameTopAndLeft","listHeaderFrameBottomAndRight","listHeaderFramePressed","listHeaderDeadArea","scrollbarOne","scrollbarTwo","pressedScrollbarOne","pressedScrollbarTwo","scrollbarDeadArea","listTextHighlighted","listTextHighlightedBackground","listTextSelected","listTextSelectedBackground","defaultDisplayState","doubled","marqueeStep","disableMarquee","llama","closed","working","skinImages","images","skinColors","colors","skinCursors","skinPlaylistStyle","skinRegion","visualizerStyle","dummyVizData","playlistScrollPosition","skinGenLetterWidths","skinGenExColors","additionalVisualizers","zIndex","newCursors","getVisualizerStyle","createSelector","visualizationStyle","defaultUserInput","bandFocused","scrubPosition","userMessage","on","auto","sliders","preamp","defaultSettingsState","availableSkins","invariant_1","condition","format","args","argIndex","framesToPop","genStringFromFileReference","fileReference","reader","FileReader","readAsText","promptForFileReferences","accept","directory","fileInput","webkitdirectory","mozdirectory","files","curUrlFromByteArray","Utils.base64FromDataArray","trackName","Utils.weakMapMemoize","artist","defaultName","filename","urlIsBlobUrl","lastSegment","FileUtils.filenameFromUrl","TransitionType","defaultMilkdropState","overlay","presetHistory","presets","currentPresetIndex","butterchurn","transitionType","DEFAULT","randomize","cycling","combineReducers","userInput","filter","windowId","windowState","absolute","newPosition","positions","serializedState","serializedW","rest","newSkinCursors","settings","skins","equalizer","newSliders","band","playlist","newSelectedTracks","clickedIndex","actionIds","ids","Number","trackId","reverse","atIndex","newMode","elapsed","network","connected","tracks","duration","mediaTagsRequestStatus","newTrack","sampleRate","bitrate","numberOfChannels","album","albumArtUrl","kbps","khz","channels","milkdrop","enabled","addToHistory","preset","Utils.replaceAtIndex","json","noshadeStyle","borderWidth","backgroundColor","Body","_jsx","Font","Hr","Div","Table","Playlist","_jsxs","bgcolor","topmargin","leftmargin","align","className","border","cellSpacing","cellPadding","face","numberOfTracks","averageTrackLength","playlistLengthMinutes","playlistLengthSeconds","createPlaylistURL","getAsDataURI","createPlaylistHTML","getEqText","level","db","num","toFixed","hz","ensureSign","getSliders","getEqfData","Utils.denormalizeEqBand","getTracks","getTrackUrl","getTrackOrder","getTrackCount","getOrderedTracks","getUserTracks","metaData","getOrderedTrackObjects","getSelectedTrackIds","getSelectedTrackObjects","selectedIds","runningTimeFromTracks","getTotalRunningTime","getSelectedRunningTime","getRunningTimeMessage","totalRunningTime","selectedRunningTime","Utils.getTimeStr","getCurrentTrackIndex","getCurrentTrackNumber","currentTrackIndex","getCurrentTrackId","getNextTrackId","nextId","getRandomTrackId","trackCount","currentIndex","nextIndex","Utils.clamp","getGenWindows","getWindowOpen","getWindowHidden","milkdropWindowEnabled","getWindowShade","getWindowPositions","getNumberOfVisibleTracks","getWindowSize_","playlistSize","getOverflowTrackCount","numberOfVisibleTracks","_getPlaylistScrollPosition","getPlaylistScrollPosition","overflowTrackCount","getScrollOffset","Utils.percentToIndex","getVisibleTrackIds","getAllTracksAreVisible","getTrackIsVisibleFunction","visibleTrackIds","getDuration","getTrackDisplayName","TrackUtils.trackName","fromTracks.getTrackDisplayName","getCurrentTrackDisplayName","getName","getMediaStatus","getMediaIsPlaying","getCurrentTrack","getCurrentlyPlayingTrackIdIfLoaded","mediaIsPlaying","getCurrentTrackInfo","getMinimalMediaText","trackNumber","getMediaText","minimalMediaText","getNumberOfTracks","getPlaylistDuration","values","total","getPlaylistURL","playlistDuration","getDisplayName","getWPixelSize","doubledMultiplier","pix","getFocusedWindow","getDoubled","getLlamaMode","getZIndex","getWindowSizes","getWindowPixelSize","sizes","getNormalizedWindowOrder","getWindowsInfo","getWindowGraph","bottoms","rights","graph","edges","tops","lefts","below","isToTheLeft","isToTheRight","isAbove","isBelow","defaultPlaylistStyle","normal","normalbg","selectedbg","font","getSkinColors","getSkinPlaylistStyle","fromDisplay.getVisualizerStyle","getVolume","getBalance","getShuffle","getRepeat","getChannels","getTimeElapsed","getEqualizerEnabled","getBrowserWindowSize","getOpenWindows","Utils.objectFilter","predicate","newObj","getStackedLayoutPositions","openWindows","getUserInputFocus","getUserInputScrubPosition","getMarqueeText","defaultText","direction","abs","MarqueeUtils.getBalanceText","seekToPercent","MarqueeUtils.getPositionText","MarqueeUtils.getEqText","mediaText","getKbps","getKhz","getMilkdropMessage","getMilkdropDesktopEnabled","getMilkdropFullscreenEnabled","getButterchurn","getPresetTransitionType","getCurrentPresetIndex","getCurrentPreset","getPresetNames","getPresetOverlayOpen","getPresetsAreCycling","getRandomizePresets","getClosed","getSkinRegion","getPreampLineImage","EQ_PREAMP_LINE","Utils.imgFromUrl","getLineColorsImage","EQ_GRAPH_LINE_COLORS","getMarqueeStep","getNetworkConnected","getTimeMode","getLoading","getWorking","getAvaliableSkins","SNAP_DISTANCE","box","near","snap","boxA","boxB","overlapY","overlapX","snapDiff","newPos","snapDiffManyToMany","bs","diff","snapWithinDiff","boundingBox","snapWithin","applyDiff","withWindowGraphIntegrity","Selectors.getWindowGraph","originalSizes","Selectors.getWindowSizes","newSizes","sizeDiff","original","positionDiff","newGraph","above","neighbors","entries","walkRight","nodeSizeDiff","walkDown","getPositionDiff","newPositions","Selectors.getWindowPositions","updateWindowPositions","toggleDoubleSizeMode","toggleEqualizerShadeMode","toggleMainWindowShadeMode","togglePlaylistShadeMode","closeWindow","setFocusedWindow","setWindowSize","toggleWindow","centerWindows","windowsInfo","Selectors.getWindowsInfo","getOpen","Selectors.getWindowOpen","offsetLeft","scrollX","offsetTop","scrollY","bounding","Utils.calculateBoundingBox","boxHeight","boxWidth","move","ceil","pos","browserWindowSizeChanged","ensureWindowsAreOnScreen","stackWindows","Selectors.getStackedLayoutPositions","Utils.getWindowSize","boundingHeight","moveY","moveX","innerWidth","innerHeight","playTrackNow","play","openMediaFileDialog","pause","stop","nextN","nextTrackId","Selectors.getNextTrackId","Selectors.getMediaStatus","previous","seekToTime","Selectors.getDuration","seekForward","Selectors.getTimeElapsed","seekBackward","setVolume","adjustVolume","volumeDiff","scrollVolume","setBalance","toggleRepeat","toggleShuffle","toggleTimeMode","BAND_SNAP_DISTANCE","BAND_MID_POINT_VALUE","_snapBandValue","setEqBand","_setEqTo","setEqToMax","setEqToMid","setEqToMin","setPreamp","toggleEq","toggleEqAuto","constants","PRESET_VALUES","HEADER","CONSTANTS","parser_1","arrayBuffer","Int8Array","nameStart","nameEnd","valueName","creator_1","buffer","ending","Uint8Array","winampEqf","parser","creator","require$$1","FONT_LOOKUP","j","o","_","$","imageConstFromChar","characterSprites","sprites","BALANCE","CBUTTONS","MAIN","MONOSTER","NUMBERS","NUMS_EX","PLAYPAUS","PLEDIT","EQ_EX","EQMAIN","POSBAR","SHUFREP","TEXT","TITLEBAR","VOLUME","GEN","getFileExtension","fileName","exec","getFilenameRegex","base","ext","getFileFromZip","zip","file","lastFile","contents","warn","getImgFromBlob","blob","createImageBitmap","URL","createObjectURL","fallbackGetImgFromBlob","ee","getSpriteUrisFromImg","canvas","sprite","drawImage","image","toDataURL","getImgFromFilename","mimeType","Blob","RIFF_MAGIC","getCursorFromFilename","item","aniData","FileUtils.curUrlFromByteArray","getPlaylistStyle","playlistStyle","ini","Utils.parseIni","colorKey","getGenExColors","getColorAt","getImageData","shallowMerge","objs","CURSORS","genVizColors","viscolor","SkinParserUtils","regex","Boolean","rgb","parseViscolors","genImages","imageObjs","all","SKIN_SPRITES","genCursors","cursorObjs","cursorName","genRegion","region","regionStr","iniData","numpoints","pointlist","pointCounts","points","pairedValues","pointPairs","pointIndex","validPolygons","numStr","polygon","regionParser","genGenTextSprites","getLetters","nextBackground","letterWidths","TinyQueue","defaultCompare","_down","tinyqueueModule","_up","peek","halfLength","best","cropPlaylist","Selectors.getSelectedTrackObjects","selectedTrackIds","Selectors.getSelectedTrackIds","removeSelectedTracks","removeAllTracks","reverseList","randomizeList","sortListByTitle","Selectors.getTracks","Selectors.getTrackOrder","iteratee","sort","aKey","bKey","setPlaylistScrollPosition","scrollNTracks","Selectors.getOverflowTrackCount","currentOffset","Selectors.getScrollOffset","scrollPlaylistByDelta","totalPixelHeight","percentDelta","scrollUpFourTracks","scrollDownFourTracks","dragSelected","firstSelected","findIndex","lastSelected","findLastIndex","normalizedOffset","invertSelection","selectZero","selectAll","DURATION_VISIBLE_PRIORITY","META_DATA_VISIBLE_PRIORITY","DURATION_PRIORITY","META_DATA_PRIORITY","loadQueue","threads","_queue","_availableThreads","task","_run","t1","promise","invariant","addTracksFromReferences","fileReferences","loadStyle","loadMediaFiles","SKIN_FILENAME_MATCHER","EQF_FILENAME_MATCHER","loadFilesFromReferences","setSkinFromBlob","readAsArrayBuffer","genArrayBufferFromFileReference","setEqFromObject","setEqFromFileReference","requireJSZip","alert","JSZip","skinData","zipFileBuffer","loadAsync","cursors","genTextSprites","genExColors","genLetterWidths","genTextImages","skinParser","setSkinFromUrl","response","fetch","ok","statusText","_openFileDialog","expectedType","firstFileName","openEqfFileDialog","openSkinFileDialog","fetchMediaDuration","audio","durationChange","genMediaDuration","trackIsVisible","loadMedia","handleTrackDropEvent","canonicalUrl","fetchMediaTags","queueFetchingMediaTags","loadMediaFile","requireMusicMetadata","metadata","musicMetadata","skipPostHeaders","fetchFromUrl","parseBlob","genMediaTags","picture","byteArray","Utils.normalizeEqBand","downloadPreset","base64","Utils.base64FromArrayBuffer","Utils.downloadURI","downloadHtmlPlaylist","el","DIR_SUPPORT","addFilesAtIndex","addDirAtIndex","addFilesFromUrl","handleAddUrlEvent","addFilesFromList","handleLoadListEvent","saveFilesToList","handleSaveListEvent","droppedFiles","normalizePresetTypes","butterchurnPresetObject","getPreset","getButterchrunPresetObject","butterchurnPresetUrl","loadPresets","presetsLength","Selectors.getRandomizePresets","selectRandomPreset","requestPresetAtIndex","IMMEDIATE","appendPresetFileList","fileList","convertPreset","JSON_EXT","MILK_EXT","str","FileUtils.genStringFromFileReference","JSON","parse","selectNextPreset","Selectors.getCurrentPresetIndex","selectPreviousPreset","handlePresetDrop","toggleRandomizePresets","togglePresetCycling","scheduleMilkdropMessage","close","cancel","toggleVisualizerStyle","minimize","setFocus","unsetFocus","focusBand","loadDefaultSkin","toggleMilkdropDesktop","Selectors.getMilkdropDesktopEnabled","setMilkdropFullscreen","toggleMilkdropFullscreen","Selectors.getMilkdropFullscreenEnabled","togglePresetOverlay","Selectors.getPresetOverlayOpen","stepMarquee","mediaMiddleware","nextTrack","Selectors.getCurrentTrackId","Selectors.getVolume","Selectors.getBalance","seekToPercentComplete","Selectors.getTrackUrl","loadFromUrl","disableEq","enableEq","Selectors.getEqualizerEnabled","slider","actionsBlacklist","createWebampStore","actionEmitter","customMiddlewares","stateOverrides","extras","middlewares","trigger","enhancer","applyMiddleware","createStore","fullscreenEnabled","fullscreenElement","requestFullscreen","exitFullscreen","fullscreenchange","fullscreenerror","fullscreen","webkit","moz","ms","vendor","fscreen","requestFullscreenFunction","fullscreenPseudoClass","onfullscreenchange","onfullscreenerror","FullScreen","onChange","detectFullScreen","isEnabled","usePromiseValueOrNull","disposed","resolvedValue","useScreenSize","screen","cursorPositionRef","useIsHovered","cursorRef","hover","setHover","setNode","domRect","getBoundingClientRect","enter","leave","useTypedSelector","useActionCreator","actionCreator","useTypedDispatch","hasOwn","classNames","classes","arg","appendClass","parseValue","newClass","module","currentSize","widthOnly","passThroughProps","setMouseDown","mouseStart","setMouseStart","handleMove","Utils.getX","Utils.getY","newSize","handleMouseUp","handleMouseDown","onMouseDown","onTouchStart","FocusTarget","onKeyDown","focusedWindowId","Selectors.getFocusedWindow","Actions.setFocusedWindow","focusHandler","setRef","observer","MutationObserver","mutations","some","mutation","removedNodes","observe","subtree","childList","disconnect","onPointerDown","onFocus","tabIndex","ACTIVE_CLASSNAME","WinampButton","requireClicksOriginateLocally","originalOnPointerDown","htmlProps","active","setActive","releasePointerCapture","onRelease","classnames","onPointerEnter","CustomEvent","Text","letters","React.Fragment","GenWindow","Actions.setWindowSize","Actions.closeWindow","Selectors.getWindowPixelSize","focusedWindow","windowSize","Selectors.getWindowSize","ResizeTarget","TRANSITION_TYPE_DURATIONS","USER_PRESET","Visualizer","analyser","Selectors.getVisualizerStyle","playing","Selectors.getMediaIsPlaying","Selectors.getButterchurn","trackTitle","Selectors.getCurrentTrackDisplayName","currentPreset","Selectors.getCurrentPreset","Selectors.getPresetTransitionType","Selectors.getMilkdropMessage","isEnabledVisualizer","canvasRef","visualizer","setVisualizer","_visualizer","createVisualizer","meshWidth","meshHeight","pixelRatio","devicePixelRatio","connectAudio","setRendererSize","hasLoadedPreset","loadPreset","launchSongTitleAnim","lastShownMessage","shouldAnimate","animationFrameRequest","loop","requestAnimationFrame","cancelAnimationFrame","Background","innerRef","LOADING_STYLE","background","OUTER_WRAPPER_STYLE","padding","INNER_WRAPPER_STYLE","whiteSpace","fontSize","presetIndexFromListIndex","listIndex","PresetOverlay","presetKeys","Selectors.getPresetNames","Actions.requestPresetAtIndex","Actions.togglePresetOverlay","Actions.appendPresetFileList","unmountedRef","useUnmountedRef","selectedListIndex","setSelectedListIndex","maxListIndex","renderList","maxVisibleRows","rowsToShow","startIndex","maxRangeSize","indexToCenter","rangeSize","halfRangeSize","getRangeCenteredOnIndex","presetElms","presetIndex","isCurrent","lineHeight","loadLocalDir","handleFocusedKeyboardInput","handleNode","maxHeight","listStyleType","margin","supress","dropEffect","effectAllowed","DropTarget","handleDrop","Actions.droppedFiles","onDrop","onDragStart","onDragEnter","onDragOver","div","Parent","label","LinkNode","Node","ContextMenu","Selectors.getZIndex","ContextMenuWraper","renderContents","openPosition","setOpenPosition","closeMenu","handleGlobalClick","handleRightClick","onContextMenu","MilkdropContextMenu","desktop","toggleDesktop","Actions.toggleMilkdropDesktop","toggleFullscreen","Actions.toggleMilkdropFullscreen","_Fragment","Desktop","React.memo","desktopNode","React.useState","React.useEffect","classList","Milkdrop","presetsAreCycling","Selectors.getPresetsAreCycling","Actions.selectNextPreset","Actions.handlePresetDrop","setFullscreen","Actions.setMilkdropFullscreen","handleKeyDown","Actions.selectPreviousPreset","toggleRandomize","Actions.toggleRandomizePresets","Actions.scheduleMilkdropMessage","toggleCycling","Actions.togglePresetCycling","useKeyHandler","intervalId","setInterval","clearInterval","screenSize","setSize","useWindowSize","genWindowSize","Fullscreen","onDoubleClick","PlaybackContextMenu","Actions.previous","Actions.play","Actions.pause","Actions.stop","Actions.next","Actions.seekForward","Actions.seekBackward","Actions.nextN","SkinContextMenu","Actions.loadDefaultSkin","Actions.openSkinFileDialog","setSkin","Actions.setSkinFromUrl","Selectors.getAvaliableSkins","skin","OptionsContextMenu","Actions.toggleTimeMode","Actions.toggleDoubleSizeMode","Actions.toggleRepeat","Actions.toggleShuffle","Selectors.getDoubled","Selectors.getTimeMode","Selectors.getRepeat","Selectors.getShuffle","SkinsContextMenu","MainContextMenu","filePickers","networkConnected","Selectors.getNetworkConnected","Selectors.getGenWindows","Actions.close","Actions.openMediaFileDialog","Actions.loadMediaFiles","Actions.toggleWindow","menuOpened","picker","requiresNetwork","filePicker","contextMenuName","abuts","wouldMoveTo","SnapUtils.snap","useHandleMouseDown","propsWindows","Selectors.getWindowHidden","Selectors.getBrowserWindowSize","Actions.updateWindowPositions","draggingState","setDraggingState","moving","stationary","handleMouseMove","proposedDiff","proposedWindows","SnapUtils.applyDiff","proposedBox","SnapUtils.snapDiffManyToMany","withinDiff","SnapUtils.snapWithinDiff","finalDiff","diffs","metaDiff","SnapUtils.applyMultipleDiffs","windowPositionDiff","find","movingSet","findAllConnected","areConnected","candidates","checkNode","candidate","boxes","firstNode","SnapUtils.boundingBox","WindowManager","onBlur","transform","touchAction","_basePropertyOf","_deburrLetter","freeGlobal","global","freeSelf","_Symbol","Function","_arrayMap","isArray_1","objectProto","nativeObjectToString","symToStringTag","toStringTag","_getRawTag","isOwn","unmasked","getRawTag","objectToString","baseGetTag","isObjectLike","arrayMap","require$$2","isSymbol","symbolProto","symbolToString","_baseToString","baseToString","deburrLetter","reLatin","reComboMark","string","characterClassName","deburr","Character","passThrough","MiniTime","toggle","timeObj","showMinus","blinking","ClickedDiv","clicked","setClicked","ContextMenuTarget","setSelected","rect","pageXOffset","pageYOffset","getNodeOffset","renderMenu","FFT","bitrevtable","envelope","equalize","temp1","temp2","cossintable","static","NFREQ","samplesOut","initBitRevTable","initCosSinTable","initEnvelopeTable","initEqualizeTable","Float32Array","bias","invHalfNfreq","log10","samplesIn","power","mult","TWO_PI","pow","sin","HALF_PI","dftsize","theta","PI","cos","timeToFrequencyDomain","inWavedata","outSpectraldata","idx","fill","real","imag","wpr","wpi","wr","wi","hdftsize","tempr","tempi","wtemp","sqrt","VisPaintHandler","_vis","_ctx","vis","prepare","paintFrame","dispose","BarPaintHandler","saPeaks","saData2","saData","saFalloff","barPeak","chunk","uVar12","falloff","peakFalloff","pushDown","inWaveData","outSpectralData","_analyser","_fft","_color","_colorPeak","_bar","_peak","_16h","_bufferLength","_dataArray","colorssmall","colorssmall2","_renderHeight","_smallVis","_pixelDensity","_doubled","_isMWOpen","paintBar","super","frequencyBinCount","renderHeight","smallVis","pixelDensity","isMWOpen","paintAnalyzer","Int16Array","coloring","paintBarFire","paintBarLine","paintBarNormal","saPeakFalloff","ctx","fillStyle","fillRect","maxFreqIndex","logMaxFreqIndex","targetSize","maxWidth","fft","getByteTimeDomainData","processFFT","logScaledIndex","scaledIndex","index1","index2","frac2","frac1","bandwidth","x2","barHeight","peakHeight","peaks","peakY","slice1st","sliceWidth","sliceNumber","WavePaintHandler","_lastX","_lastY","_pixelRatio","paintWav","fftSize","paintOscilloscope","imageSmoothingEnabled","mozImageSmoothingEnabled","webkitImageSmoothingEnabled","msImageSmoothingEnabled","amplitude","colorIndex","yadjust","oscStyle","NoVisualizerHandler","cleared","Vis","Selectors.getSkinColors","audioStatus","Selectors.getWindowShade","Actions.toggleVisualizerStyle","windowShade","renderWidthBG","bgCanvas","bgColor","fgColor","distance","bgCanvasCtx","preRenderBg","setCanvas","painter","sa","canvasCtx","clearRect","animationRequest","ActionButtons","Balance","Actions.setBalance","Actions.setFocus","Actions.unsetFocus","onPointerUp","offsetFromBalance","MainBalance","backgroundPosition","Close","setFocusDouble","mouseUp","ClutterBar","Eject","toggleEqualizer","EqToggleButton","handleClick","windowOpen","togglePlaylist","PlaylistToggleButton","CharacterString","chars","character","Kbps","Selectors.getKbps","Khz","Selectors.getKhz","SEPARATOR","isLong","loopText","padEnd","Marquee","Selectors.getMarqueeText","Selectors.getMarqueeStep","Actions.stepMarquee","dragOffset","dragging","mouseDownX","setMouseDownX","setDragOffset","xStart","cleanedUp","React.useCallback","useDragX","pixels","mod","stepOffset","offsetPixels","stepping","setStepping","stepHandle","steppingTimeout","useStepper","willChange","MonoStereo","Selectors.getChannels","Position","displayedPosition","Selectors.getUserInputScrubPosition","Selectors.getUserInputFocus","usePosition","setPosition","onInput","Repeat","Shade","Actions.toggleMainWindowShadeMode","Minimize","Actions.minimize","Shuffle","Time","Utils.getTimeObj","Volume","Actions.setVolume","MainVolume","loadMediaAndPlay","Actions.loadMedia","MainWindow","mainShade","Selectors.getLoading","Selectors.getLlamaMode","Selectors.getWorking","draggable","Actions.scrollVolume","onWheel","PlaylistResizeTarget","PlaylistShade","Selectors.getMinimalMediaText","toggleShade","Actions.togglePlaylistShadeMode","focusWindow","addedWidth","trimmedName","nameLength","handleClickOut","clickOutTarget","useOnClickAway","selected_","PlaylistMenuEnry","AddMenu","Selectors.getTrackCount","Actions.addDirAtIndex","Actions.addFilesAtIndex","Actions.addFilesFromUrl","PlaylistMenu","RemoveMenu","removeSelected","Actions.removeSelectedTracks","removeAll","Actions.removeAllTracks","crop","Actions.cropPlaylist","SelectionMenu","invert","Actions.invertSelection","zero","Actions.selectZero","Actions.selectAll","SortContextMenu","Actions.reverseList","Actions.randomizeList","Actions.sortListByTitle","MiscOptionsContextMenu","Actions.downloadHtmlPlaylist","MiscMenu","ListMenu","Actions.addFilesFromList","Actions.saveFilesToList","RunningTimeDisplay","runningTimeMessage","Actions.getRunningTimeMessage","len","fillChar","rightPad","PlaylistWindow","TrackCell","handleMoveClick","Selectors.getSkinPlaylistStyle","currentTrackId","Actions.playTrackNow","handleTouchStart","handleSecondTap","TrackTitle","paddedTrackNumber","Selectors.getTrackDisplayName","TrackList","trackIds","Selectors.getVisibleTrackIds","Selectors.getNumberOfTracks","Actions.dragSelected","Actions.scrollPlaylistByDelta","setMoving","mouseStartY","setMouseStartY","_handleMoveClick","_renderTracks","lastDiff","maxTrackNumberLength","paddedTrackNumForIndex","padStart","userSelect","VerticalSlider","handle","handleHeight","onBeforeChange","onAfterChange","handleRef","handlePointerDown","sliderNode","sliderRect","handleRect","sliderTop","sliderHeight","handleTop","realHandleHeight","baseOffset","spanSize","moveToPosition","handlePointerMove","handleRelease","registerMoveListener","Handle","PlaylistScrollBar","playlistHeight","Selectors.getPlaylistScrollPosition","allTracksAreVisible","Selectors.getAllTracksAreVisible","Actions.setPlaylistScrollPosition","marginLeft","_maxTrackIndex","selectedWindow","maxTrackIndex","playlistShade","playlistWindowPixelSize","Actions.scrollUpFourTracks","Actions.scrollDownFourTracks","showVisualizer","activateVisualizer","targetCoords","fontFamily","showSpacers","PlaylistActionArea","Band","clickOriginatedInEq","Selectors.getSliders","spriteNumber","Actions.focusBand","EqOn","Actions.toggleEq","EqAuto","toggleAuto","Actions.toggleEqAuto","spline","xs","ys","ks","matrix","rows","columns","zerosMatrix","iMax","vali","NEGATIVE_INFINITY","swapRows","solve","getNaturalKs","maxX","allYs","GRAPH_HEIGHT","EqGraph","preampLineImage","Selectors.getPreampLineImage","canvasNode","setCanvasNode","colorPattern","lineColorsImage","Selectors.getLineColorsImage","createPattern","useColorPattern","preampValue","amplitudes","paddingLeft","lastY","yTop","drawEqLine","PresetsContextMenu","Actions.openEqfFileDialog","Actions.downloadPreset","Actions.setEqFromObject","builtin","EqTitleButtons","Actions.toggleEqualizerShadeMode","EqualizerShade","eqVolumeClassName","eqBalanceClassName","EqualizerWindow","setPreampValue","Actions.setPreamp","Actions.setEqToMin","Actions.setEqToMid","Actions.setEqToMax","setHertzValue","Actions.setEqBand","setClickOriginatedInEq","onReleaseHz","hertz","imageSelectors","MAIN_BALANCE_BACKGROUND","MAIN_BALANCE_THUMB","MAIN_BALANCE_THUMB_ACTIVE","MAIN_PREVIOUS_BUTTON","MAIN_PREVIOUS_BUTTON_ACTIVE","MAIN_PLAY_BUTTON","MAIN_PLAY_BUTTON_ACTIVE","MAIN_PAUSE_BUTTON","MAIN_PAUSE_BUTTON_ACTIVE","MAIN_STOP_BUTTON","MAIN_STOP_BUTTON_ACTIVE","MAIN_NEXT_BUTTON","MAIN_NEXT_BUTTON_ACTIVE","MAIN_EJECT_BUTTON","MAIN_EJECT_BUTTON_ACTIVE","MAIN_WINDOW_BACKGROUND","MAIN_STEREO","MAIN_STEREO_SELECTED","MAIN_MONO","MAIN_MONO_SELECTED","NO_MINUS_SIGN","MINUS_SIGN","DIGIT_0","DIGIT_1","DIGIT_2","DIGIT_3","DIGIT_4","DIGIT_5","DIGIT_6","DIGIT_7","DIGIT_8","DIGIT_9","NO_MINUS_SIGN_EX","MINUS_SIGN_EX","DIGIT_0_EX","DIGIT_1_EX","DIGIT_2_EX","DIGIT_3_EX","DIGIT_4_EX","DIGIT_5_EX","DIGIT_6_EX","DIGIT_7_EX","DIGIT_8_EX","DIGIT_9_EX","MAIN_PLAYING_INDICATOR","MAIN_PAUSED_INDICATOR","MAIN_STOPPED_INDICATOR","MAIN_NOT_WORKING_INDICATOR","MAIN_WORKING_INDICATOR","PLAYLIST_TOP_TILE","PLAYLIST_TOP_LEFT_CORNER","PLAYLIST_TITLE_BAR","PLAYLIST_TOP_RIGHT_CORNER","PLAYLIST_TOP_TILE_SELECTED","PLAYLIST_TOP_LEFT_SELECTED","PLAYLIST_TITLE_BAR_SELECTED","PLAYLIST_TOP_RIGHT_CORNER_SELECTED","PLAYLIST_LEFT_TILE","PLAYLIST_RIGHT_TILE","PLAYLIST_SCROLL_HANDLE","PLAYLIST_SCROLL_HANDLE_SELECTED","PLAYLIST_BOTTOM_TILE","PLAYLIST_BOTTOM_LEFT_CORNER","PLAYLIST_BOTTOM_RIGHT_CORNER","PLAYLIST_VISUALIZER_BACKGROUND","PLAYLIST_SHADE_BACKGROUND","PLAYLIST_SHADE_BACKGROUND_LEFT","PLAYLIST_SHADE_BACKGROUND_RIGHT","PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED","PLAYLIST_ADD_MENU_BAR","PLAYLIST_ADD_URL","PLAYLIST_ADD_URL_SELECTED","PLAYLIST_ADD_DIR","PLAYLIST_ADD_DIR_SELECTED","PLAYLIST_ADD_FILE","PLAYLIST_ADD_FILE_SELECTED","PLAYLIST_REMOVE_MENU_BAR","PLAYLIST_REMOVE_ALL","PLAYLIST_REMOVE_ALL_SELECTED","PLAYLIST_CROP","PLAYLIST_CROP_SELECTED","PLAYLIST_REMOVE_SELECTED","PLAYLIST_REMOVE_SELECTED_SELECTED","PLAYLIST_REMOVE_MISC","PLAYLIST_REMOVE_MISC_SELECTED","PLAYLIST_SELECT_MENU_BAR","PLAYLIST_INVERT_SELECTION","PLAYLIST_INVERT_SELECTION_SELECTED","PLAYLIST_SELECT_ZERO","PLAYLIST_SELECT_ZERO_SELECTED","PLAYLIST_SELECT_ALL","PLAYLIST_SELECT_ALL_SELECTED","PLAYLIST_CLOSE_SELECTED","PLAYLIST_COLLAPSE_SELECTED","PLAYLIST_EXPAND_SELECTED","PLAYLIST_MISC_MENU_BAR","PLAYLIST_MISC_OPTIONS","PLAYLIST_MISC_OPTIONS_SELECTED","PLAYLIST_FILE_INFO","PLAYLIST_FILE_INFO_SELECTED","PLAYLIST_SORT_LIST","PLAYLIST_SORT_LIST_SELECTED","PLAYLIST_LIST_BAR","PLAYLIST_NEW_LIST","PLAYLIST_NEW_LIST_SELECTED","PLAYLIST_LOAD_LIST","PLAYLIST_LOAD_LIST_SELECTED","PLAYLIST_SAVE_LIST","PLAYLIST_SAVE_LIST_SELECTED","EQ_WINDOW_BACKGROUND","EQ_TITLE_BAR","EQ_TITLE_BAR_SELECTED","EQ_SLIDER_BACKGROUND","EQ_SLIDER_THUMB","EQ_SLIDER_THUMB_SELECTED","EQ_ON_BUTTON","EQ_ON_BUTTON_DEPRESSED","EQ_ON_BUTTON_SELECTED","EQ_ON_BUTTON_SELECTED_DEPRESSED","EQ_AUTO_BUTTON","EQ_AUTO_BUTTON_DEPRESSED","EQ_AUTO_BUTTON_SELECTED","EQ_AUTO_BUTTON_SELECTED_DEPRESSED","EQ_GRAPH_BACKGROUND","EQ_PRESETS_BUTTON","EQ_PRESETS_BUTTON_SELECTED","EQ_SHADE_BACKGROUND","EQ_SHADE_BACKGROUND_SELECTED","EQ_SHADE_VOLUME_SLIDER_LEFT","EQ_SHADE_VOLUME_SLIDER_CENTER","EQ_SHADE_VOLUME_SLIDER_RIGHT","EQ_SHADE_BALANCE_SLIDER_LEFT","EQ_SHADE_BALANCE_SLIDER_CENTER","EQ_SHADE_BALANCE_SLIDER_RIGHT","EQ_MAXIMIZE_BUTTON_ACTIVE","EQ_MINIMIZE_BUTTON_ACTIVE","EQ_CLOSE_BUTTON","EQ_CLOSE_BUTTON_ACTIVE","EQ_SHADE_CLOSE_BUTTON","EQ_SHADE_CLOSE_BUTTON_ACTIVE","MAIN_POSITION_SLIDER_BACKGROUND","MAIN_POSITION_SLIDER_THUMB","MAIN_POSITION_SLIDER_THUMB_SELECTED","MAIN_SHUFFLE_BUTTON","MAIN_SHUFFLE_BUTTON_DEPRESSED","MAIN_SHUFFLE_BUTTON_SELECTED","MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED","MAIN_REPEAT_BUTTON","MAIN_REPEAT_BUTTON_DEPRESSED","MAIN_REPEAT_BUTTON_SELECTED","MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED","MAIN_EQ_BUTTON","MAIN_EQ_BUTTON_SELECTED","MAIN_EQ_BUTTON_DEPRESSED","MAIN_EQ_BUTTON_DEPRESSED_SELECTED","MAIN_PLAYLIST_BUTTON","MAIN_PLAYLIST_BUTTON_SELECTED","MAIN_PLAYLIST_BUTTON_DEPRESSED","MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED","MAIN_TITLE_BAR","MAIN_TITLE_BAR_SELECTED","MAIN_EASTER_EGG_TITLE_BAR","MAIN_EASTER_EGG_TITLE_BAR_SELECTED","MAIN_OPTIONS_BUTTON","MAIN_OPTIONS_BUTTON_DEPRESSED","MAIN_MINIMIZE_BUTTON","MAIN_MINIMIZE_BUTTON_DEPRESSED","MAIN_SHADE_BUTTON","MAIN_SHADE_BUTTON_DEPRESSED","MAIN_CLOSE_BUTTON","MAIN_CLOSE_BUTTON_DEPRESSED","MAIN_CLUTTER_BAR_BACKGROUND","MAIN_CLUTTER_BAR_BACKGROUND_DISABLED","MAIN_CLUTTER_BAR_BUTTON_O_SELECTED","MAIN_CLUTTER_BAR_BUTTON_A_SELECTED","MAIN_CLUTTER_BAR_BUTTON_I_SELECTED","MAIN_CLUTTER_BAR_BUTTON_D_SELECTED","MAIN_CLUTTER_BAR_BUTTON_V_SELECTED","MAIN_SHADE_BACKGROUND","MAIN_SHADE_BACKGROUND_SELECTED","MAIN_SHADE_BUTTON_SELECTED","MAIN_SHADE_BUTTON_SELECTED_DEPRESSED","MAIN_SHADE_POSITION_BACKGROUND","MAIN_SHADE_POSITION_THUMB","MAIN_SHADE_POSITION_THUMB_LEFT","MAIN_SHADE_POSITION_THUMB_RIGHT","MAIN_VOLUME_BACKGROUND","MAIN_VOLUME_THUMB","MAIN_VOLUME_THUMB_SELECTED","GEN_TOP_CENTER_FILL","GEN_TOP_LEFT","GEN_TOP_LEFT_END","GEN_TOP_RIGHT","GEN_TOP_RIGHT_END","GEN_TOP_LEFT_RIGHT_FILL","GEN_TOP_CENTER_FILL_SELECTED","GEN_TOP_LEFT_SELECTED","GEN_TOP_LEFT_END_SELECTED","GEN_TOP_RIGHT_SELECTED","GEN_TOP_RIGHT_END_SELECTED","GEN_TOP_LEFT_RIGHT_FILL_SELECTED","GEN_BOTTOM_LEFT","GEN_BOTTOM_RIGHT","GEN_BOTTOM_FILL","GEN_MIDDLE_LEFT","GEN_MIDDLE_LEFT_BOTTOM","GEN_MIDDLE_RIGHT","GEN_MIDDLE_RIGHT_BOTTOM","GEN_CLOSE_SELECTED","cursorSelectors","CLOSE","EQSLID","EQNORMAL","EQCLOSE","EQTITLE","MAINMENU","MIN","NORMAL","MMENU","PNORMAL","PTBAR","PCLOSE","PWINBUT","PSIZE","PWSSIZE","PWSNORM","PVSCROLL","SONGNAME","VOLBAL","WINBUT","WSNORMAL","WSPOSBAR","Css","remove","ClipPaths","paths","endianness","bytes","swap","theByte","pack","codePoint","codePointAt","IntParser","bits","signed","lastByteMask_","unpack","unpackUnsigned_","unpackSigned_","overflow_","overflowClamp_","unpack_","sign_","RangeError","IEEE754Buffer","ebits","fbits","numBytes","biasP2","ebitsFbits","fbias","sign","exp","fraction","roundToEven","packFloatBits_","significand","eMax","leftBits","substring","charAt","exponent","parseInt","NaN","unpackString","lowerBoundary","upperBoundary","unpackUTF8","packArrayTo","theType","packer","getParser_","fp","valuesLen","be","throwValueError_","unpackArrayTo","output","safe","extra","getUnpackLen_","packTo","unpackArray","TYPE_ERR","validateFloatType","validateIntType","packUTF8","chunkSize","signature","uInt32","supported_containers","setSignature","readString","readUInt32","chunkId","subChunks","getSubChunksIndex_","chunkData","findChunk","chunks","maxSize","getSubChunkIndex_","getChunkId_","getChunkSize_","realChunkSize","parseAni","riff_file_1","byte_data_1","DWORD","riff","RIFFFile","mapper","mapChunk","words","cbSize","nFrames","nSteps","iWidth","iHeight","iBitCount","nPlanes","iDispRate","bfAttributes","dist","convertAniBinaryToCSS_1","convertAniBinaryToCSS","JIFFIES_PER_MS","aniBinary","ani","_a","rate","frames","percents","frameIdx","seq","readAni","uniqueId","__spread","CSS_PREFIX","mapRegionNamesToIds","windowshade","equalizerws","mapRegionNamesToMatcher","FALLBACKS","normalizeCursorSelector","startsWith","getCssRules","Selectors.getSkinRegion","cssRules","imageName","imageUrl","_selector","selectedWidth","cursorSelector","cursorRules","numExIsUsed","regionName","polygons","matcher","getClipPaths","clipPaths","Skin","App","Selectors.getClosed","genWindowsInfo","Actions.browserWindowSizeChanged","webampNode","role","handleWindowResize","renderWindows","getAnalyser","MilkdropWindow","ContextMenuWrapper","IGNORE_EVENTS_FROM_TAGS","Emitter","_listeners","eventListeners","StereoBalanceNode","upMixer","createGain","channelCount","channelCountMode","channelInterpretation","splitter","createChannelSplitter","leftGain","rightGain","merger","createChannelMerger","rawValue","gain","connect","audioParam","defineProperties","writable","AudioNode","ElementSource","_emitter","_source","_destination","_audio","_stalled","destination","_setStalled","_setStatus","createMediaElementSource","stalled","loadUrl","getStalled","getStatus","Media","_balance","_staticSource","_preamp","_gainNode","_bands","AudioContext","webkitAudioContext","resume","createAnalyser","smoothingTimeConstant","createBiquadFilter","frequency","timeRemaining","percentComplete","seekTime","autoPlay","Disposable","_teardowns","teardowns","teardown","Webamp","_actionEmitter","_root","_disposable","browserIsSupported","supportsAudioApi","supportsCanvas","initialTracks","initialSkin","enableHotkeys","enableDoubleSizeMode","__butterchurnOptions","__customMediaClass","importConvertPreset","presetConverterEndpoint","convert","presetOptions","getStore","__customMiddlewares","__initialState","navigator","onLine","butterchurnOpen","getPresets","importButterchurn","normalizePresets","handleOnline","handleOffline","layout","_bufferTracks","avaliableSkins","windowLayout","extraHeight","plusHeight","extraWidth","plusWidth","shadeMode","currentPos","bindHotkeys","Actions.seekToTime","previousTrack","appendTracks","setTracksToPlay","onWillClose","onClose","reopen","onTrackDidChange","previousTrackId","Selectors.getCurrentlyPlayingTrackIdIfLoaded","Selectors.getCurrentTrackInfo","onMinimize","skinIsLoaded","storeHas","renderWhenReady","__loadSerializedState","Actions.loadSerializedState","__getSerializedState","fromMedia.getSerializedState","fromDisplay.getSerializedState","fromWindows.getSerializedState","__onStateChange"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,39,45,68,76,79,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,173,174,175,176,177,178,179,180]}
|