ahp-inspector 1.4.2 → 1.4.3
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/dist/index.js +46 -1
- package/package.json +1 -1
- package/ui-dist/assets/{index-CkWXlGE4.css → index-DTLBo7X9.css} +1 -1
- package/ui-dist/assets/index-dyClOfJ7.js +81 -0
- package/ui-dist/assets/index-dyClOfJ7.js.map +1 -0
- package/ui-dist/index.html +2 -2
- package/ui-dist/assets/index-C3fgWj5L.js +0 -81
- package/ui-dist/assets/index-C3fgWj5L.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-dyClOfJ7.js","names":["__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","__iconNode","memo","memo"],"sources":["../../../../node_modules/.pnpm/react@19.2.6/node_modules/react/cjs/react.production.js","../../../../node_modules/.pnpm/react@19.2.6/node_modules/react/index.js","../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/cjs/scheduler.production.js","../../../../node_modules/.pnpm/scheduler@0.27.0/node_modules/scheduler/index.js","../../../../node_modules/.pnpm/react-dom@19.2.6_react@19.2.6/node_modules/react-dom/cjs/react-dom.production.js","../../../../node_modules/.pnpm/react-dom@19.2.6_react@19.2.6/node_modules/react-dom/index.js","../../../../node_modules/.pnpm/react-dom@19.2.6_react@19.2.6/node_modules/react-dom/cjs/react-dom-client.production.js","../../../../node_modules/.pnpm/react-dom@19.2.6_react@19.2.6/node_modules/react-dom/client.js","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/defaultAttributes.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/context.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/Icon.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/createLucideIcon.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/arrow-down.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/check.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/chevron-down.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/chevron-right.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/chevron-up.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/file-braces.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/funnel.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/info.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/loader-circle.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/palette.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/pause.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/play.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/search.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/shield-alert.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/triangle-alert.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/wifi-off.mjs","../../../../node_modules/.pnpm/lucide-react@1.14.0_react@19.2.6/node_modules/lucide-react/dist/esm/icons/x.mjs","../../src/state/filters.ts","../../src/state/persistence.ts","../../../../node_modules/.pnpm/zustand@5.0.13_@types+react@19.2.0_react@19.2.6/node_modules/zustand/esm/vanilla.mjs","../../../../node_modules/.pnpm/zustand@5.0.13_@types+react@19.2.0_react@19.2.6/node_modules/zustand/esm/react.mjs","../../src/components/detail/detail-layout.ts","../../src/state/store.ts","../../src/persistence/persist-effect.ts","../../src/state/selectors.ts","../../src/transport/api-base.ts","../../src/transport/sessions-client.ts","../../src/transport/sse-client.ts","../../../cli/package.json","../../src/version.ts","../../../../node_modules/.pnpm/react@19.2.6/node_modules/react/cjs/react-jsx-runtime.production.js","../../../../node_modules/.pnpm/react@19.2.6/node_modules/react/jsx-runtime.js","../../src/components/banners/WatchErrorBanner.tsx","../../src/transport/http-client.ts","../../src/components/detail/AhpFieldRow.tsx","../../src/components/detail/AhpFieldStrip.tsx","../../src/components/detail/AuthFailureBanner.tsx","../../src/components/detail/clipboard.ts","../../src/components/detail/openInNewTab.ts","../../src/components/detail/CopyMenu.tsx","../../src/components/detail/CopyToast.tsx","../../src/components/detail/DetailCorrelation.tsx","../../src/components/detail/DetailResizeHandle.tsx","../../src/components/detail/DetailSummary.tsx","../../src/components/detail/DetailTabs.tsx","../../../../node_modules/.pnpm/react-json-view-lite@2.5.0_react@19.2.6/node_modules/react-json-view-lite/dist/index.modern.js","../../src/components/detail/TruncationBanner.tsx","../../src/components/detail/PrettyJsonView.tsx","../../src/components/detail/PrivacyCaption.tsx","../../src/components/detail/RawJsonView.tsx","../../src/transport/state-client.ts","../../src/components/detail/StateConfidenceBadge.tsx","../../src/components/detail/state-compare.ts","../../src/components/detail/state-pins.ts","../../src/components/detail/PinnedStatePanel.tsx","../../src/components/detail/StateCopyMenu.tsx","../../src/components/detail/StateDiagnosticsPanel.tsx","../../src/components/detail/StateResourceSelector.tsx","../../src/components/detail/StateSummaryView.tsx","../../src/components/detail/StateInspectorPanel.tsx","../../src/components/detail/DetailPanel.tsx","../../src/components/drop/DropOverlay.tsx","../../src/components/drop/MultiFileToast.tsx","../../src/components/picker/error-copy.ts","../../src/components/drop/parseDroppedUri.ts","../../src/components/drop/useDropZone.ts","../../src/components/filters/ActiveChip.tsx","../../src/components/filters/ActiveFilterChips.tsx","../../src/components/filters/FacetChip.tsx","../../src/components/filters/FacetPopover.tsx","../../../protocol/src/common/actions.ts","../../../protocol/src/action-origin.generated.ts","../../../protocol/src/source-info.ts","../../../protocol/src/version/registry.ts","../../../core/src/row-projection.ts","../../src/components/filters/GroupToggleChip.tsx","../../src/components/filters/ResultCounter.tsx","../../src/components/filters/RowFilterInput.tsx","../../src/components/filters/SearchInputCore.tsx","../../src/components/filters/SearchPopover.tsx","../../src/components/filters/SearchTrigger.tsx","../../src/components/filters/TimeRangePopover.tsx","../../src/components/filters/FilterBar.tsx","../../src/transport/search-client.ts","../../src/components/filters/useSearch.ts","../../src/components/picker/CandidateRow.tsx","../../src/components/picker/NoCandidatesHint.tsx","../../src/components/picker/CandidateList.tsx","../../src/components/picker/ManualOpenInput.tsx","../../src/components/picker/LogPickerPanel.tsx","../../src/components/timeline/StickyGroupBar.tsx","../../src/components/banners/RotationBanner.tsx","../../src/components/shell/NewEventsPill.tsx","../../src/components/shell/StreamBacklogPill.tsx","../../src/components/states/DisconnectedBanner.tsx","../../src/components/states/EmptyState.tsx","../../src/components/states/LoadingState.tsx","../../src/components/states/NoResultsBanner.tsx","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.14.0/node_modules/@tanstack/virtual-core/dist/esm/utils.js","../../../../node_modules/.pnpm/@tanstack+virtual-core@3.14.0/node_modules/@tanstack/virtual-core/dist/esm/index.js","../../../../node_modules/.pnpm/@tanstack+react-virtual@3.13.24_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@tanstack/react-virtual/dist/esm/index.js","../../src/components/timeline/cells/DirectionGlyph.tsx","../../src/components/timeline/cells/KindTag.tsx","../../src/components/timeline/cells/LatencyCell.tsx","../../src/components/timeline/cells/SummaryCell.tsx","../../src/components/timeline/EventRow.tsx","../../src/components/timeline/GroupHeaderRow.tsx","../../src/components/timeline/ParseErrorRow.tsx","../../src/components/timeline/TimelineList.tsx","../../src/components/timeline/TimelineRegion.tsx","../../src/components/shell/CrtCurvatureCanvas.tsx","../../src/components/shell/CrtFilterDefs.tsx","../../src/theme/theme.ts","../../src/components/shell/LivePauseButton.tsx","../../src/components/shell/HeaderBar.tsx","../../src/components/shell/SourceStrip.tsx","../../src/components/shell/StatusBar.tsx","../../src/components/shell/AppShell.tsx","../../src/components/states/NoActiveLogState.tsx","../../src/components/states/ServerNotRunningState.tsx","../../src/transport/transport-context.tsx","../../src/App.tsx","../../src/transport/browser-client.ts","../../src/main.tsx"],"sourcesContent":["/**\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 REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\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;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\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 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, noop)\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 },\n 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.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\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.cacheSignal = function () {\n return null;\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 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 (\"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, 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, 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 null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\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, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\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.2.6\";\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 * scheduler.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\";\nfunction push(heap, node) {\n var index = heap.length;\n heap.push(node);\n a: for (; 0 < index; ) {\n var parentIndex = (index - 1) >>> 1,\n parent = heap[parentIndex];\n if (0 < compare(parent, node))\n (heap[parentIndex] = node), (heap[index] = parent), (index = parentIndex);\n else break a;\n }\n}\nfunction peek(heap) {\n return 0 === heap.length ? null : heap[0];\n}\nfunction pop(heap) {\n if (0 === heap.length) return null;\n var first = heap[0],\n last = heap.pop();\n if (last !== first) {\n heap[0] = last;\n a: for (\n var index = 0, length = heap.length, halfLength = length >>> 1;\n index < halfLength;\n\n ) {\n var leftIndex = 2 * (index + 1) - 1,\n left = heap[leftIndex],\n rightIndex = leftIndex + 1,\n right = heap[rightIndex];\n if (0 > compare(left, last))\n rightIndex < length && 0 > compare(right, left)\n ? ((heap[index] = right),\n (heap[rightIndex] = last),\n (index = rightIndex))\n : ((heap[index] = left),\n (heap[leftIndex] = last),\n (index = leftIndex));\n else if (rightIndex < length && 0 > compare(right, last))\n (heap[index] = right), (heap[rightIndex] = last), (index = rightIndex);\n else break a;\n }\n }\n return first;\n}\nfunction compare(a, b) {\n var diff = a.sortIndex - b.sortIndex;\n return 0 !== diff ? diff : a.id - b.id;\n}\nexports.unstable_now = void 0;\nif (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n var localPerformance = performance;\n exports.unstable_now = function () {\n return localPerformance.now();\n };\n} else {\n var localDate = Date,\n initialTime = localDate.now();\n exports.unstable_now = function () {\n return localDate.now() - initialTime;\n };\n}\nvar taskQueue = [],\n timerQueue = [],\n taskIdCounter = 1,\n currentTask = null,\n currentPriorityLevel = 3,\n isPerformingWork = !1,\n isHostCallbackScheduled = !1,\n isHostTimeoutScheduled = !1,\n needsPaint = !1,\n localSetTimeout = \"function\" === typeof setTimeout ? setTimeout : null,\n localClearTimeout = \"function\" === typeof clearTimeout ? clearTimeout : null,\n localSetImmediate = \"undefined\" !== typeof setImmediate ? setImmediate : null;\nfunction advanceTimers(currentTime) {\n for (var timer = peek(timerQueue); null !== timer; ) {\n if (null === timer.callback) pop(timerQueue);\n else if (timer.startTime <= currentTime)\n pop(timerQueue),\n (timer.sortIndex = timer.expirationTime),\n push(taskQueue, timer);\n else break;\n timer = peek(timerQueue);\n }\n}\nfunction handleTimeout(currentTime) {\n isHostTimeoutScheduled = !1;\n advanceTimers(currentTime);\n if (!isHostCallbackScheduled)\n if (null !== peek(taskQueue))\n (isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline());\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n }\n}\nvar isMessageLoopRunning = !1,\n taskTimeoutID = -1,\n frameInterval = 5,\n startTime = -1;\nfunction shouldYieldToHost() {\n return needsPaint\n ? !0\n : exports.unstable_now() - startTime < frameInterval\n ? !1\n : !0;\n}\nfunction performWorkUntilDeadline() {\n needsPaint = !1;\n if (isMessageLoopRunning) {\n var currentTime = exports.unstable_now();\n startTime = currentTime;\n var hasMoreWork = !0;\n try {\n a: {\n isHostCallbackScheduled = !1;\n isHostTimeoutScheduled &&\n ((isHostTimeoutScheduled = !1),\n localClearTimeout(taskTimeoutID),\n (taskTimeoutID = -1));\n isPerformingWork = !0;\n var previousPriorityLevel = currentPriorityLevel;\n try {\n b: {\n advanceTimers(currentTime);\n for (\n currentTask = peek(taskQueue);\n null !== currentTask &&\n !(\n currentTask.expirationTime > currentTime && shouldYieldToHost()\n );\n\n ) {\n var callback = currentTask.callback;\n if (\"function\" === typeof callback) {\n currentTask.callback = null;\n currentPriorityLevel = currentTask.priorityLevel;\n var continuationCallback = callback(\n currentTask.expirationTime <= currentTime\n );\n currentTime = exports.unstable_now();\n if (\"function\" === typeof continuationCallback) {\n currentTask.callback = continuationCallback;\n advanceTimers(currentTime);\n hasMoreWork = !0;\n break b;\n }\n currentTask === peek(taskQueue) && pop(taskQueue);\n advanceTimers(currentTime);\n } else pop(taskQueue);\n currentTask = peek(taskQueue);\n }\n if (null !== currentTask) hasMoreWork = !0;\n else {\n var firstTimer = peek(timerQueue);\n null !== firstTimer &&\n requestHostTimeout(\n handleTimeout,\n firstTimer.startTime - currentTime\n );\n hasMoreWork = !1;\n }\n }\n break a;\n } finally {\n (currentTask = null),\n (currentPriorityLevel = previousPriorityLevel),\n (isPerformingWork = !1);\n }\n hasMoreWork = void 0;\n }\n } finally {\n hasMoreWork\n ? schedulePerformWorkUntilDeadline()\n : (isMessageLoopRunning = !1);\n }\n }\n}\nvar schedulePerformWorkUntilDeadline;\nif (\"function\" === typeof localSetImmediate)\n schedulePerformWorkUntilDeadline = function () {\n localSetImmediate(performWorkUntilDeadline);\n };\nelse if (\"undefined\" !== typeof MessageChannel) {\n var channel = new MessageChannel(),\n port = channel.port2;\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = function () {\n port.postMessage(null);\n };\n} else\n schedulePerformWorkUntilDeadline = function () {\n localSetTimeout(performWorkUntilDeadline, 0);\n };\nfunction requestHostTimeout(callback, ms) {\n taskTimeoutID = localSetTimeout(function () {\n callback(exports.unstable_now());\n }, ms);\n}\nexports.unstable_IdlePriority = 5;\nexports.unstable_ImmediatePriority = 1;\nexports.unstable_LowPriority = 4;\nexports.unstable_NormalPriority = 3;\nexports.unstable_Profiling = null;\nexports.unstable_UserBlockingPriority = 2;\nexports.unstable_cancelCallback = function (task) {\n task.callback = null;\n};\nexports.unstable_forceFrameRate = function (fps) {\n 0 > fps || 125 < fps\n ? console.error(\n \"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"\n )\n : (frameInterval = 0 < fps ? Math.floor(1e3 / fps) : 5);\n};\nexports.unstable_getCurrentPriorityLevel = function () {\n return currentPriorityLevel;\n};\nexports.unstable_next = function (eventHandler) {\n switch (currentPriorityLevel) {\n case 1:\n case 2:\n case 3:\n var priorityLevel = 3;\n break;\n default:\n priorityLevel = currentPriorityLevel;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_requestPaint = function () {\n needsPaint = !0;\n};\nexports.unstable_runWithPriority = function (priorityLevel, eventHandler) {\n switch (priorityLevel) {\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n default:\n priorityLevel = 3;\n }\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = priorityLevel;\n try {\n return eventHandler();\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n};\nexports.unstable_scheduleCallback = function (\n priorityLevel,\n callback,\n options\n) {\n var currentTime = exports.unstable_now();\n \"object\" === typeof options && null !== options\n ? ((options = options.delay),\n (options =\n \"number\" === typeof options && 0 < options\n ? currentTime + options\n : currentTime))\n : (options = currentTime);\n switch (priorityLevel) {\n case 1:\n var timeout = -1;\n break;\n case 2:\n timeout = 250;\n break;\n case 5:\n timeout = 1073741823;\n break;\n case 4:\n timeout = 1e4;\n break;\n default:\n timeout = 5e3;\n }\n timeout = options + timeout;\n priorityLevel = {\n id: taskIdCounter++,\n callback: callback,\n priorityLevel: priorityLevel,\n startTime: options,\n expirationTime: timeout,\n sortIndex: -1\n };\n options > currentTime\n ? ((priorityLevel.sortIndex = options),\n push(timerQueue, priorityLevel),\n null === peek(taskQueue) &&\n priorityLevel === peek(timerQueue) &&\n (isHostTimeoutScheduled\n ? (localClearTimeout(taskTimeoutID), (taskTimeoutID = -1))\n : (isHostTimeoutScheduled = !0),\n requestHostTimeout(handleTimeout, options - currentTime)))\n : ((priorityLevel.sortIndex = timeout),\n push(taskQueue, priorityLevel),\n isHostCallbackScheduled ||\n isPerformingWork ||\n ((isHostCallbackScheduled = !0),\n isMessageLoopRunning ||\n ((isMessageLoopRunning = !0), schedulePerformWorkUntilDeadline())));\n return priorityLevel;\n};\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = function (callback) {\n var parentPriorityLevel = currentPriorityLevel;\n return function () {\n var previousPriorityLevel = currentPriorityLevel;\n currentPriorityLevel = parentPriorityLevel;\n try {\n return callback.apply(this, arguments);\n } finally {\n currentPriorityLevel = previousPriorityLevel;\n }\n };\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.js');\n} else {\n module.exports = require('./cjs/scheduler.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.2.6\";\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","/**\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 getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.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_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\";\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 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$1) {\n control = x$1;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$2) {\n control = x$2;\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, childFiber) {\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 fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : 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 previous = null;\n do\n (info += describeFiber(workInProgress, previous)),\n (previous = 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}\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 nextTransitionUpdateLane = 256,\n nextTransitionDeferredLane = 262144,\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 return lanes & 261888;\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 3932160;\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 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$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\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 & 261930);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42) ? 1 : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\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 = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentHydrationBoundary(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 31 === 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$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\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}\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, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\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 if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\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 track(element);\n return;\n }\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 track(element);\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 track(element);\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}\nfunction noop$1() {}\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$286;\n if (canUseDOM) {\n var isSupported$jscomp$inline_427 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_427) {\n var element$jscomp$inline_428 = document.createElement(\"div\");\n element$jscomp$inline_428.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_427 =\n \"function\" === typeof element$jscomp$inline_428.oninput;\n }\n JSCompiler_inline_result$jscomp$286 = isSupported$jscomp$inline_427;\n } else JSCompiler_inline_result$jscomp$286 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$286 &&\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 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 },\n 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_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 createFiberFromDehydratedFragment(dehydratedNode) {\n var fiber = createFiberImplClass(18, null, null, 0);\n fiber.stateNode = dehydratedNode;\n return fiber;\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 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 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}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextId = suspendedContext.id;\n treeContextOverflow = suspendedContext.overflow;\n treeContextProvider = workInProgress;\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(\n formatProdErrorMessage(\n 418,\n 1 < arguments.length && void 0 !== arguments[1] && arguments[1]\n ? \"text\"\n : \"HTML\",\n \"\"\n )\n );\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 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 }\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, !0);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 5:\n case 31:\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 nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\n } else if (31 === tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n nextHydratableInstance =\n getNextHydratableInstanceAfterHydrationBoundary(fiber);\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 globalMostRecentTransitionTime = now();\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 trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$1, noop$1), (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$1, noop$1);\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}\nfunction resolveLazy(lazyType) {\n try {\n var init = lazyType._init;\n return init(lazyType._payload);\n } catch (x) {\n if (null !== x && \"object\" === typeof x && \"function\" === typeof x.then)\n throw ((suspendedThenable = x), SuspenseException);\n throw x;\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 thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectTypeImpl(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 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 return (\n (newChild = resolveLazy(newChild)),\n createChild(returnFiber, newChild, lanes)\n );\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 throwOnInvalidObjectTypeImpl(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 (newChild = resolveLazy(newChild)),\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 throwOnInvalidObjectTypeImpl(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 return (\n (newChild = resolveLazy(newChild)),\n updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n )\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 throwOnInvalidObjectTypeImpl(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 (newChild = resolveLazy(newChild)),\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 throwOnInvalidObjectTypeImpl(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$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = 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 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 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 pushDehydratedActivitySuspenseHandler(fiber) {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, fiber);\n null === shellBoundary && (shellBoundary = fiber);\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n 22 === fiber.tag\n ? (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary && (shellBoundary = fiber))\n : 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 isSuspenseInstancePending(state) ||\n isSuspenseInstanceFallback(state))\n )\n return node;\n } else if (\n 19 === node.tag &&\n (\"forwards\" === node.memoizedProps.revealOrder ||\n \"backwards\" === node.memoizedProps.revealOrder ||\n \"unstable_legacy-backwards\" === node.memoizedProps.revealOrder ||\n \"together\" === node.memoizedProps.revealOrder)\n ) {\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}\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 = 0,\n thenableState = 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 = 0;\n thenableState = 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 = null);\n thenableIndexCounter = 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 = localIdCounter = 0;\n thenableState = 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;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, 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$60 = !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 gesture: null,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$60 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n gesture: null,\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 gesture: update.gesture,\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$60 &&\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 updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\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 { destroy: void 0 },\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 & 127) ||\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 null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$66) {\n onActionError(actionQueue, node, error$66);\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 { destroy: void 0 },\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, deps) {\n tag = { tag: tag, create: create, deps: deps, 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 : ((deps = create.next),\n (create.next = tag),\n (tag.next = deps),\n (inst.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber.flags |= fiberFlags;\n hook.memoizedState = pushSimpleEffect(\n 1 | hookFlags,\n { destroy: void 0 },\n create,\n void 0 === deps ? null : deps\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, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction useEffectEventImpl(payload) {\n currentlyRenderingFiber.flags |= 4;\n var componentUpdateQueue = currentlyRenderingFiber.updateQueue;\n if (null === componentUpdateQueue)\n (componentUpdateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber.updateQueue = componentUpdateQueue),\n (componentUpdateQueue.events = [payload]);\n else {\n var events = componentUpdateQueue.events;\n null === events\n ? (componentUpdateQueue.events = [payload])\n : events.push(payload);\n }\n}\nfunction updateEvent(callback) {\n var ref = updateWorkInProgressHook().memoizedState;\n useEffectEventImpl({ ref: ref, nextImpl: callback });\n return function () {\n if (0 !== (executionContext & 2)) throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\n };\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 (\n void 0 === initialValue ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\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 (\n 0 === (renderLanes & 42) ||\n (0 !== (renderLanes & 1073741824) &&\n 0 === (workInProgressRootRenderLanes & 261930))\n )\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 null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop() {}\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\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 stateHook = ensureFormComponentIsStateful(formFiber);\n null === stateHook.next && (stateHook = formFiber.alternate.memoizedState);\n dispatchSetStateInternal(\n formFiber,\n stateHook.next.queue,\n {},\n requestUpdateLane()\n );\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$69 = enqueueUpdate(provider, fiber, lane);\n null !== root$69 &&\n (scheduleUpdateOnFiber(root$69, provider, lane),\n entangleTransitions(root$69, 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 gesture: null,\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 gesture: null,\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 gesture: null,\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};\nContextOnlyDispatcher.useEffectEvent = throwInvalidHookError;\nvar 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 & 127) ||\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 { destroy: void 0 },\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 \"_\" + 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 += \"_\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \"_\" +\n identifierPrefix +\n \"r_\" +\n JSCompiler_inline_result.toString(32) +\n \"_\");\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 useEffectEvent: function (callback) {\n var hook = mountWorkInProgressHook(),\n ref = { impl: callback };\n hook.memoizedState = ref;\n return function () {\n if (0 !== (executionContext & 2))\n throw Error(formatProdErrorMessage(440));\n return ref.impl.apply(void 0, arguments);\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 };\nHooksDispatcherOnUpdate.useEffectEvent = updateEvent;\nvar 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};\nHooksDispatcherOnRerender.useEffectEvent = updateEvent;\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}\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 31:\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(\n current,\n workInProgress,\n renderLanes,\n nextProps\n) {\n var nextChildren = nextProps.children,\n prevState = null !== current ? current.memoizedState : null;\n null === current &&\n null === workInProgress.stateNode &&\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n if (\"hidden\" === nextProps.mode) {\n if (0 !== (workInProgress.flags & 128)) {\n prevState =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextProps = workInProgress.child = current.child;\n for (nextChildren = 0; null !== nextProps; )\n (nextChildren =\n nextChildren | nextProps.lanes | nextProps.childLanes),\n (nextProps = nextProps.sibling);\n nextProps = nextChildren & ~prevState;\n } else (nextProps = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n prevState,\n renderLanes,\n nextProps\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 (nextProps = workInProgress.lanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes,\n nextProps\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 bailoutOffscreenComponent(current, workInProgress) {\n (null !== current && 22 === current.tag) ||\n null !== workInProgress.stateNode ||\n (workInProgress.stateNode = {\n _visibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null\n });\n return workInProgress.sibling;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes,\n remainingChildLanes\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 workInProgress.childLanes = remainingChildLanes;\n return null;\n}\nfunction mountActivityChildren(workInProgress, nextProps) {\n nextProps = mountWorkInProgressOffscreenFiber(\n { mode: nextProps.mode, children: nextProps.children },\n workInProgress.mode\n );\n nextProps.ref = workInProgress.ref;\n workInProgress.child = nextProps;\n nextProps.return = workInProgress;\n return nextProps;\n}\nfunction retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountActivityChildren(workInProgress, workInProgress.pendingProps);\n current.flags |= 2;\n popSuspenseHandler(workInProgress);\n workInProgress.memoizedState = null;\n return current;\n}\nfunction updateActivityComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n didSuspend = 0 !== (workInProgress.flags & 128);\n workInProgress.flags &= -129;\n if (null === current) {\n if (isHydrating) {\n if (\"hidden\" === nextProps.mode)\n return (\n (current = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.lanes = 536870912),\n bailoutOffscreenComponent(null, current)\n );\n pushDehydratedActivitySuspenseHandler(workInProgress);\n (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" === current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n workInProgress.lanes = 536870912;\n return null;\n }\n return mountActivityChildren(workInProgress, nextProps);\n }\n var prevState = current.memoizedState;\n if (null !== prevState) {\n var dehydrated = prevState.dehydrated;\n pushDehydratedActivitySuspenseHandler(workInProgress);\n if (didSuspend)\n if (workInProgress.flags & 256)\n (workInProgress.flags &= -257),\n (workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n ));\n else if (null !== workInProgress.memoizedState)\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null);\n else throw Error(formatProdErrorMessage(558));\n else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (didSuspend = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || didSuspend)\n ) {\n nextProps = workInProgressRoot;\n if (\n null !== nextProps &&\n ((dehydrated = getBumpedLaneForHydration(nextProps, renderLanes)),\n 0 !== dehydrated && dehydrated !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = dehydrated),\n enqueueConcurrentRenderForLane(current, dehydrated),\n scheduleUpdateOnFiber(nextProps, current, dehydrated),\n SelectiveHydrationException)\n );\n renderDidSuspendDelayIfPossible();\n workInProgress = retryActivityComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n (current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(dehydrated.nextSibling)),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\n (workInProgress = mountActivityChildren(workInProgress, nextProps)),\n (workInProgress.flags |= 4096);\n return workInProgress;\n }\n current = createWorkInProgress(current.child, {\n mode: nextProps.mode,\n children: nextProps.children\n });\n current.ref = workInProgress.ref;\n workInProgress.child = current;\n current.return = workInProgress;\n return current;\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 (current = nextHydratableInstance)\n ? ((current = canHydrateHydrationBoundary(\n current,\n rootOrSingletonContext\n )),\n (current = null !== current && \"&\" !== current.data ? current : null),\n null !== current &&\n ((workInProgress.memoizedState = {\n dehydrated: current,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912,\n hydrationErrors: null\n }),\n (renderLanes = createFiberFromDehydratedFragment(current)),\n (renderLanes.return = workInProgress),\n (workInProgress.child = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null)))\n : (current = null);\n if (null === current) throw throwOnHydrationMismatch(workInProgress);\n isSuspenseInstanceFallback(current)\n ? (workInProgress.lanes = 32)\n : (workInProgress.lanes = 536870912);\n return null;\n }\n var nextPrimaryChildren = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextPrimaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextPrimaryChildren },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.sibling = nextProps),\n (workInProgress.child = nextPrimaryChildren),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(null, nextProps)\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n }\n var prevState = current.memoizedState;\n if (\n null !== prevState &&\n ((nextPrimaryChildren = prevState.dehydrated), null !== nextPrimaryChildren)\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 (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n showFallback\n )),\n (nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2),\n (nextProps.return = workInProgress),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\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 = bailoutOffscreenComponent(null, nextProps)));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n isSuspenseInstanceFallback(nextPrimaryChildren))\n ) {\n JSCompiler_temp =\n nextPrimaryChildren.nextSibling &&\n nextPrimaryChildren.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 = getBumpedLaneForHydration(JSCompiler_temp, renderLanes)),\n 0 !== nextProps && nextProps !== prevState.retryLane)\n )\n throw (\n ((prevState.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n isSuspenseInstancePending(nextPrimaryChildren) ||\n renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n isSuspenseInstancePending(nextPrimaryChildren)\n ? ((workInProgress.flags |= 192),\n (workInProgress.child = current.child),\n (workInProgress = null))\n : ((current = prevState.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextPrimaryChildren.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n restoreSuspendedTreeContext(workInProgress, current),\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 (nextPrimaryChildren = nextProps.fallback),\n (showFallback = workInProgress.mode),\n (prevState = current.child),\n (digest = prevState.sibling),\n (nextProps = createWorkInProgress(prevState, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags = prevState.subtreeFlags & 65011712),\n null !== digest\n ? (nextPrimaryChildren = createWorkInProgress(\n digest,\n nextPrimaryChildren\n ))\n : ((nextPrimaryChildren = createFiberFromFragment(\n nextPrimaryChildren,\n showFallback,\n renderLanes,\n null\n )),\n (nextPrimaryChildren.flags |= 2)),\n (nextPrimaryChildren.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = nextPrimaryChildren),\n (workInProgress.child = nextProps),\n bailoutOffscreenComponent(null, nextProps),\n (nextProps = workInProgress.child),\n (nextPrimaryChildren = current.child.memoizedState),\n null === nextPrimaryChildren\n ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes))\n : ((showFallback = nextPrimaryChildren.cachePool),\n null !== showFallback\n ? ((prevState = CacheContext._currentValue),\n (showFallback =\n showFallback.parent !== prevState\n ? { parent: prevState, pool: prevState }\n : showFallback))\n : (showFallback = getSuspendedCache()),\n (nextPrimaryChildren = {\n baseLanes: nextPrimaryChildren.baseLanes | renderLanes,\n cachePool: showFallback\n })),\n (nextProps.memoizedState = nextPrimaryChildren),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n bailoutOffscreenComponent(current.child, 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 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 treeForkCount\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 treeForkCount: treeForkCount\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 (renderState.treeForkCount = treeForkCount));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n nextProps = nextProps.children;\n var suspenseContext = suspenseStackCursor.current,\n shouldForceFallback = 0 !== (suspenseContext & 2);\n shouldForceFallback\n ? ((suspenseContext = (suspenseContext & 1) | 2),\n (workInProgress.flags |= 128))\n : (suspenseContext &= 1);\n push(suspenseStackCursor, suspenseContext);\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n nextProps = isHydrating ? treeForkCount : 0;\n if (!shouldForceFallback && 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 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 nextProps\n );\n break;\n case \"backwards\":\n case \"unstable_legacy-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 nextProps\n );\n break;\n case \"together\":\n initSuspenseListRenderState(\n workInProgress,\n !1,\n null,\n null,\n void 0,\n nextProps\n );\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 31:\n if (null !== workInProgress.memoizedState)\n return (\n (workInProgress.flags |= 128),\n pushDehydratedActivitySuspenseHandler(workInProgress),\n null\n );\n break;\n case 13:\n var state$102 = workInProgress.memoizedState;\n if (null !== state$102) {\n if (null !== state$102.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$102 = 0 !== (renderLanes & workInProgress.childLanes);\n state$102 ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state$102 = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state$102)\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$102) break;\n else return null;\n case 22:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n )\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 var props = workInProgress.pendingProps;\n current = resolveLazy(workInProgress.elementType);\n workInProgress.type = current;\n if (\"function\" === typeof current)\n shouldConstruct(current)\n ? ((props = resolveClassComponentProps(current, props)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n )));\n else {\n if (void 0 !== current && null !== current) {\n var $$typeof = current.$$typeof;\n if ($$typeof === REACT_FORWARD_REF_TYPE) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n } else if ($$typeof === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n current,\n props,\n renderLanes\n );\n break a;\n }\n }\n workInProgress = getComponentNameFromType(current) || current;\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 (props = workInProgress.type),\n ($$typeof = resolveClassComponentProps(\n props,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n props,\n $$typeof,\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 props = workInProgress.pendingProps;\n var prevState = workInProgress.memoizedState;\n $$typeof = prevState.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, props, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n props = nextState.cache;\n pushProvider(workInProgress, CacheContext, props);\n props !== prevState.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n props = nextState.element;\n if (prevState.isDehydrated)\n if (\n ((prevState = {\n element: props,\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 props,\n renderLanes\n );\n break a;\n } else if (props !== $$typeof) {\n $$typeof = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError($$typeof);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n props,\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 props,\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 (props === $$typeof) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, props, renderLanes);\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 (props = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (props[internalInstanceKey] = workInProgress),\n (props[internalPropsKey] = current),\n setInitialProperties(props, renderLanes, current),\n markNodeAsHoistable(props),\n (workInProgress.stateNode = props))\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 ((props = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n ($$typeof = nextHydratableInstance),\n isSingletonScope(workInProgress.type)\n ? ((previousHydratableOnEnteringScopedSingleton = $$typeof),\n (nextHydratableInstance = getNextHydratable(props.firstChild)))\n : (nextHydratableInstance = $$typeof)),\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 (($$typeof = props = nextHydratableInstance))\n (props = canHydrateInstance(\n props,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== props\n ? ((workInProgress.stateNode = props),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(props.firstChild)),\n (rootOrSingletonContext = !1),\n ($$typeof = !0))\n : ($$typeof = !1);\n $$typeof || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n $$typeof = workInProgress.type;\n prevState = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n props = prevState.children;\n shouldSetTextContent($$typeof, prevState)\n ? (props = null)\n : null !== nextState &&\n shouldSetTextContent($$typeof, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n (($$typeof = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = $$typeof));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, props, 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 (props = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n props,\n renderLanes\n ))\n : reconcileChildren(current, workInProgress, props, renderLanes),\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 (props = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, props.value),\n reconcileChildren(current, workInProgress, props.children, renderLanes),\n workInProgress.child\n );\n case 9:\n return (\n ($$typeof = workInProgress.type._context),\n (props = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n ($$typeof = readContext($$typeof)),\n (props = props($$typeof)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, props, 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 updateActivityComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(\n current,\n workInProgress,\n renderLanes,\n workInProgress.pendingProps\n );\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (props = readContext(CacheContext)),\n null === current\n ? (($$typeof = peekCacheFromPool()),\n null === $$typeof &&\n (($$typeof = workInProgressRoot),\n (prevState = createCache()),\n ($$typeof.pooledCache = prevState),\n prevState.refCount++,\n null !== prevState && ($$typeof.pooledCacheLanes |= renderLanes),\n ($$typeof = prevState)),\n (workInProgress.memoizedState = { parent: props, cache: $$typeof }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, $$typeof))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n ($$typeof = current.memoizedState),\n (prevState = workInProgress.memoizedState),\n $$typeof.parent !== props\n ? (($$typeof = { parent: props, cache: props }),\n (workInProgress.memoizedState = $$typeof),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n $$typeof),\n pushProvider(workInProgress, CacheContext, props))\n : ((props = prevState.cache),\n pushProvider(workInProgress, CacheContext, props),\n props !== $$typeof.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 preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n oldProps,\n newProps,\n renderLanes\n) {\n if ((type = 0 !== (workInProgress.mode & 32))) type = !1;\n if (type) {\n if (\n ((workInProgress.flags |= 16777216),\n (renderLanes & 335544128) === renderLanes)\n )\n if (workInProgress.stateNode.complete) workInProgress.flags |= 8192;\n else if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n } else workInProgress.flags &= -16777217;\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 if (shouldRemainOnPreviousScreen()) workInProgress.flags |= 8192;\n else\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\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$106 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$106 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$106\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$106.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$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags & 65011712),\n (subtreeFlags |= child$107.flags & 65011712),\n (child$107.return = completedWork),\n (child$107 = child$107.sibling);\n else\n for (child$107 = completedWork.child; null !== child$107; )\n (newChildLanes |= child$107.lanes | child$107.childLanes),\n (subtreeFlags |= child$107.subtreeFlags),\n (subtreeFlags |= child$107.flags),\n (child$107.return = completedWork),\n (child$107 = child$107.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 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 var type = workInProgress.type,\n nextResource = workInProgress.memoizedState;\n null === current\n ? (markUpdate(workInProgress),\n null !== nextResource\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n null,\n newProps,\n renderLanes\n )))\n : nextResource\n ? nextResource !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, nextResource))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : ((current = current.memoizedProps),\n current !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n type,\n current,\n newProps,\n renderLanes\n ));\n return null;\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n 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 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 nextResource = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, nextResource);\n else {\n var ownerDocument = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (nextResource) {\n case 1:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case 2:\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n default:\n switch (type) {\n case \"svg\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/2000/svg\",\n type\n );\n break;\n case \"math\":\n nextResource = ownerDocument.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n type\n );\n break;\n case \"script\":\n nextResource = ownerDocument.createElement(\"div\");\n nextResource.innerHTML = \"<script>\\x3c/script>\";\n nextResource = nextResource.removeChild(\n nextResource.firstChild\n );\n break;\n case \"select\":\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(\"select\", {\n is: newProps.is\n })\n : ownerDocument.createElement(\"select\");\n newProps.multiple\n ? (nextResource.multiple = !0)\n : newProps.size && (nextResource.size = newProps.size);\n break;\n default:\n nextResource =\n \"string\" === typeof newProps.is\n ? ownerDocument.createElement(type, { is: newProps.is })\n : ownerDocument.createElement(type);\n }\n }\n nextResource[internalInstanceKey] = workInProgress;\n nextResource[internalPropsKey] = newProps;\n a: for (\n ownerDocument = workInProgress.child;\n null !== ownerDocument;\n\n ) {\n if (5 === ownerDocument.tag || 6 === ownerDocument.tag)\n nextResource.appendChild(ownerDocument.stateNode);\n else if (\n 4 !== ownerDocument.tag &&\n 27 !== ownerDocument.tag &&\n null !== ownerDocument.child\n ) {\n ownerDocument.child.return = ownerDocument;\n ownerDocument = ownerDocument.child;\n continue;\n }\n if (ownerDocument === workInProgress) break a;\n for (; null === ownerDocument.sibling; ) {\n if (\n null === ownerDocument.return ||\n ownerDocument.return === workInProgress\n )\n break a;\n ownerDocument = ownerDocument.return;\n }\n ownerDocument.sibling.return = ownerDocument.return;\n ownerDocument = ownerDocument.sibling;\n }\n workInProgress.stateNode = nextResource;\n a: switch (\n (setInitialProperties(nextResource, type, newProps), type)\n ) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n newProps = !!newProps.autoFocus;\n break a;\n case \"img\":\n newProps = !0;\n break a;\n default:\n newProps = !1;\n }\n newProps && markUpdate(workInProgress);\n }\n }\n bubbleProperties(workInProgress);\n preloadInstanceAndSuspendIfNeeded(\n workInProgress,\n workInProgress.type,\n null === current ? null : current.memoizedProps,\n workInProgress.pendingProps,\n renderLanes\n );\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, !0);\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 31:\n renderLanes = workInProgress.memoizedState;\n if (null === current || null !== current.memoizedState) {\n newProps = popHydrationState(workInProgress);\n if (null !== renderLanes) {\n if (null === current) {\n if (!newProps) throw Error(formatProdErrorMessage(318));\n current = workInProgress.memoizedState;\n current = null !== current ? current.dehydrated : null;\n if (!current) throw Error(formatProdErrorMessage(557));\n current[internalInstanceKey] = workInProgress;\n } else\n resetHydrationState(),\n 0 === (workInProgress.flags & 128) &&\n (workInProgress.memoizedState = null),\n (workInProgress.flags |= 4);\n bubbleProperties(workInProgress);\n current = !1;\n } else\n (renderLanes = upgradeHydrationErrorsToRecoverable()),\n null !== current &&\n null !== current.memoizedState &&\n (current.memoizedState.hydrationErrors = renderLanes),\n (current = !0);\n if (!current) {\n if (workInProgress.flags & 256)\n return popSuspenseHandler(workInProgress), workInProgress;\n popSuspenseHandler(workInProgress);\n return null;\n }\n if (0 !== (workInProgress.flags & 128))\n throw Error(formatProdErrorMessage(558));\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 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 (nextResource = null),\n null !== newProps.memoizedState &&\n null !== newProps.memoizedState.cachePool &&\n (nextResource = newProps.memoizedState.cachePool.pool),\n nextResource !== type && (newProps.flags |= 2048));\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 newProps = workInProgress.memoizedState;\n if (null === newProps) return bubbleProperties(workInProgress), null;\n type = 0 !== (workInProgress.flags & 128);\n nextResource = newProps.rendering;\n if (null === nextResource)\n if (type) cutOffTailIfNeeded(newProps, !1);\n else {\n if (\n 0 !== workInProgressRootExitStatus ||\n (null !== current && 0 !== (current.flags & 128))\n )\n for (current = workInProgress.child; null !== current; ) {\n nextResource = findFirstSuspended(current);\n if (null !== nextResource) {\n workInProgress.flags |= 128;\n cutOffTailIfNeeded(newProps, !1);\n current = nextResource.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 isHydrating &&\n pushTreeFork(workInProgress, newProps.treeForkCount);\n return workInProgress.child;\n }\n current = current.sibling;\n }\n null !== newProps.tail &&\n now() > workInProgressRootRenderTargetTime &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n }\n else {\n if (!type)\n if (\n ((current = findFirstSuspended(nextResource)), null !== current)\n ) {\n if (\n ((workInProgress.flags |= 128),\n (type = !0),\n (current = current.updateQueue),\n (workInProgress.updateQueue = current),\n scheduleRetryEffect(workInProgress, current),\n cutOffTailIfNeeded(newProps, !0),\n null === newProps.tail &&\n \"hidden\" === newProps.tailMode &&\n !nextResource.alternate &&\n !isHydrating)\n )\n return bubbleProperties(workInProgress), null;\n } else\n 2 * now() - newProps.renderingStartTime >\n workInProgressRootRenderTargetTime &&\n 536870912 !== renderLanes &&\n ((workInProgress.flags |= 128),\n (type = !0),\n cutOffTailIfNeeded(newProps, !1),\n (workInProgress.lanes = 4194304));\n newProps.isBackwards\n ? ((nextResource.sibling = workInProgress.child),\n (workInProgress.child = nextResource))\n : ((current = newProps.last),\n null !== current\n ? (current.sibling = nextResource)\n : (workInProgress.child = nextResource),\n (newProps.last = nextResource));\n }\n if (null !== newProps.tail)\n return (\n (current = newProps.tail),\n (newProps.rendering = current),\n (newProps.tail = current.sibling),\n (newProps.renderingStartTime = now()),\n (current.sibling = null),\n (renderLanes = suspenseStackCursor.current),\n push(\n suspenseStackCursor,\n type ? (renderLanes & 1) | 2 : renderLanes & 1\n ),\n isHydrating && pushTreeFork(workInProgress, newProps.treeForkCount),\n current\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 31:\n if (null !== workInProgress.memoizedState) {\n popSuspenseHandler(workInProgress);\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 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 31:\n null !== interruptedWork.memoizedState &&\n popSuspenseHandler(interruptedWork);\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$140) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$140);\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 & 1028) && 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 if (\n 0 !== (root & 4) &&\n ((root = firstChild.updateQueue),\n (root = null !== root ? root.events : null),\n null !== root)\n )\n for (\n JSCompiler_temp = 0;\n JSCompiler_temp < root.length;\n JSCompiler_temp++\n )\n (anchorOffset = root[JSCompiler_temp]),\n (anchorOffset.ref.impl = anchorOffset.nextImpl);\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 );\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$139) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$139\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 31:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitActivityHydrationCallbacks(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 clearHydrationBoundary(\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 : clearHydrationBoundary(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 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 commitActivityHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState), null !== finishedRoot))\n ) {\n finishedRoot = finishedRoot.dehydrated;\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\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 31:\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 if (!retryCache.has(wakeable)) {\n retryCache.add(wakeable);\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n wakeable.then(retry, retry);\n }\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 & 13886)\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 31:\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 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 (18 === root.tag) {\n if (null === current) {\n wasHidden = root;\n try {\n var instance = wasHidden.stateNode;\n hoistableRoot\n ? hideOrUnhideDehydratedBoundary(instance, !0)\n : hideOrUnhideDehydratedBoundary(wasHidden.stateNode, !1);\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$141 = hostParentFiber.stateNode;\n hostParentFiber.flags & 32 &&\n (setTextContent(parent$141, \"\"), (hostParentFiber.flags &= -33));\n var before$142 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$142, parent$141);\n break;\n case 3:\n case 4:\n var parent$143 = hostParentFiber.stateNode.containerInfo,\n before$144 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$144,\n parent$143\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 31:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitActivityHydrationCallbacks(finishedRoot, finishedWork);\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 31:\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) || !1\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 &&\n (0 !== (parentFiber.subtreeFlags & 10256) || !1);\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(\n parentFiber,\n committedLanes,\n suspendedState\n) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(\n parentFiber,\n committedLanes,\n suspendedState\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(\n fiber,\n committedLanes,\n suspendedState\n) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n suspendedState,\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\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(\n fiber,\n committedLanes,\n suspendedState\n ),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n ));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(\n fiber,\n committedLanes,\n suspendedState\n );\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 cacheSignal: function () {\n return readContext(CacheContext).controller.signal;\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 globalMostRecentTransitionTime = 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 return 0 !== (executionContext & 2) && 0 !== workInProgressRootRenderLanes\n ? workInProgressRootRenderLanes & -workInProgressRootRenderLanes\n : null !== ReactSharedInternals.T\n ? requestTransitionLane()\n : resolveUpdatePriority();\n}\nfunction requestDeferredLane() {\n if (0 === workInProgressDeferredLane)\n if (0 === (workInProgressRootRenderLanes & 536870912) || isHydrating) {\n var lane = nextTransitionDeferredLane;\n nextTransitionDeferredLane <<= 1;\n 0 === (nextTransitionDeferredLane & 3932160) &&\n (nextTransitionDeferredLane = 262144);\n workInProgressDeferredLane = lane;\n } else workInProgressDeferredLane = 536870912;\n lane = suspenseHandlerStackCursor.current;\n null !== lane && (lane.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 & 127) &&\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 pendingEffectsLanes = lanes;\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 \"Throttled\",\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 null,\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 suspendedCommitReason = {\n stylesheets: null,\n count: 0,\n imgCount: 0,\n imgBytes: 0,\n suspenseyImages: [],\n waitingForImages: !0,\n waitingForViewTransition: !1,\n unsuspend: noop$1\n };\n accumulateSuspenseyCommitOnFiber(\n finishedWork,\n lanes,\n suspendedCommitReason\n );\n var timeoutOffset =\n (lanes & 62914560) === lanes\n ? globalMostRecentFallbackTime - now()\n : (lanes & 4194048) === lanes\n ? globalMostRecentTransitionTime - now()\n : 0;\n timeoutOffset = waitForCommitToBeReady(\n suspendedCommitReason,\n timeoutOffset\n );\n if (null !== timeoutOffset) {\n pendingEffectsLanes = lanes;\n root.cancelPendingCommit = timeoutOffset(\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 suspendedCommitReason,\n null,\n completedRenderStartTime,\n completedRenderEndTime\n )\n );\n markRootSuspended(root, lanes, spawnedLane, !didSkipSuspendedSiblings);\n return;\n }\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$6 = 31 - clz32(lanes),\n lane = 1 << index$6;\n didAttemptEntireTree[index$6] = -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$1 = null),\n (thenableIndexCounter$1 = 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 pendingEffectsLanes = 0;\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$4 = 31 - clz32(allEntangledLanes),\n lane = 1 << index$4;\n lanes |= root[index$4];\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 shouldRemainOnPreviousScreen() {\n var handler = suspenseHandlerStackCursor.current;\n return null === handler\n ? !0\n : (workInProgressRootRenderLanes & 4194048) ===\n workInProgressRootRenderLanes\n ? null === shellBoundary\n ? !0\n : !1\n : (workInProgressRootRenderLanes & 62914560) ===\n workInProgressRootRenderLanes ||\n 0 !== (workInProgressRootRenderLanes & 536870912)\n ? handler === shellBoundary\n : !1;\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$165) {\n handleThrow(root, thrownValue$165);\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 (\n resource\n ? preloadResource(resource)\n : hostFiber.stateNode.complete\n ) {\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$167) {\n handleThrow(root, thrownValue$167);\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$1 = null;\n thenableIndexCounter$1 = 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();\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 & 261930) && 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() {\n flushMutationEffects();\n flushLayoutEffects();\n flushSpawnedWork();\n return flushPassiveEffects();\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 31:\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$170 = firstScheduledRoot; null !== root$170; ) {\n if (!onlyLegacy)\n if (0 !== syncTransitionLanes) {\n var pendingLanes = root$170.pendingLanes;\n if (0 === pendingLanes) var JSCompiler_inline_result = 0;\n else {\n var suspendedLanes = root$170.suspendedLanes,\n pingedLanes = root$170.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$170, JSCompiler_inline_result));\n } else\n (JSCompiler_inline_result = workInProgressRootRenderLanes),\n (JSCompiler_inline_result = getNextLanes(\n root$170,\n root$170 === workInProgressRoot ? JSCompiler_inline_result : 0,\n null !== root$170.cancelPendingCommit ||\n -1 !== root$170.timeoutHandle\n )),\n 0 === (JSCompiler_inline_result & 3) ||\n checkIfRootIsPrerendering(root$170, JSCompiler_inline_result) ||\n ((didPerformSomeWork = !0),\n performSyncWorkOnRoot(root$170, JSCompiler_inline_result));\n root$170 = root$170.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 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 (0 !== pendingEffectsStatus && 5 !== pendingEffectsStatus) ||\n flushSyncWorkAcrossRoots_impl(syncTransitionLanes, !1);\n 0 !== currentEventTransitionLane && (currentEventTransitionLane = 0);\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$5 = 31 - clz32(lanes),\n lane = 1 << index$5,\n expirationTime = expirationTimes[index$5];\n if (-1 === expirationTime) {\n if (0 === (lane & suspendedLanes) || 0 !== (lane & pingedLanes))\n expirationTimes[index$5] = 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() && 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 if (0 === currentEventTransitionLane) {\n var actionScopeLane = currentEntangledLane;\n 0 === actionScopeLane &&\n ((actionScopeLane = nextTransitionUpdateLane),\n (nextTransitionUpdateLane <<= 1),\n 0 === (nextTransitionUpdateLane & 261888) &&\n (nextTransitionUpdateLane = 256));\n currentEventTransitionLane = actionScopeLane;\n }\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_1577 = 0;\n i$jscomp$inline_1577 < simpleEventPluginEvents.length;\n i$jscomp$inline_1577++\n) {\n var eventName$jscomp$inline_1578 =\n simpleEventPluginEvents[i$jscomp$inline_1577],\n domEventName$jscomp$inline_1579 =\n eventName$jscomp$inline_1578.toLowerCase(),\n capitalizedEvent$jscomp$inline_1580 =\n eventName$jscomp$inline_1578[0].toUpperCase() +\n eventName$jscomp$inline_1578.slice(1);\n registerSimpleEvent(\n domEventName$jscomp$inline_1579,\n \"on\" + capitalizedEvent$jscomp$inline_1580\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 = getParent;\n reactEventName = SyntheticEventCtor;\n instance = reactEventType;\n lastHostComponent = 0;\n for (\n _instance = reactEventName;\n _instance;\n _instance = inCapturePhase(_instance)\n )\n lastHostComponent++;\n _instance = 0;\n for (var tempB = instance; tempB; tempB = inCapturePhase(tempB))\n _instance++;\n for (; 0 < lastHostComponent - _instance; )\n (reactEventName = inCapturePhase(reactEventName)),\n lastHostComponent--;\n for (; 0 < _instance - lastHostComponent; )\n (instance = inCapturePhase(instance)), _instance--;\n for (; lastHostComponent--; ) {\n if (\n reactEventName === instance ||\n (null !== instance && reactEventName === instance.alternate)\n ) {\n inCapturePhase = reactEventName;\n break b;\n }\n reactEventName = inCapturePhase(reactEventName);\n instance = inCapturePhase(instance);\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 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$184 = props[hasSrc];\n if (null != propValue$184)\n switch (hasSrc) {\n case \"name\":\n hasSrcSet = propValue$184;\n break;\n case \"type\":\n propValue = propValue$184;\n break;\n case \"checked\":\n checked = propValue$184;\n break;\n case \"defaultChecked\":\n defaultChecked = propValue$184;\n break;\n case \"value\":\n propKey = propValue$184;\n break;\n case \"defaultValue\":\n defaultValue = propValue$184;\n break;\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propValue$184)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(domElement, tag, hasSrc, propValue$184, props, null);\n }\n }\n initInput(\n domElement,\n propKey,\n defaultValue,\n checked,\n defaultChecked,\n propValue,\n hasSrcSet,\n !1\n );\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 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$184 in props)\n props.hasOwnProperty(propValue$184) &&\n ((hasSrc = props[propValue$184]),\n void 0 !== hasSrc &&\n setPropOnCustomElement(\n domElement,\n tag,\n propValue$184,\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$201 in nextProps) {\n var propKey = nextProps[propKey$201];\n lastProp = lastProps[propKey$201];\n if (\n nextProps.hasOwnProperty(propKey$201) &&\n (null != propKey || null != lastProp)\n )\n switch (propKey$201) {\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$201,\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$201 = 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$201 = 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$201\n ? updateOptions(domElement, !!lastProps, propKey$201, !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$201 = 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$201 = 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$201, propKey);\n return;\n case \"option\":\n for (var propKey$217 in lastProps)\n if (\n ((propKey$201 = lastProps[propKey$217]),\n lastProps.hasOwnProperty(propKey$217) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$217))\n )\n switch (propKey$217) {\n case \"selected\":\n domElement.selected = !1;\n break;\n default:\n setProp(\n domElement,\n tag,\n propKey$217,\n null,\n nextProps,\n propKey$201\n );\n }\n for (lastDefaultValue in nextProps)\n if (\n ((propKey$201 = nextProps[lastDefaultValue]),\n (propKey = lastProps[lastDefaultValue]),\n nextProps.hasOwnProperty(lastDefaultValue) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (lastDefaultValue) {\n case \"selected\":\n domElement.selected =\n propKey$201 &&\n \"function\" !== typeof propKey$201 &&\n \"symbol\" !== typeof propKey$201;\n break;\n default:\n setProp(\n domElement,\n tag,\n lastDefaultValue,\n propKey$201,\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$222 in lastProps)\n (propKey$201 = lastProps[propKey$222]),\n lastProps.hasOwnProperty(propKey$222) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$222) &&\n setProp(domElement, tag, propKey$222, null, nextProps, propKey$201);\n for (checked in nextProps)\n if (\n ((propKey$201 = nextProps[checked]),\n (propKey = lastProps[checked]),\n nextProps.hasOwnProperty(checked) &&\n propKey$201 !== propKey &&\n (null != propKey$201 || null != propKey))\n )\n switch (checked) {\n case \"children\":\n case \"dangerouslySetInnerHTML\":\n if (null != propKey$201)\n throw Error(formatProdErrorMessage(137, tag));\n break;\n default:\n setProp(\n domElement,\n tag,\n checked,\n propKey$201,\n nextProps,\n propKey\n );\n }\n return;\n default:\n if (isCustomElement(tag)) {\n for (var propKey$227 in lastProps)\n (propKey$201 = lastProps[propKey$227]),\n lastProps.hasOwnProperty(propKey$227) &&\n void 0 !== propKey$201 &&\n !nextProps.hasOwnProperty(propKey$227) &&\n setPropOnCustomElement(\n domElement,\n tag,\n propKey$227,\n void 0,\n nextProps,\n propKey$201\n );\n for (defaultChecked in nextProps)\n (propKey$201 = nextProps[defaultChecked]),\n (propKey = lastProps[defaultChecked]),\n !nextProps.hasOwnProperty(defaultChecked) ||\n propKey$201 === propKey ||\n (void 0 === propKey$201 && void 0 === propKey) ||\n setPropOnCustomElement(\n domElement,\n tag,\n defaultChecked,\n propKey$201,\n nextProps,\n propKey\n );\n return;\n }\n }\n for (var propKey$232 in lastProps)\n (propKey$201 = lastProps[propKey$232]),\n lastProps.hasOwnProperty(propKey$232) &&\n null != propKey$201 &&\n !nextProps.hasOwnProperty(propKey$232) &&\n setProp(domElement, tag, propKey$232, null, nextProps, propKey$201);\n for (lastProp in nextProps)\n (propKey$201 = nextProps[lastProp]),\n (propKey = lastProps[lastProp]),\n !nextProps.hasOwnProperty(lastProp) ||\n propKey$201 === propKey ||\n (null == propKey$201 && null == propKey) ||\n setProp(domElement, tag, lastProp, propKey$201, nextProps, propKey);\n}\nfunction isLikelyStaticResource(initiatorType) {\n switch (initiatorType) {\n case \"css\":\n case \"script\":\n case \"font\":\n case \"img\":\n case \"image\":\n case \"input\":\n case \"link\":\n return !0;\n default:\n return !1;\n }\n}\nfunction estimateBandwidth() {\n if (\"function\" === typeof performance.getEntriesByType) {\n for (\n var count = 0,\n bits = 0,\n resourceEntries = performance.getEntriesByType(\"resource\"),\n i = 0;\n i < resourceEntries.length;\n i++\n ) {\n var entry = resourceEntries[i],\n transferSize = entry.transferSize,\n initiatorType = entry.initiatorType,\n duration = entry.duration;\n if (transferSize && duration && isLikelyStaticResource(initiatorType)) {\n initiatorType = 0;\n duration = entry.responseEnd;\n for (i += 1; i < resourceEntries.length; i++) {\n var overlapEntry = resourceEntries[i],\n overlapStartTime = overlapEntry.startTime;\n if (overlapStartTime > duration) break;\n var overlapTransferSize = overlapEntry.transferSize,\n overlapInitiatorType = overlapEntry.initiatorType;\n overlapTransferSize &&\n isLikelyStaticResource(overlapInitiatorType) &&\n ((overlapEntry = overlapEntry.responseEnd),\n (initiatorType +=\n overlapTransferSize *\n (overlapEntry < duration\n ? 1\n : (duration - overlapStartTime) /\n (overlapEntry - overlapStartTime))));\n }\n --i;\n bits += (8 * (transferSize + initiatorType)) / (entry.duration / 1e3);\n count++;\n if (10 < count) break;\n }\n }\n if (0 < count) return bits / count / 1e6;\n }\n return navigator.connection &&\n ((count = navigator.connection.downlink), \"number\" === typeof count)\n ? count\n : 5;\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 clearHydrationBoundary(parentInstance, hydrationInstance) {\n var node = hydrationInstance,\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 || \"/&\" === node)) {\n if (0 === depth) {\n parentInstance.removeChild(nextNode);\n retryIfBlockedOn(hydrationInstance);\n return;\n }\n depth--;\n } else if (\n \"$\" === node ||\n \"$?\" === node ||\n \"$~\" === node ||\n \"$!\" === node ||\n \"&\" === node\n )\n depth++;\n else if (\"html\" === node)\n releaseSingletonInstance(parentInstance.ownerDocument.documentElement);\n else if (\"head\" === node) {\n node = parentInstance.ownerDocument.head;\n releaseSingletonInstance(node);\n for (var node$jscomp$0 = node.firstChild; node$jscomp$0; ) {\n var nextNode$jscomp$0 = node$jscomp$0.nextSibling,\n nodeName = node$jscomp$0.nodeName;\n node$jscomp$0[internalHoistableMarker] ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node$jscomp$0.rel.toLowerCase()) ||\n node.removeChild(node$jscomp$0);\n node$jscomp$0 = nextNode$jscomp$0;\n }\n } else\n \"body\" === node &&\n releaseSingletonInstance(parentInstance.ownerDocument.body);\n node = nextNode;\n } while (node);\n retryIfBlockedOn(hydrationInstance);\n}\nfunction hideOrUnhideDehydratedBoundary(suspenseInstance, isHidden) {\n var node = suspenseInstance;\n suspenseInstance = 0;\n do {\n var nextNode = node.nextSibling;\n 1 === node.nodeType\n ? isHidden\n ? ((node._stashedDisplay = node.style.display),\n (node.style.display = \"none\"))\n : ((node.style.display = node._stashedDisplay || \"\"),\n \"\" === node.getAttribute(\"style\") && node.removeAttribute(\"style\"))\n : 3 === node.nodeType &&\n (isHidden\n ? ((node._stashedText = node.nodeValue), (node.nodeValue = \"\"))\n : (node.nodeValue = node._stashedText || \"\"));\n if (nextNode && 8 === nextNode.nodeType)\n if (((node = nextNode.data), \"/$\" === node))\n if (0 === suspenseInstance) break;\n else suspenseInstance--;\n else\n (\"$\" !== node && \"$?\" !== node && \"$~\" !== node && \"$!\" !== node) ||\n suspenseInstance++;\n node = nextNode;\n } while (node);\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 canHydrateHydrationBoundary(instance, inRootOrSingleton) {\n for (; 8 !== 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 isSuspenseInstancePending(instance) {\n return \"$?\" === instance.data || \"$~\" === instance.data;\n}\nfunction isSuspenseInstanceFallback(instance) {\n return (\n \"$!\" === instance.data ||\n (\"$?\" === instance.data && \"loading\" !== instance.ownerDocument.readyState)\n );\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n var ownerDocument = instance.ownerDocument;\n if (\"$~\" === instance.data) instance._reactRetry = callback;\n else if (\"$?\" !== instance.data || \"loading\" !== 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 \"$~\" === nodeType ||\n \"&\" === nodeType ||\n \"F!\" === nodeType ||\n \"F\" === nodeType\n )\n break;\n if (\"/$\" === nodeType || \"/&\" === nodeType) return null;\n }\n }\n return node;\n}\nvar previousHydratableOnEnteringScopedSingleton = null;\nfunction getNextHydratableInstanceAfterHydrationBoundary(hydrationInstance) {\n hydrationInstance = hydrationInstance.nextSibling;\n for (var depth = 0; hydrationInstance; ) {\n if (8 === hydrationInstance.nodeType) {\n var data = hydrationInstance.data;\n if (\"/$\" === data || \"/&\" === data) {\n if (0 === depth)\n return getNextHydratable(hydrationInstance.nextSibling);\n depth--;\n } else\n (\"$\" !== data &&\n \"$!\" !== data &&\n \"$?\" !== data &&\n \"$~\" !== data &&\n \"&\" !== data) ||\n depth++;\n }\n hydrationInstance = hydrationInstance.nextSibling;\n }\n return null;\n}\nfunction getParentHydrationBoundary(targetInstance) {\n targetInstance = targetInstance.previousSibling;\n for (var depth = 0; targetInstance; ) {\n if (8 === targetInstance.nodeType) {\n var data = targetInstance.data;\n if (\n \"$\" === data ||\n \"$!\" === data ||\n \"$?\" === data ||\n \"$~\" === data ||\n \"&\" === data\n ) {\n if (0 === depth) return targetInstance;\n depth--;\n } else (\"/$\" !== data && \"/&\" !== 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$243 = getResourcesFromRoot(\n JSCompiler_inline_result\n ).hoistableStyles,\n resource$244 = styles$243.get(type);\n resource$244 ||\n ((JSCompiler_inline_result =\n JSCompiler_inline_result.ownerDocument || JSCompiler_inline_result),\n (resource$244 = {\n type: \"stylesheet\",\n instance: null,\n count: 0,\n state: { loading: 0, preload: null }\n }),\n styles$243.set(type, resource$244),\n (styles$243 = JSCompiler_inline_result.querySelector(\n getStylesheetSelectorFromKey(type)\n )) &&\n !styles$243._p &&\n ((resource$244.instance = styles$243),\n (resource$244.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$243 ||\n preloadStylesheet(\n JSCompiler_inline_result,\n type,\n pendingProps,\n resource$244.state\n )));\n if (currentProps && null === currentResource)\n throw Error(formatProdErrorMessage(528, \"\"));\n return resource$244;\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$249 = hoistableRoot.querySelector(\n getStylesheetSelectorFromKey(styleProps)\n );\n if (instance$249)\n return (\n (resource.state.loading |= 4),\n (resource.instance = instance$249),\n markNodeAsHoistable(instance$249),\n instance$249\n );\n instance = stylesheetPropsFromRawProps(props);\n (styleProps = preloadPropsMap.get(styleProps)) &&\n adoptPreloadPropsForStylesheet(instance, styleProps);\n instance$249 = (\n hoistableRoot.ownerDocument || hoistableRoot\n ).createElement(\"link\");\n markNodeAsHoistable(instance$249);\n var linkInstance = instance$249;\n linkInstance._p = new Promise(function (resolve, reject) {\n linkInstance.onload = resolve;\n linkInstance.onerror = reject;\n });\n setInitialProperties(instance$249, \"link\", instance);\n resource.state.loading |= 4;\n insertStylesheet(instance$249, props.precedence, hoistableRoot);\n return (resource.instance = instance$249);\n case \"script\":\n instance$249 = getScriptKey(props.src);\n if (\n (styleProps = hoistableRoot.querySelector(\n getScriptSelectorFromKey(instance$249)\n ))\n )\n return (\n (resource.instance = styleProps),\n markNodeAsHoistable(styleProps),\n styleProps\n );\n instance = props;\n if ((styleProps = preloadPropsMap.get(instance$249)))\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}\nfunction suspendResource(state, hoistableRoot, resource, props) {\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}\nvar estimatedBytesWithinLimit = 0;\nfunction waitForCommitToBeReady(state, timeoutOffset) {\n state.stylesheets &&\n 0 === state.count &&\n insertSuspendedStylesheets(state, state.stylesheets);\n return 0 < state.count || 0 < state.imgCount\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 + timeoutOffset);\n 0 < state.imgBytes &&\n 0 === estimatedBytesWithinLimit &&\n (estimatedBytesWithinLimit = 62500 * estimateBandwidth());\n var imgTimer = setTimeout(\n function () {\n state.waitingForImages = !1;\n if (\n 0 === state.count &&\n (state.stylesheets &&\n insertSuspendedStylesheets(state, state.stylesheets),\n state.unsuspend)\n ) {\n var unsuspend = state.unsuspend;\n state.unsuspend = null;\n unsuspend();\n }\n },\n (state.imgBytes > estimatedBytesWithinLimit ? 50 : 800) +\n timeoutOffset\n );\n state.unsuspend = commit;\n return function () {\n state.unsuspend = null;\n clearTimeout(stylesheetTimer);\n clearTimeout(imgTimer);\n };\n }\n : null;\n}\nfunction onUnsuspend() {\n this.count--;\n if (0 === this.count && (0 === this.imgCount || !this.waitingForImages))\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 onDefaultTransitionIndicator,\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 formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator\n) {\n containerInfo = new FiberRootNode(\n containerInfo,\n tag,\n hydrate,\n identifierPrefix,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n onDefaultTransitionIndicator,\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 || 31 === fiber.tag) {\n var root = enqueueConcurrentRenderForLane(fiber, 67108864);\n null !== root && scheduleUpdateOnFiber(root, fiber, 67108864);\n markRetryLaneIfNotHydrated(fiber, 67108864);\n }\n}\nfunction attemptHydrationAtCurrentPriority(fiber) {\n if (13 === fiber.tag || 31 === fiber.tag) {\n var lane = requestUpdateLane();\n lane = getBumpedLaneForHydrationByLane(lane);\n var root = enqueueConcurrentRenderForLane(fiber, lane);\n null !== root && scheduleUpdateOnFiber(root, fiber, lane);\n markRetryLaneIfNotHydrated(fiber, lane);\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 31:\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 (31 === tag) {\n targetNode = getActivityInstanceFromFiber(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 attemptHydrationAtCurrentPriority(nearestMounted);\n });\n return;\n }\n } else if (31 === targetInst) {\n if (\n ((targetInst = getActivityInstanceFromFiber(nearestMounted)),\n null !== targetInst)\n ) {\n queuedTarget.blockedOn = targetInst;\n runWithPriority(queuedTarget.priority, function () {\n attemptHydrationAtCurrentPriority(nearestMounted);\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 defaultOnDefaultTransitionIndicator() {\n function handleNavigate(event) {\n event.canIntercept &&\n \"react-transition\" === event.info &&\n event.intercept({\n handler: function () {\n return new Promise(function (resolve) {\n return (pendingResolve = resolve);\n });\n },\n focusReset: \"manual\",\n scroll: \"manual\"\n });\n }\n function handleNavigateComplete() {\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\n isCancelled || setTimeout(startFakeNavigation, 20);\n }\n function startFakeNavigation() {\n if (!isCancelled && !navigation.transition) {\n var currentEntry = navigation.currentEntry;\n currentEntry &&\n null != currentEntry.url &&\n navigation.navigate(currentEntry.url, {\n state: currentEntry.getState(),\n info: \"react-transition\",\n history: \"replace\"\n });\n }\n }\n if (\"object\" === typeof navigation) {\n var isCancelled = !1,\n pendingResolve = null;\n navigation.addEventListener(\"navigate\", handleNavigate);\n navigation.addEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.addEventListener(\"navigateerror\", handleNavigateComplete);\n setTimeout(startFakeNavigation, 100);\n return function () {\n isCancelled = !0;\n navigation.removeEventListener(\"navigate\", handleNavigate);\n navigation.removeEventListener(\"navigatesuccess\", handleNavigateComplete);\n navigation.removeEventListener(\"navigateerror\", handleNavigateComplete);\n null !== pendingResolve && (pendingResolve(), (pendingResolve = null));\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_1840 = React.version;\nif (\n \"19.2.6\" !==\n isomorphicReactPackageVersion$jscomp$inline_1840\n)\n throw Error(\n formatProdErrorMessage(\n 527,\n isomorphicReactPackageVersion$jscomp$inline_1840,\n \"19.2.6\"\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_2347 = {\n bundleType: 0,\n version: \"19.2.6\",\n rendererPackageName: \"react-dom\",\n currentDispatcherRef: ReactSharedInternals,\n reconcilerVersion: \"19.2.6\"\n};\nif (\"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) {\n var hook$jscomp$inline_2348 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (\n !hook$jscomp$inline_2348.isDisabled &&\n hook$jscomp$inline_2348.supportsFiber\n )\n try {\n (rendererID = hook$jscomp$inline_2348.inject(\n internals$jscomp$inline_2347\n )),\n (injectedHook = hook$jscomp$inline_2348);\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 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 options = createFiberRoot(\n container,\n 1,\n !1,\n null,\n null,\n isStrictMode,\n identifierPrefix,\n null,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\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 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.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 formState,\n onUncaughtError,\n onCaughtError,\n onRecoverableError,\n defaultOnDefaultTransitionIndicator\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.2.6\";\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","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.mjs';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext, useContext, useMemo, createElement } from 'react';\n\nconst LucideContext = createContext({});\nfunction LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n}) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className]\n );\n return createElement(LucideContext.Provider, { value }, children);\n}\nconst useLucideContext = () => useContext(LucideContext);\n\nexport { LucideProvider, useLucideContext };\n//# sourceMappingURL=context.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.mjs';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { useLucideContext } from './context.mjs';\n\nconst Icon = forwardRef(\n ({ color, size, strokeWidth, absoluteStrokeWidth, className = \"\", children, iconNode, ...rest }, ref) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = \"currentColor\",\n className: contextClass = \"\"\n } = useLucideContext() ?? {};\n const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth;\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses(\"lucide\", contextClass, className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { toKebabCase } from './shared/src/utils/toKebabCase.mjs';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.mjs';\nimport Icon from './Icon.mjs';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }],\n [\"path\", { d: \"m19 12-7 7-7-7\", key: \"1idqje\" }]\n];\nconst ArrowDown = createLucideIcon(\"arrow-down\", __iconNode);\n\nexport { __iconNode, ArrowDown as default };\n//# sourceMappingURL=arrow-down.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]];\nconst ChevronRight = createLucideIcon(\"chevron-right\", __iconNode);\n\nexport { __iconNode, ChevronRight as default };\n//# sourceMappingURL=chevron-right.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\",\n key: \"1oefj6\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\n \"path\",\n { d: \"M10 12a1 1 0 0 0-1 1v1a1 1 0 0 1-1 1 1 1 0 0 1 1 1v1a1 1 0 0 0 1 1\", key: \"1oajmo\" }\n ],\n [\n \"path\",\n { d: \"M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1\", key: \"mpwhp6\" }\n ]\n];\nconst FileBraces = createLucideIcon(\"file-braces\", __iconNode);\n\nexport { __iconNode, FileBraces as default };\n//# sourceMappingURL=file-braces.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\",\n key: \"sc7q7i\"\n }\n ]\n];\nconst Funnel = createLucideIcon(\"funnel\", __iconNode);\n\nexport { __iconNode, Funnel as default };\n//# sourceMappingURL=funnel.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M12 16v-4\", key: \"1dtifu\" }],\n [\"path\", { d: \"M12 8h.01\", key: \"e9boi3\" }]\n];\nconst Info = createLucideIcon(\"info\", __iconNode);\n\nexport { __iconNode, Info as default };\n//# sourceMappingURL=info.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z\",\n key: \"e79jfc\"\n }\n ],\n [\"circle\", { cx: \"13.5\", cy: \"6.5\", r: \".5\", fill: \"currentColor\", key: \"1okk4w\" }],\n [\"circle\", { cx: \"17.5\", cy: \"10.5\", r: \".5\", fill: \"currentColor\", key: \"f64h9f\" }],\n [\"circle\", { cx: \"6.5\", cy: \"12.5\", r: \".5\", fill: \"currentColor\", key: \"qy21gx\" }],\n [\"circle\", { cx: \"8.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"fotxhn\" }]\n];\nconst Palette = createLucideIcon(\"palette\", __iconNode);\n\nexport { __iconNode, Palette as default };\n//# sourceMappingURL=palette.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"m21 21-4.34-4.34\", key: \"14j7rj\" }],\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }]\n];\nconst Search = createLucideIcon(\"search\", __iconNode);\n\nexport { __iconNode, Search as default };\n//# sourceMappingURL=search.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ],\n [\"path\", { d: \"M12 8v4\", key: \"1got3b\" }],\n [\"path\", { d: \"M12 16h.01\", key: \"1drbdi\" }]\n];\nconst ShieldAlert = createLucideIcon(\"shield-alert\", __iconNode);\n\nexport { __iconNode, ShieldAlert as default };\n//# sourceMappingURL=shield-alert.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst TriangleAlert = createLucideIcon(\"triangle-alert\", __iconNode);\n\nexport { __iconNode, TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 20h.01\", key: \"zekei9\" }],\n [\"path\", { d: \"M8.5 16.429a5 5 0 0 1 7 0\", key: \"1bycff\" }],\n [\"path\", { d: \"M5 12.859a10 10 0 0 1 5.17-2.69\", key: \"1dl1wf\" }],\n [\"path\", { d: \"M19 12.859a10 10 0 0 0-2.007-1.523\", key: \"4k23kn\" }],\n [\"path\", { d: \"M2 8.82a15 15 0 0 1 4.177-2.643\", key: \"1grhjp\" }],\n [\"path\", { d: \"M22 8.82a15 15 0 0 0-11.288-3.764\", key: \"z3jwby\" }],\n [\"path\", { d: \"m2 2 20 20\", key: \"1ooewy\" }]\n];\nconst WifiOff = createLucideIcon(\"wifi-off\", __iconNode);\n\nexport { __iconNode, WifiOff as default };\n//# sourceMappingURL=wifi-off.mjs.map\n","/**\n * @license lucide-react v1.14.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.mjs.map\n","import type { EventRow, Status } from \"@ahp-inspector/core\";\nimport type { EventKind } from \"@ahp-inspector/shared\";\n\nexport interface FilterState {\n direction: (\"c2s\" | \"s2c\")[];\n kind: EventKind[];\n method: string[];\n actionType: string[];\n session: string[];\n turn: string[];\n status: Status[];\n rowText: string;\n timeFrom: number | null;\n timeTo: number | null;\n}\n\nexport const EMPTY_FILTERS: FilterState = {\n direction: [],\n kind: [],\n method: [],\n actionType: [],\n session: [],\n turn: [],\n status: [],\n rowText: \"\",\n timeFrom: null,\n timeTo: null,\n};\n\nexport const APP_DEFAULT_FILTERS: FilterState = {\n ...EMPTY_FILTERS,\n method: [\"ping\"],\n};\n\nexport function isFiltersEmpty(f: FilterState): boolean {\n return (\n f.direction.length === 0 &&\n f.kind.length === 0 &&\n f.method.length === 0 &&\n f.actionType.length === 0 &&\n f.session.length === 0 &&\n f.turn.length === 0 &&\n f.status.length === 0 &&\n f.rowText.trim() === \"\" &&\n f.timeFrom === null &&\n f.timeTo === null\n );\n}\n\n/**\n * Returns true when the row passes ALL active filter dimensions.\n * Categorical arrays contain hidden values; an empty array leaves that dimension visible.\n */\nexport function applyFacets(row: EventRow, f: FilterState): boolean {\n if (f.direction.includes(row.dir as \"c2s\" | \"s2c\")) return false;\n if (f.kind.includes(row.kind)) return false;\n if (row.method !== null && f.method.includes(row.method)) return false;\n if (row.actionType !== null && f.actionType.includes(row.actionType)) return false;\n if (row.sessionId !== null && f.session.includes(row.sessionId)) return false;\n if (row.turnId !== null && f.turn.includes(row.turnId)) return false;\n if (f.status.includes(row.status)) return false;\n const rowText = f.rowText.trim().slice(0, 256).toLowerCase();\n if (rowText !== \"\") {\n const projectedText = [\n row.keyId,\n row.tsFmt,\n row.dir,\n row.kind,\n row.method,\n row.actionType,\n row.sessionId,\n row.sessionShort,\n row.turnId,\n row.turnShort,\n row.status,\n row.payloadPreview,\n row.summary,\n row.parseErrorReason,\n ]\n .filter((value): value is string => value !== null && value !== undefined)\n .join(\" \")\n .toLowerCase();\n if (!projectedText.includes(rowText)) return false;\n }\n if (f.timeFrom !== null && row.ts < f.timeFrom) return false;\n if (f.timeTo !== null && row.ts > f.timeTo) return false;\n return true;\n}\n","// Per-log UI preferences persisted to localStorage. Phase 4 D-18 / RESEARCH §6.3-6.4.\n// Local-first only — never persists log content, paths, or absolute identifiers.\n// Single storage key holds an LRU map keyed by opaque logKey (D-16).\n\nimport { APP_DEFAULT_FILTERS, type FilterState } from \"./filters.js\";\nimport type { GroupingMode } from \"./store.js\";\n\nconst STORAGE_KEY = \"ahp-log-prefs-v1\";\nconst MAX_ENTRIES = 50;\nconst MAX_GROUP_COLLAPSED = 1000;\n\nexport interface PerLogPrefs {\n v: 2;\n searchQuery: string;\n filters: FilterState;\n grouping: GroupingMode;\n /** Set serialized as array, capped at MAX_GROUP_COLLAPSED entries. */\n groupCollapsed: string[];\n selectedIdx: number | null;\n detailWidth: number;\n livePaused: boolean;\n}\n\ninterface StoredEntry extends PerLogPrefs {\n _writtenAt: number;\n}\ntype Storage = Record<string, unknown>;\n\nfunction readAll(): Storage {\n try {\n const raw = localStorage.getItem(STORAGE_KEY);\n if (!raw) return {};\n const parsed = JSON.parse(raw) as unknown;\n if (parsed && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n return parsed as Storage;\n }\n } catch {\n /* malformed → reset */\n }\n return {};\n}\n\nfunction writeAll(s: Storage): void {\n try {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(s));\n } catch {\n /* quota or unavailable — silent */\n }\n}\n\nfunction hasCommonFields(r: Record<string, unknown>): boolean {\n return (\n typeof r.searchQuery === \"string\" &&\n (r.grouping === \"none\" || r.grouping === \"session\" || r.grouping === \"session+turn\") &&\n Array.isArray(r.groupCollapsed) &&\n r.groupCollapsed.every((value) => typeof value === \"string\") &&\n (r.selectedIdx === null || typeof r.selectedIdx === \"number\") &&\n typeof r.detailWidth === \"number\" &&\n typeof r.livePaused === \"boolean\"\n );\n}\n\nfunction decodeV2Filters(value: unknown): FilterState | null {\n if (!value || typeof value !== \"object\") return null;\n const filters = value as Record<string, unknown>;\n const arrays = [\n filters.direction,\n filters.kind,\n filters.method,\n filters.actionType,\n filters.session,\n filters.turn,\n filters.status,\n ];\n if (!arrays.every((entry) => Array.isArray(entry))) return null;\n if (!arrays.every((entry) => entry.every((item) => typeof item === \"string\"))) return null;\n if (typeof filters.rowText !== \"string\") return null;\n if (filters.timeFrom !== null && typeof filters.timeFrom !== \"number\") return null;\n if (filters.timeTo !== null && typeof filters.timeTo !== \"number\") return null;\n return filters as unknown as FilterState;\n}\n\nfunction migrateV1Filters(value: unknown): FilterState {\n if (!value || typeof value !== \"object\") return APP_DEFAULT_FILTERS;\n const filters = value as Record<string, unknown>;\n\n // Helper: extract and validate legacy array field, or return default\n const extractFilterArray = <T extends string>(field: unknown, defaultValue: readonly T[]): T[] => {\n if (Array.isArray(field) && field.every((item) => typeof item === \"string\")) {\n return field as T[];\n }\n return [...defaultValue];\n };\n\n return {\n direction: extractFilterArray(filters.direction, APP_DEFAULT_FILTERS.direction),\n kind: extractFilterArray(filters.kind, APP_DEFAULT_FILTERS.kind),\n method: extractFilterArray(filters.method, APP_DEFAULT_FILTERS.method),\n actionType: extractFilterArray(filters.actionType, APP_DEFAULT_FILTERS.actionType),\n session: extractFilterArray(filters.session, APP_DEFAULT_FILTERS.session),\n turn: extractFilterArray(filters.turn, APP_DEFAULT_FILTERS.turn),\n status: extractFilterArray(filters.status, APP_DEFAULT_FILTERS.status),\n rowText: typeof filters.rowText === \"string\" ? filters.rowText : APP_DEFAULT_FILTERS.rowText,\n timeFrom: filters.timeFrom === null || typeof filters.timeFrom === \"number\" ? filters.timeFrom : null,\n timeTo: filters.timeTo === null || typeof filters.timeTo === \"number\" ? filters.timeTo : null,\n };\n}\n\nfunction decodePrefs(e: unknown): PerLogPrefs | null {\n if (!e || typeof e !== \"object\") return null;\n const r = e as Record<string, unknown>;\n if (!hasCommonFields(r)) return null;\n const filters = r.v === 2 ? decodeV2Filters(r.filters) : r.v === 1 ? migrateV1Filters(r.filters) : null;\n if (!filters) return null;\n return {\n v: 2,\n searchQuery: r.searchQuery as string,\n filters,\n grouping: r.grouping as GroupingMode,\n groupCollapsed: r.groupCollapsed as string[],\n selectedIdx: r.selectedIdx as number | null,\n detailWidth: r.detailWidth as number,\n livePaused: r.livePaused as boolean,\n };\n}\n\nexport function loadPerLogPrefs(logKey: string): PerLogPrefs | null {\n const all = readAll();\n return decodePrefs(all[logKey]);\n}\n\nexport function persistPerLogPrefs(logKey: string, prefs: PerLogPrefs): void {\n const all = readAll();\n const trimmed: PerLogPrefs = {\n ...prefs,\n groupCollapsed: prefs.groupCollapsed.slice(0, MAX_GROUP_COLLAPSED),\n };\n all[logKey] = { ...trimmed, _writtenAt: Date.now() } satisfies StoredEntry;\n // LRU evict to MAX_ENTRIES.\n const keys = Object.keys(all);\n if (keys.length > MAX_ENTRIES) {\n const sorted = keys\n .map((k) => {\n const entry = all[k];\n const writtenAt =\n entry && typeof entry === \"object\" && typeof (entry as Record<string, unknown>)._writtenAt === \"number\"\n ? ((entry as Record<string, unknown>)._writtenAt as number)\n : 0;\n return [k, writtenAt] as [string, number];\n })\n .sort((a, b) => a[1] - b[1]);\n const overflow = sorted.length - MAX_ENTRIES;\n for (let i = 0; i < overflow; i++) {\n const k = sorted[i]?.[0];\n if (k) delete all[k];\n }\n }\n writeAll(all);\n}\n\nexport function clearPerLogPrefs(logKey: string): void {\n const all = readAll();\n if (all[logKey]) {\n delete all[logKey];\n writeAll(all);\n }\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","export const DETAIL_MIN_WIDTH = 360;\nexport const DETAIL_DEFAULT_WIDTH = 420;\nexport const DETAIL_MAX_WIDTH = 720;\nexport const DETAIL_DESKTOP_BREAKPOINT = 1400;\nexport const DETAIL_KEYBOARD_STEP = 16;\n","import type { EventRow, LatencyBand, Status } from \"@ahp-inspector/core\";\nimport { create } from \"zustand\";\nimport {\n DETAIL_DEFAULT_WIDTH,\n DETAIL_MAX_WIDTH,\n DETAIL_MIN_WIDTH,\n} from \"../components/detail/detail-layout.js\";\nimport { APP_DEFAULT_FILTERS, type FilterState } from \"./filters.js\";\n\nexport type { FilterState } from \"./filters.js\";\n\nexport type GroupingMode = \"none\" | \"session\" | \"session+turn\";\nexport type SearchStatus = \"idle\" | \"searching\" | \"ready\" | \"error\";\n\nexport interface DetailData {\n idx: number;\n loading: boolean;\n error: string | null;\n event: unknown | null;\n pairEvent: unknown | null;\n latencyMs: number | null;\n status: Status | null;\n pairIdx: number | null;\n}\n\nexport type Connection = \"connecting\" | \"connected\" | \"disconnected\" | \"no-server\" | \"no-log\";\n\nexport interface MetaSummary {\n filename: string;\n eventCount: number;\n sessionCount: number;\n}\n\nexport interface PatchUpdate {\n idx: number;\n status: Status;\n latencyMs: number | null;\n latencyBand: LatencyBand | null;\n summary?: string;\n pairIdx?: number | null;\n}\n\nexport interface LoadProgress {\n phase: \"idle\" | \"loading\" | \"complete\";\n loadedRows: number;\n loadedBytes: number;\n totalBytes?: number;\n percent?: number;\n}\n\nexport interface StreamBacklog {\n queuedFrames: number;\n queuedRows: number;\n}\n\nconst IDLE_LOAD_PROGRESS: LoadProgress = {\n phase: \"idle\",\n loadedRows: 0,\n loadedBytes: 0,\n};\n\nconst EMPTY_STREAM_BACKLOG: StreamBacklog = {\n queuedFrames: 0,\n queuedRows: 0,\n};\n\nexport interface AppStoreState {\n rows: EventRow[];\n connection: Connection;\n selectedIdx: number | null;\n meta: MetaSummary | null;\n loadProgress: LoadProgress;\n streamBacklog: StreamBacklog;\n setRows(rows: EventRow[]): void;\n appendSnapshotRows(rows: EventRow[], from: number): void;\n appendRows(rows: EventRow[], from: number): void;\n applyPatch(updates: PatchUpdate[]): void;\n setLoadProgress(progress: LoadProgress): void;\n setStreamBacklog(backlog: StreamBacklog): void;\n setConnection(c: Connection): void;\n setMeta(m: MetaSummary | null): void;\n selectIdx(idx: number | null): void;\n clearSelection(): void;\n // Phase 3: search\n searchQuery: string;\n searchMatches: Set<number> | null;\n searchTotal: number;\n searchTruncated: boolean;\n searchStatus: SearchStatus;\n searchError: string | null;\n searchPopoverOpen: boolean;\n setSearchQuery(q: string): void;\n setSearchMatches(matches: number[] | null): void;\n setSearchPending(): void;\n setSearchResult(matches: number[], total: number, truncated: boolean): void;\n setSearchError(message: string): void;\n clearSearchResults(): void;\n setSearchPopoverOpen(open: boolean): void;\n // Phase 3: filters\n filters: FilterState;\n setFilters(f: FilterState): void;\n patchFilter<K extends keyof FilterState>(key: K, value: FilterState[K]): void;\n clearFilters(): void;\n // Phase 3: grouping\n grouping: GroupingMode;\n groupCollapsed: Set<string>;\n setGrouping(mode: GroupingMode): void;\n toggleGroupCollapsed(key: string): void;\n // Phase 3: detail panel\n selectedDetail: DetailData | null;\n detailWidth: number;\n setSelectedDetail(d: DetailData | null): void;\n setDetailWidth(px: number): void;\n // Phase 4: live tail\n livePaused: boolean;\n pendingBuffer: EventRow[];\n pendingNewCount: number;\n followLatest: boolean;\n lastWatchError: {\n code: \"read-error\" | \"watch-fatal\" | \"oversized-line\";\n message: string;\n } | null;\n logKey: string | null;\n rotationNotice: boolean;\n lastOpenRef: { kind: \"candidate\"; id: string } | { kind: \"path\"; path: string } | null;\n setLivePaused(p: boolean): void;\n clearPendingNewCount(): void;\n flushPendingBuffer(): void;\n setLastWatchError(\n e: {\n code: \"read-error\" | \"watch-fatal\" | \"oversized-line\";\n message: string;\n } | null,\n ): void;\n setLogKey(k: string | null): void;\n setRotationNotice(v: boolean): void;\n setLastOpenRef(\n ref: { kind: \"candidate\"; id: string } | { kind: \"path\"; path: string } | null,\n ): void;\n resetForRotation(): void;\n resetForLogSwitch(): void;\n}\n\nfunction patchRow(row: EventRow, update: PatchUpdate): EventRow {\n return {\n ...row,\n status: update.status,\n latencyMs: update.latencyMs,\n latencyBand: update.latencyBand,\n ...(update.summary !== undefined ? { summary: update.summary } : {}),\n ...(update.pairIdx !== undefined ? { pairIdx: update.pairIdx } : {}),\n };\n}\n\nfunction deriveSessionCount(rows: EventRow[]): number {\n const s = new Set<string>();\n for (const r of rows) if (r.sessionId) s.add(r.sessionId);\n return s.size;\n}\n\nexport const useAppStore = create<AppStoreState>((set) => ({\n rows: [],\n connection: \"connecting\",\n selectedIdx: null,\n meta: null,\n loadProgress: IDLE_LOAD_PROGRESS,\n streamBacklog: EMPTY_STREAM_BACKLOG,\n setRows: (rows) =>\n set((s) => ({\n rows,\n meta: s.meta\n ? { ...s.meta, eventCount: rows.length, sessionCount: deriveSessionCount(rows) }\n : s.meta,\n })),\n appendSnapshotRows: (newRows, from) =>\n set((s) => {\n const next = s.rows.slice();\n for (let i = 0; i < newRows.length; i++) {\n const row = newRows[i];\n if (row !== undefined) next[from + i] = row;\n }\n return {\n rows: next,\n meta: s.meta\n ? { ...s.meta, eventCount: next.length, sessionCount: deriveSessionCount(next) }\n : s.meta,\n };\n }),\n appendRows: (newRows, from) =>\n set((s) => {\n // Phase 4 D-13: while live-paused, incoming rows accumulate in a hidden\n // buffer + counter instead of mutating visible rows. NewEventsPill flushes\n // them when the user clicks \"Resume Following\".\n if (s.livePaused) {\n return {\n pendingBuffer: s.pendingBuffer.concat(newRows),\n pendingNewCount: s.pendingNewCount + newRows.length,\n };\n }\n const next = s.rows.slice();\n for (let i = 0; i < newRows.length; i++) {\n const row = newRows[i];\n if (row !== undefined) next[from + i] = row;\n }\n return {\n rows: next,\n meta: s.meta\n ? { ...s.meta, eventCount: next.length, sessionCount: deriveSessionCount(next) }\n : s.meta,\n };\n }),\n applyPatch: (updates) =>\n set((s) => {\n const next = s.rows.slice();\n const pendingNext = s.pendingBuffer.slice();\n for (const u of updates) {\n const prev = next[u.idx];\n if (prev) {\n next[u.idx] = patchRow(prev, u);\n }\n const pendingIndex = pendingNext.findIndex((row) => row.idx === u.idx);\n if (pendingIndex !== -1) {\n const pendingPrev = pendingNext[pendingIndex];\n if (pendingPrev) pendingNext[pendingIndex] = patchRow(pendingPrev, u);\n }\n }\n return { rows: next, pendingBuffer: pendingNext };\n }),\n setLoadProgress: (loadProgress) => set({ loadProgress }),\n setStreamBacklog: (streamBacklog) => set({ streamBacklog }),\n setConnection: (connection) => set({ connection }),\n setMeta: (meta) => set({ meta }),\n selectIdx: (selectedIdx) => set({ selectedIdx }),\n clearSelection: () => set({ selectedIdx: null }),\n // Phase 3 initial state\n searchQuery: \"\",\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"idle\",\n searchError: null,\n searchPopoverOpen: false,\n filters: APP_DEFAULT_FILTERS,\n grouping: \"none\",\n groupCollapsed: new Set<string>(),\n selectedDetail: null,\n detailWidth: DETAIL_DEFAULT_WIDTH,\n // Phase 3 actions\n setSearchQuery: (q) => set({ searchQuery: q }),\n setSearchMatches: (matches) => set({ searchMatches: matches !== null ? new Set(matches) : null }),\n setSearchPending: () => set({ searchStatus: \"searching\", searchError: null }),\n setSearchResult: (matches, total, truncated) =>\n set({\n searchMatches: new Set(matches),\n searchTotal: total,\n searchTruncated: truncated,\n searchStatus: \"ready\",\n searchError: null,\n }),\n setSearchError: (message) =>\n set({\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"error\",\n searchError: message,\n }),\n clearSearchResults: () =>\n set({\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"idle\",\n searchError: null,\n }),\n setSearchPopoverOpen: (open) => set({ searchPopoverOpen: open }),\n setFilters: (f) => set({ filters: f }),\n patchFilter: (key, value) => set((s) => ({ filters: { ...s.filters, [key]: value } })),\n clearFilters: () => set({ filters: APP_DEFAULT_FILTERS }),\n setGrouping: (mode) => set({ grouping: mode }),\n toggleGroupCollapsed: (key) =>\n set((s) => {\n const next = new Set(s.groupCollapsed);\n if (next.has(key)) next.delete(key);\n else next.add(key);\n return { groupCollapsed: next };\n }),\n setSelectedDetail: (d) => set({ selectedDetail: d }),\n setDetailWidth: (px) =>\n set({ detailWidth: Math.max(DETAIL_MIN_WIDTH, Math.min(DETAIL_MAX_WIDTH, px)) }),\n // Phase 4 initial state\n livePaused: false,\n pendingBuffer: [],\n pendingNewCount: 0,\n followLatest: true,\n lastWatchError: null,\n logKey: null,\n rotationNotice: false,\n lastOpenRef: null,\n // Phase 4 actions\n setLivePaused: (p) => set({ livePaused: p }),\n clearPendingNewCount: () => set({ pendingNewCount: 0 }),\n flushPendingBuffer: () =>\n set((s) => {\n if (s.pendingBuffer.length === 0) {\n return { pendingNewCount: 0 };\n }\n const next = s.rows.concat(s.pendingBuffer);\n return {\n rows: next,\n pendingBuffer: [],\n pendingNewCount: 0,\n meta: s.meta\n ? { ...s.meta, eventCount: next.length, sessionCount: deriveSessionCount(next) }\n : s.meta,\n };\n }),\n setLastWatchError: (e) => set({ lastWatchError: e }),\n setLogKey: (k) => set({ logKey: k }),\n setRotationNotice: (v) => set({ rotationNotice: v }),\n setLastOpenRef: (ref) => set({ lastOpenRef: ref }),\n resetForRotation: () =>\n set({\n rows: [],\n selectedIdx: null,\n selectedDetail: null,\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"idle\",\n searchError: null,\n pendingBuffer: [],\n pendingNewCount: 0,\n loadProgress: IDLE_LOAD_PROGRESS,\n streamBacklog: EMPTY_STREAM_BACKLOG,\n }),\n resetForLogSwitch: () =>\n set({\n rows: [],\n selectedIdx: null,\n selectedDetail: null,\n searchMatches: null,\n searchTotal: 0,\n searchTruncated: false,\n searchStatus: \"idle\",\n searchError: null,\n pendingBuffer: [],\n pendingNewCount: 0,\n loadProgress: IDLE_LOAD_PROGRESS,\n streamBacklog: EMPTY_STREAM_BACKLOG,\n meta: null,\n logKey: null,\n lastWatchError: null,\n rotationNotice: false,\n }),\n}));\n","// usePersistEffect — Phase 4 Plan 06 Task 3.\n// Hydrates per-log prefs on explicit baseline completion; persists relevant store changes\n// (debounced 250ms) keyed by store.logKey. Quota errors disable persistence\n// for the rest of the session (D-17/D-18).\n//\n// Naming: this module re-exports the underlying persistence module's\n// `loadPerLogPrefs` / `persistPerLogPrefs` under the plan-mandated aliases\n// `loadForLogKey` / `saveForLogKey` so call sites match UI-SPEC vocabulary.\n\nimport { useEffect, useRef } from \"react\";\nimport { APP_DEFAULT_FILTERS } from \"../state/filters.js\";\nimport {\n loadPerLogPrefs as loadForLogKey,\n type PerLogPrefs,\n persistPerLogPrefs as saveForLogKey,\n} from \"../state/persistence.js\";\nimport { useAppStore } from \"../state/store.js\";\n\nconst DEBOUNCE_MS = 250;\nconst MAX_GROUP_COLLAPSED = 1000;\n\nfunction buildPrefs(): PerLogPrefs {\n const s = useAppStore.getState();\n // FIFO trim: keep the most recent 1000 entries (insertion order in Set).\n const groupArr = Array.from(s.groupCollapsed);\n const trimmed =\n groupArr.length > MAX_GROUP_COLLAPSED\n ? groupArr.slice(groupArr.length - MAX_GROUP_COLLAPSED)\n : groupArr;\n return {\n v: 2,\n searchQuery: s.searchQuery,\n filters: s.filters,\n grouping: s.grouping,\n groupCollapsed: trimmed,\n selectedIdx: s.selectedIdx,\n detailWidth: s.detailWidth,\n livePaused: s.livePaused,\n };\n}\n\nexport function usePersistEffect(): void {\n // All mutable state lives in refs so React doesn't unmount/remount the\n // effect when the underlying store changes.\n const stateRef = useRef<{\n hydratedFor: string | null;\n disabled: boolean;\n debounceTimer: ReturnType<typeof setTimeout> | null;\n pendingSaveLogKey: string | null;\n lastLogKey: string | null;\n }>({\n hydratedFor: null,\n disabled: false,\n debounceTimer: null,\n pendingSaveLogKey: null,\n lastLogKey: null,\n });\n\n useEffect(() => {\n const ref = stateRef.current;\n\n function flushSave(logKey: string): void {\n if (ref.disabled) return;\n try {\n saveForLogKey(logKey, buildPrefs());\n } catch {\n ref.disabled = true;\n } finally {\n if (ref.debounceTimer) {\n clearTimeout(ref.debounceTimer);\n ref.debounceTimer = null;\n }\n ref.pendingSaveLogKey = null;\n }\n }\n\n function scheduleSave(logKey: string): void {\n if (ref.disabled) return;\n if (ref.debounceTimer) clearTimeout(ref.debounceTimer);\n ref.pendingSaveLogKey = logKey;\n ref.debounceTimer = setTimeout(() => {\n ref.debounceTimer = null;\n flushSave(logKey);\n }, DEBOUNCE_MS);\n }\n\n function hydrate(logKey: string, rowsLen: number): void {\n ref.hydratedFor = logKey;\n const stored = loadForLogKey(logKey);\n if (stored) {\n const s = useAppStore.getState();\n s.setFilters(stored.filters);\n s.setGrouping(stored.grouping);\n s.setSearchQuery(stored.searchQuery);\n s.clearSearchResults();\n s.setDetailWidth(stored.detailWidth);\n s.setLivePaused(stored.livePaused);\n useAppStore.setState({ groupCollapsed: new Set(stored.groupCollapsed) });\n if (\n stored.selectedIdx !== null &&\n stored.selectedIdx >= 0 &&\n stored.selectedIdx < rowsLen\n ) {\n s.selectIdx(stored.selectedIdx);\n }\n }\n }\n\n // Initialize tracking from current state and hydrate if baseline completion\n // was already observed before this effect mounted.\n {\n const init = useAppStore.getState();\n ref.lastLogKey = init.logKey;\n if (\n init.logKey &&\n init.loadProgress.phase === \"complete\" &&\n ref.hydratedFor !== init.logKey\n ) {\n hydrate(init.logKey, init.rows.length);\n }\n }\n\n const unsub = useAppStore.subscribe((curr, prev) => {\n const prevKey = ref.lastLogKey;\n const currKey = curr.logKey;\n\n // logKey switch — flush previous log's pending save synchronously\n // before tracking the new one, then reset per-log view state so the\n // new file starts fresh (the new file's stored prefs, if any, are\n // applied later by hydrate() on snapshot-end).\n if (prevKey && prevKey !== currKey) {\n if (ref.debounceTimer && ref.pendingSaveLogKey === prevKey) {\n flushSave(prevKey);\n }\n ref.hydratedFor = null;\n // Update lastLogKey BEFORE the reset writes so re-entrant subscribe\n // callbacks see prevKey === currKey and skip this branch.\n ref.lastLogKey = currKey;\n const s = useAppStore.getState();\n s.setFilters(APP_DEFAULT_FILTERS);\n s.setSearchQuery(\"\");\n s.clearSearchResults();\n s.setGrouping(\"none\");\n useAppStore.setState({ groupCollapsed: new Set<string>() });\n }\n ref.lastLogKey = currKey;\n\n // Progressive rows can arrive before the baseline is complete. Hydrate\n // only after the explicit lifecycle reaches complete for this logKey.\n if (currKey && curr.loadProgress.phase === \"complete\" && ref.hydratedFor !== currKey) {\n hydrate(currKey, curr.rows.length);\n return;\n }\n\n // After hydration, schedule a debounced save when persistable state changed.\n if (currKey && ref.hydratedFor === currKey) {\n const relevantChanged =\n prev.filters !== curr.filters ||\n prev.grouping !== curr.grouping ||\n prev.searchQuery !== curr.searchQuery ||\n prev.detailWidth !== curr.detailWidth ||\n prev.livePaused !== curr.livePaused ||\n prev.selectedIdx !== curr.selectedIdx ||\n prev.groupCollapsed !== curr.groupCollapsed;\n if (relevantChanged) scheduleSave(currKey);\n }\n });\n\n return () => {\n if (ref.pendingSaveLogKey) flushSave(ref.pendingSaveLogKey);\n else if (ref.debounceTimer) clearTimeout(ref.debounceTimer);\n unsub();\n };\n }, []);\n}\n","import type { EventRow } from \"@ahp-inspector/core\";\nimport { useDeferredValue, useMemo } from \"react\";\nimport { applyFacets, type FilterState, isFiltersEmpty } from \"./filters.js\";\nimport { type GroupingMode, useAppStore } from \"./store.js\";\n\nexport type VirtualItem =\n | { kind: \"row\"; rowIdx: number }\n | {\n kind: \"header\";\n level: \"session\" | \"turn\";\n groupKey: string;\n sessionId: string;\n turnId?: string;\n count: number;\n durationMs: number;\n };\n\n// ── filteredRows ──────────────────────────────────────────────────────────────\nexport function useFilteredRows(): number[] {\n const rows = useAppStore((s) => s.rows);\n const filters = useAppStore((s) => s.filters);\n const deferredFilters = useDeferredValue(filters);\n return useMemo(() => {\n const noFacets = isFiltersEmpty(deferredFilters);\n if (noFacets) return rows.map((_, i) => i);\n const result: number[] = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row) continue;\n if (!noFacets && !applyFacetsForRows(rows, row, deferredFilters)) continue;\n result.push(i);\n }\n return result;\n }, [rows, deferredFilters]);\n}\n\nexport function useVisibleSearchMatches(): number[] {\n const rows = useAppStore((s) => s.rows);\n const filters = useAppStore((s) => s.filters);\n const searchMatches = useAppStore((s) => s.searchMatches);\n const deferredFilters = useDeferredValue(filters);\n const deferredMatches = useDeferredValue(searchMatches);\n return useMemo(() => {\n if (deferredMatches === null) return [];\n const noFacets = isFiltersEmpty(deferredFilters);\n const result: number[] = [];\n for (let i = 0; i < rows.length; i++) {\n const row = rows[i];\n if (!row || !deferredMatches.has(i)) continue;\n if (!noFacets && !applyFacetsForRows(rows, row, deferredFilters)) continue;\n result.push(i);\n }\n return result;\n }, [rows, deferredFilters, deferredMatches]);\n}\n\nfunction applyFacetsForRows(rows: EventRow[], row: EventRow, filters: FilterState): boolean {\n if (!applyFacets(row, filters)) return false;\n if (row.method !== null || filters.method.length === 0) return true;\n const pairedMethod = typeof row.pairIdx === \"number\" ? (rows[row.pairIdx]?.method ?? null) : null;\n return pairedMethod === null || !filters.method.includes(pairedMethod);\n}\n\n// ── facetCounts ───────────────────────────────────────────────────────────────\nexport interface FacetCounts {\n direction: Map<string, number>;\n kind: Map<string, number>;\n method: Map<string, number>;\n actionType: Map<string, number>;\n session: Map<string, number>;\n turn: Map<string, number>;\n status: Map<string, number>;\n}\n\nexport function useFacetCounts(): FacetCounts {\n const rows = useAppStore((s) => s.rows);\n return useMemo(() => {\n const r: FacetCounts = {\n direction: new Map(),\n kind: new Map(),\n method: new Map(),\n actionType: new Map(),\n session: new Map(),\n turn: new Map(),\n status: new Map(),\n };\n for (const row of rows) {\n if (!row) continue;\n inc(r.direction, row.dir);\n inc(r.kind, row.kind);\n if (row.method) inc(r.method, row.method);\n if (row.actionType) inc(r.actionType, row.actionType);\n if (row.sessionId) inc(r.session, row.sessionId);\n if (row.turnId) inc(r.turn, row.turnId);\n inc(r.status, row.status);\n }\n return r;\n }, [rows]);\n}\n\nfunction inc(m: Map<string, number>, k: string): void {\n m.set(k, (m.get(k) ?? 0) + 1);\n}\n\n// ── groupedItems ──────────────────────────────────────────────────────────────\nexport function useGroupedItems(filteredRowIdxs: number[]): VirtualItem[] {\n const rows = useAppStore((s) => s.rows);\n const grouping = useAppStore((s) => s.grouping);\n return useMemo(\n () => buildGroupedItems(rows, filteredRowIdxs, grouping),\n [rows, filteredRowIdxs, grouping],\n );\n}\n\nfunction buildGroupedItems(\n rows: EventRow[],\n idxs: number[],\n grouping: GroupingMode,\n): VirtualItem[] {\n if (grouping === \"none\") {\n const items: VirtualItem[] = [];\n for (const rowIdx of idxs) {\n const row = rows[rowIdx];\n if (!row) continue;\n items.push({ kind: \"row\", rowIdx });\n }\n return items;\n }\n\n const items: VirtualItem[] = [];\n let lastSession: string | null = null;\n let lastTurn: string | null = null;\n const groupStartTs = new Map<string, number>();\n const groupEndTs = new Map<string, number>();\n const groupCount = new Map<string, number>();\n\n // Pre-pass to compute group stats.\n for (const rowIdx of idxs) {\n const row = rows[rowIdx];\n if (!row) continue;\n const sKey = row.sessionId ?? \"__none__\";\n const tKey = grouping === \"session+turn\" ? `${sKey}::${row.turnId ?? \"__none__\"}` : sKey;\n const key = grouping === \"session\" ? sKey : tKey;\n if (!groupStartTs.has(key)) groupStartTs.set(key, row.ts);\n groupEndTs.set(key, row.ts);\n groupCount.set(key, (groupCount.get(key) ?? 0) + 1);\n }\n\n for (const rowIdx of idxs) {\n const row = rows[rowIdx];\n if (!row) continue;\n const sessionId = row.sessionId ?? \"__none__\";\n const turnId = row.turnId ?? \"__none__\";\n\n if (sessionId !== lastSession) {\n lastSession = sessionId;\n lastTurn = null;\n const key = sessionId;\n const start = groupStartTs.get(key) ?? row.ts;\n const end = groupEndTs.get(key) ?? row.ts;\n items.push({\n kind: \"header\",\n level: \"session\",\n groupKey: key,\n sessionId: row.sessionId ?? \"\",\n count: groupCount.get(key) ?? 1,\n durationMs: end - start,\n });\n }\n if (grouping === \"session+turn\" && turnId !== lastTurn) {\n lastTurn = turnId;\n const key = `${sessionId}::${turnId}`;\n const start = groupStartTs.get(key) ?? row.ts;\n const end = groupEndTs.get(key) ?? row.ts;\n items.push({\n kind: \"header\",\n level: \"turn\",\n groupKey: key,\n sessionId: row.sessionId ?? \"\",\n ...(row.turnId !== null ? { turnId: row.turnId } : {}),\n count: groupCount.get(key) ?? 1,\n durationMs: end - start,\n });\n }\n items.push({ kind: \"row\", rowIdx });\n }\n return items;\n}\n","// API URL prefixing for the UI bundle. The extension webview needs to hit\n// the loopback server on a different origin (http://localhost:{port}); the\n// standalone CLI build serves the UI from the same origin and uses relative\n// URLs. The extension HTML injects `window.__AHP_API_BASE__` to opt in.\n//\n// Phase 15: this is the single seam for cross-origin HTTP/SSE access.\n\ndeclare global {\n\tinterface Window {\n\t\t__AHP_API_BASE__?: string;\n\t}\n}\n\n/** Prefix `path` (which must start with `/`) with the configured API base\n * URL, or return `path` unchanged when no base is set. */\nexport function apiUrl(path: string): string {\n\tconst base = (typeof window !== \"undefined\" ? window.__AHP_API_BASE__ : undefined) ?? \"\";\n\tif (!base) return path;\n\tconst trimmedBase = base.endsWith(\"/\") ? base.slice(0, -1) : base;\n\treturn `${trimmedBase}${path}`;\n}\n\nexport {};\n","/**\n * sessions-client.ts — browser-only HTTP client for session discovery / open\n * (Plan 04-05 Task 1).\n *\n * Endpoints:\n * GET /api/sessions/discover → 200 { candidates: SafeCandidate[] }\n * POST /api/sessions/open → 200 { ok: true } | 4xx { code }\n *\n * Errors thrown to callers carry only the server-supplied `code` string —\n * never the typed path or raw OS error message (T-04-05-01).\n */\n\nimport type { SafeCandidate } from \"../types/safe-candidate.js\";\nimport { apiUrl } from \"./api-base.js\";\n\nexport interface ActiveLogMeta {\n readonly filename: string;\n readonly sizeBytes: number;\n readonly startedAt: number;\n readonly logKey: string;\n}\n\nexport interface OpenSessionResult {\n readonly active: {\n readonly logKey: string;\n readonly meta: ActiveLogMeta;\n };\n}\n\nexport class SessionOpenError extends Error {\n public readonly code: string;\n constructor(code: string, message: string) {\n super(message);\n this.code = code;\n this.name = \"SessionOpenError\";\n }\n}\n\nexport async function fetchCandidates(): Promise<readonly SafeCandidate[]> {\n let res: Response;\n try {\n res = await fetch(apiUrl(\"/api/sessions/discover\"));\n } catch {\n throw new SessionOpenError(\"network\", \"fetch failed\");\n }\n if (!res.ok) {\n throw new SessionOpenError(\"network\", `discover ${res.status}`);\n }\n const data = (await res.json()) as { candidates?: SafeCandidate[] };\n return data.candidates ?? [];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n\nfunction parseOpenResult(value: unknown): OpenSessionResult {\n if (!isRecord(value) || !isRecord(value.active)) {\n throw new SessionOpenError(\"bad-response\", \"open response missing active session\");\n }\n const { active } = value;\n if (typeof active.logKey !== \"string\" || !isRecord(active.meta)) {\n throw new SessionOpenError(\"bad-response\", \"open response missing log key\");\n }\n const { meta } = active;\n if (\n typeof meta.filename !== \"string\" ||\n typeof meta.sizeBytes !== \"number\" ||\n typeof meta.startedAt !== \"number\" ||\n typeof meta.logKey !== \"string\"\n ) {\n throw new SessionOpenError(\"bad-response\", \"open response missing metadata\");\n }\n return {\n active: {\n logKey: active.logKey,\n meta: {\n filename: meta.filename,\n sizeBytes: meta.sizeBytes,\n startedAt: meta.startedAt,\n logKey: meta.logKey,\n },\n },\n };\n}\n\nasync function postOpen(body: unknown): Promise<OpenSessionResult> {\n let res: Response;\n try {\n res = await fetch(apiUrl(\"/api/sessions/open\"), {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n } catch {\n throw new SessionOpenError(\"network\", \"fetch failed\");\n }\n if (res.ok) {\n try {\n return parseOpenResult(await res.json());\n } catch (err) {\n if (err instanceof SessionOpenError) throw err;\n throw new SessionOpenError(\"bad-response\", \"open response was not JSON\");\n }\n }\n let code = \"bad-request\";\n try {\n const json = (await res.json()) as { code?: string };\n if (json && typeof json.code === \"string\") code = json.code;\n } catch {\n /* unparseable body — keep fallback */\n }\n throw new SessionOpenError(code, `open failed ${res.status}`);\n}\n\nexport const openSessionByCandidate = (candidateId: string): Promise<OpenSessionResult> =>\n postOpen({ id: candidateId });\n\nexport const openSessionByPath = (path: string): Promise<OpenSessionResult> => postOpen({ path });\n\nexport async function uploadSessionFile(file: File): Promise<OpenSessionResult> {\n let res: Response;\n try {\n res = await fetch(apiUrl(\"/api/sessions/upload\"), {\n method: \"POST\",\n headers: {\n \"content-type\": \"application/octet-stream\",\n \"x-filename\": encodeURIComponent(file.name),\n },\n body: file,\n });\n } catch {\n throw new SessionOpenError(\"network\", \"fetch failed\");\n }\n if (res.ok) {\n try {\n return parseOpenResult(await res.json());\n } catch (err) {\n if (err instanceof SessionOpenError) throw err;\n throw new SessionOpenError(\"bad-response\", \"upload response was not JSON\");\n }\n }\n let code = \"bad-request\";\n try {\n const json = (await res.json()) as { code?: string };\n if (json && typeof json.code === \"string\") code = json.code;\n } catch {\n /* unparseable body — keep fallback */\n }\n throw new SessionOpenError(code, `upload failed ${res.status}`);\n}\n","// SSE client (Plan 02-06). Bridges the server's log stream into the\n// Zustand store. Maps each SSE event kind to one store mutation.\n//\n// Frame contract is defined by packages/server/src/app-state.ts SsePayload.\n// Streamed row/progress frames drain in scheduled batches so snapshots become\n// visible progressively without forcing one store write per transport frame.\n//\n// T-02-06-02: graceful `bye` closes the EventSource and prevents browser\n// auto-reconnect storms. Before the first snapshot, transient `onerror` keeps\n// connection at 'connecting'. After data has loaded, any stream error is\n// user-visible as disconnected so the retry banner appears promptly.\n\nimport type { EventRow, LatencyBand, Status } from \"@ahp-inspector/core\";\nimport { useAppStore } from \"../state/store.js\";\nimport { apiUrl } from \"./api-base.js\";\n\nexport interface ConnectionHandle {\n close(): void;\n}\n\ninterface SnapshotBeginPayload {\n meta: { filename: string; sizeBytes: number; startedAt: number; logKey?: string };\n total: number;\n}\ninterface SnapshotChunkPayload {\n rows: EventRow[];\n from: number;\n}\ninterface AppendPayload {\n rows: EventRow[];\n from: number;\n}\ninterface PatchPayload {\n updates: Array<{\n idx: number;\n status: Status;\n latencyMs: number | null;\n latencyBand: LatencyBand | null;\n summary?: string;\n pairIdx?: number | null;\n }>;\n}\ninterface LoadProgressPayload {\n phase: \"idle\" | \"loading\" | \"complete\";\n loadedRows: number;\n loadedBytes: number;\n totalBytes?: number;\n percent?: number;\n}\ninterface StreamBacklogPayload {\n queuedFrames: number;\n queuedRows: number;\n}\n\ntype QueuedFrame =\n | { kind: \"snapshot-chunk\"; payload: SnapshotChunkPayload }\n | { kind: \"snapshot-end\" }\n | { kind: \"append\"; payload: AppendPayload }\n | { kind: \"patch\"; payload: PatchPayload }\n | { kind: \"load-progress\"; payload: LoadProgressPayload }\n | { kind: \"stream-backlog\"; payload: StreamBacklogPayload };\n\nconst MAX_DRAIN_FRAMES = 50;\n\nexport interface ConnectOpts {\n /** Override stream URL. Default `/api/log/stream`. */\n url?: string;\n /** Override EventSource constructor. Tests inject a fake. */\n EventSourceCtor?: typeof EventSource;\n}\n\nexport function connectLogStream(opts: ConnectOpts = {}): ConnectionHandle {\n const url = opts.url ?? apiUrl(\"/api/log/stream\");\n const Ctor = opts.EventSourceCtor ?? globalThis.EventSource;\n if (!Ctor) {\n // Defensive: in jsdom without a polyfill, return a no-op handle so the\n // app doesn't crash. Connection stays at whatever it was.\n return { close: () => {} };\n }\n useAppStore.getState().setConnection(\"connecting\");\n\n const es = new Ctor(url);\n const queuedFrames: QueuedFrame[] = [];\n let queuedFrameStart = 0;\n let drainScheduled = false;\n let drainGeneration = 0;\n let graceful = false;\n let closedByCaller = false;\n let hasConnected = false;\n\n const clearQueuedFrames = (): void => {\n queuedFrames.length = 0;\n queuedFrameStart = 0;\n drainScheduled = false;\n drainGeneration += 1;\n };\n const drainFrames = (): void => {\n drainScheduled = false;\n const store = useAppStore.getState();\n let drained = 0;\n while (drained < MAX_DRAIN_FRAMES && queuedFrameStart < queuedFrames.length) {\n const frame = queuedFrames[queuedFrameStart++];\n if (!frame) continue;\n drained += 1;\n if (frame.kind === \"snapshot-chunk\")\n store.appendSnapshotRows(frame.payload.rows, frame.payload.from);\n else if (frame.kind === \"snapshot-end\") {\n hasConnected = true;\n store.setConnection(\"connected\");\n } else if (frame.kind === \"append\") store.appendRows(frame.payload.rows, frame.payload.from);\n else if (frame.kind === \"patch\") store.applyPatch(frame.payload.updates);\n else if (frame.kind === \"load-progress\") store.setLoadProgress(frame.payload);\n else store.setStreamBacklog(frame.payload);\n }\n if (queuedFrameStart === queuedFrames.length) {\n queuedFrames.length = 0;\n queuedFrameStart = 0;\n }\n if (queuedFrameStart < queuedFrames.length) scheduleDrain();\n };\n const scheduleDrain = (): void => {\n if (drainScheduled || graceful || closedByCaller) return;\n drainScheduled = true;\n const generation = drainGeneration;\n const run = (): void => {\n if (generation !== drainGeneration || graceful || closedByCaller) return;\n drainFrames();\n };\n if (typeof globalThis.requestAnimationFrame === \"function\") {\n globalThis.requestAnimationFrame(() => run());\n } else {\n queueMicrotask(run);\n }\n };\n const enqueue = (frame: QueuedFrame): void => {\n queuedFrames.push(frame);\n scheduleDrain();\n };\n\n const onSnapshotBegin = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as SnapshotBeginPayload;\n clearQueuedFrames();\n const store = useAppStore.getState();\n store.setRows([]);\n store.setMeta({\n filename: data.meta.filename,\n eventCount: 0,\n sessionCount: 0,\n });\n if (typeof data.meta.logKey === \"string\" && data.meta.logKey.length > 0) {\n store.setLogKey(data.meta.logKey);\n }\n } catch {\n /* malformed frame — ignore */\n }\n };\n const onSnapshotChunk = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as SnapshotChunkPayload;\n enqueue({ kind: \"snapshot-chunk\", payload: data });\n } catch {\n /* ignore */\n }\n };\n const onSnapshotEnd = (): void => {\n enqueue({ kind: \"snapshot-end\" });\n };\n const onAppend = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as AppendPayload;\n enqueue({ kind: \"append\", payload: data });\n } catch {\n /* ignore */\n }\n };\n const onPatch = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as PatchPayload;\n enqueue({ kind: \"patch\", payload: data });\n } catch {\n /* ignore */\n }\n };\n const onLoadProgress = (ev: Event): void => {\n try {\n enqueue({\n kind: \"load-progress\",\n payload: JSON.parse((ev as MessageEvent).data) as LoadProgressPayload,\n });\n } catch {\n /* ignore */\n }\n };\n const onStreamBacklog = (ev: Event): void => {\n try {\n enqueue({\n kind: \"stream-backlog\",\n payload: JSON.parse((ev as MessageEvent).data) as StreamBacklogPayload,\n });\n } catch {\n /* ignore */\n }\n };\n const onPing = (): void => {\n /* heartbeat — no store mutation */\n };\n const onRotation = (): void => {\n useAppStore.getState().setRotationNotice(true);\n useAppStore.getState().resetForRotation();\n clearQueuedFrames();\n };\n const onWatchError = (ev: Event): void => {\n try {\n const data = JSON.parse((ev as MessageEvent).data) as {\n code?: \"read-error\" | \"watch-fatal\" | \"oversized-line\";\n message?: string;\n };\n const code =\n data.code === \"watch-fatal\"\n ? \"watch-fatal\"\n : data.code === \"oversized-line\"\n ? \"oversized-line\"\n : \"read-error\";\n useAppStore.getState().setLastWatchError({\n code,\n message: typeof data.message === \"string\" ? data.message : \"\",\n });\n } catch {\n useAppStore.getState().setLastWatchError({ code: \"read-error\", message: \"\" });\n }\n };\n const onLogReset = (): void => {\n useAppStore.getState().resetForLogSwitch();\n clearQueuedFrames();\n };\n const onBye = (): void => {\n if (closedByCaller) return;\n graceful = true;\n try {\n es.close();\n } catch {\n /* ignore */\n }\n useAppStore.getState().setConnection(\"disconnected\");\n };\n const onError = (): void => {\n if (graceful || closedByCaller) return;\n // EventSource.CLOSED === 2. Browser implementations often report\n // CONNECTING while retrying after a server crash, but once the user has\n // seen data this is a real interruption that should expose Retry.\n if (hasConnected || es.readyState === 2) {\n useAppStore.getState().setConnection(\"disconnected\");\n } else {\n useAppStore.getState().setConnection(\"connecting\");\n }\n };\n\n es.addEventListener(\"snapshot-begin\", onSnapshotBegin);\n es.addEventListener(\"snapshot-chunk\", onSnapshotChunk);\n es.addEventListener(\"snapshot-end\", onSnapshotEnd);\n es.addEventListener(\"append\", onAppend);\n es.addEventListener(\"patch\", onPatch);\n es.addEventListener(\"load-progress\", onLoadProgress);\n es.addEventListener(\"stream-backlog\", onStreamBacklog);\n es.addEventListener(\"ping\", onPing);\n es.addEventListener(\"rotation\", onRotation);\n es.addEventListener(\"watch-error\", onWatchError);\n es.addEventListener(\"log-reset\", onLogReset);\n es.addEventListener(\"bye\", onBye);\n es.onerror = onError;\n\n return {\n close: () => {\n closedByCaller = true;\n graceful = true;\n clearQueuedFrames();\n try {\n es.close();\n } catch {\n /* ignore */\n }\n },\n };\n}\n","{\n \"name\": \"ahp-inspector\",\n \"version\": \"1.4.3\",\n \"type\": \"module\",\n \"description\": \"Local-first viewer for VS Code Agent Host Protocol (AHP) JSONL logs.\",\n \"keywords\": [\n \"ahp\",\n \"agent-host-protocol\",\n \"vscode\",\n \"logs\",\n \"viewer\",\n \"jsonl\"\n ],\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/roblourens/ahp-inspector#readme\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/roblourens/ahp-inspector.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/roblourens/ahp-inspector/issues\"\n },\n \"engines\": {\n \"node\": \">=22\"\n },\n \"bin\": {\n \"ahp-inspector\": \"./dist/index.js\"\n },\n \"files\": [\n \"dist\",\n \"ui-dist\",\n \"README.md\"\n ],\n \"scripts\": {\n \"typecheck\": \"tsc --noEmit\",\n \"build\": \"tsup && node ./scripts/copy-ui-dist.cjs\",\n \"prepublishOnly\": \"pnpm typecheck && pnpm -F @ahp-inspector/ui build && pnpm -F ahp-inspector build\"\n },\n \"dependencies\": {\n \"commander\": \"^14.0.3\",\n \"open\": \"^11.0.0\"\n },\n \"devDependencies\": {\n \"@ahp-inspector/core\": \"workspace:*\",\n \"@ahp-inspector/host-node\": \"workspace:*\",\n \"@ahp-inspector/parser\": \"workspace:*\",\n \"@ahp-inspector/server\": \"workspace:*\",\n \"@ahp-inspector/shared\": \"workspace:*\",\n \"@ahp-inspector/ui\": \"workspace:*\"\n }\n}\n","import { version } from \"../../cli/package.json\";\n\nexport const __APP_VERSION__ = version;\n","/**\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","// WatchErrorBanner (Plan 04-05 Task 2 / UI-SPEC §7).\n// Shown by AppShell while `store.lastWatchError` is non-null.\n// Copy uses MAPPED display strings for codes that may carry raw OS text.\n// For `oversized-line` the server's message is curated and safe to render\n// verbatim so the user knows which line was skipped and why.\n\nimport type { JSX } from \"react\";\n\nconst CODE_DISPLAY: Record<string, string> = {\n \"read-error\": \"file read error\",\n \"watch-fatal\": \"watcher stopped\",\n \"oversized-line\": \"oversized line skipped\",\n};\n\nexport function WatchErrorBanner({\n code,\n message,\n onRetry,\n onReopen,\n onDismiss,\n}: {\n code: string;\n message?: string;\n onRetry(): void;\n onReopen(): void;\n onDismiss?(): void;\n}): JSX.Element {\n const display = CODE_DISPLAY[code] ?? \"unknown error\";\n const isOversized = code === \"oversized-line\";\n return (\n <div\n role=\"alert\"\n data-testid=\"watch-error-banner\"\n style={{\n minHeight: 40,\n background: \"var(--color-banner-watch-error-bg)\",\n color: \"var(--color-banner-watch-error-fg)\",\n borderLeft: \"2px solid var(--color-destructive)\",\n padding: \"var(--space-2) var(--space-4)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-3)\",\n flex: \"0 0 auto\",\n }}\n >\n <span aria-hidden=\"true\">✕</span>\n <span style={{ flex: 1 }}>\n Watch error: {display}\n {isOversized && message ? (\n <span style={{ opacity: 0.85, marginLeft: \"var(--space-2)\" }}>— {message}</span>\n ) : null}\n </span>\n {isOversized ? (\n onDismiss ? (\n <button\n type=\"button\"\n onClick={onDismiss}\n style={{\n height: 24,\n padding: \"0 var(--space-3)\",\n background: \"transparent\",\n border: \"1px solid currentColor\",\n borderRadius: 4,\n color: \"inherit\",\n cursor: \"pointer\",\n fontWeight: 600,\n }}\n >\n Dismiss\n </button>\n ) : null\n ) : (\n <>\n <button\n type=\"button\"\n onClick={onRetry}\n style={{\n height: 24,\n padding: \"0 var(--space-3)\",\n background: \"transparent\",\n border: \"1px solid currentColor\",\n borderRadius: 4,\n color: \"inherit\",\n cursor: \"pointer\",\n fontWeight: 600,\n }}\n >\n Retry Connection\n </button>\n <button\n type=\"button\"\n onClick={onReopen}\n style={{\n height: 24,\n padding: \"0 var(--space-3)\",\n background: \"transparent\",\n border: \"1px solid currentColor\",\n borderRadius: 4,\n color: \"inherit\",\n cursor: \"pointer\",\n fontWeight: 600,\n }}\n >\n Reopen log\n </button>\n </>\n )}\n </div>\n );\n}\n","/**\n * http-client.ts — browser-only transport for the detail API (Plan 03-04).\n *\n * MUST NOT import node:, fs, path, hono, or @ahp-inspector/server.\n * boundary.test.ts enforces this at CI time.\n *\n * Security:\n * T-03-04-04: AbortController per idx — previous controller aborted on\n * new selectedIdx change in DetailPanel's useEffect cleanup.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport { apiUrl } from \"./api-base.js\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\n\nexport type { AhpEvent };\n\nexport interface DetailResponse {\n event: AhpEvent;\n pair: AhpEvent | null;\n latencyMs: number | null;\n status: Status;\n pairIdx: number | null;\n}\n\n// Simple LRU-16 cache keyed by active log + event idx.\nconst MAX_CACHE = 16;\ntype EventCacheKey = string;\nconst cache = new Map<EventCacheKey, DetailResponse>();\nconst cacheOrder: EventCacheKey[] = [];\n\nfunction cacheKey(logKey: string | null | undefined, idx: number): EventCacheKey {\n return JSON.stringify([logKey ?? null, idx]);\n}\n\nfunction cacheGet(key: EventCacheKey): DetailResponse | undefined {\n const cached = cache.get(key);\n if (cached !== undefined) {\n const existing = cacheOrder.indexOf(key);\n if (existing !== -1) {\n cacheOrder.splice(existing, 1);\n cacheOrder.push(key);\n }\n }\n return cached;\n}\n\nfunction cacheSet(key: EventCacheKey, data: DetailResponse): void {\n if (cache.has(key)) {\n cacheOrder.splice(cacheOrder.indexOf(key), 1);\n cacheOrder.push(key);\n cache.set(key, data);\n return;\n }\n if (cacheOrder.length >= MAX_CACHE) {\n const evict = cacheOrder.shift();\n if (evict !== undefined) cache.delete(evict);\n }\n cacheOrder.push(key);\n cache.set(key, data);\n}\n\n/**\n * Fetch event details from GET /api/log/event/:idx.\n * Returns null on 404, throws on other HTTP errors.\n * Caches last 16 responses by active log key + idx.\n */\nexport async function fetchEvent(\n idx: number,\n signal?: AbortSignal,\n logKey?: string | null,\n): Promise<DetailResponse | null> {\n const key = cacheKey(logKey, idx);\n const cached = cacheGet(key);\n if (cached) return cached;\n const init: RequestInit = signal !== undefined ? { signal } : {};\n const resp = await fetch(apiUrl(`/api/log/event/${idx}`), init);\n if (resp.status === 404) return null;\n if (!resp.ok) throw new Error(`Failed to load event: ${resp.status}`);\n const data: DetailResponse = (await resp.json()) as DetailResponse;\n cacheSet(key, data);\n return data;\n}\n\nexport function clearEventCacheForTests(): void {\n cache.clear();\n cacheOrder.length = 0;\n}\n","/**\n * AhpFieldRow — a single 24 px-tall labeled field row in the AHP strip.\n *\n * Layout: 2px color stripe | 96px label | flex value | optional annotation\n * No raw #hex literals — all colors come from CSS variables.\n */\nimport type { JSX } from \"react\";\n\ninterface AhpFieldRowProps {\n stripeColor: string;\n label: string;\n value: string;\n annotation?: string;\n}\n\nexport function AhpFieldRow({\n stripeColor,\n label,\n value,\n annotation,\n}: AhpFieldRowProps): JSX.Element {\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n height: \"24px\",\n borderLeft: `2px solid ${stripeColor}`,\n paddingLeft: \"var(--space-2)\",\n gap: \"var(--space-2)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-mono)\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n flexShrink: 0,\n width: \"96px\",\n color: \"var(--color-text-muted)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {label}\n </span>\n <span\n style={{\n flex: 1,\n color: \"var(--color-text)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {value}\n </span>\n {annotation ? (\n <span\n style={{\n flexShrink: 0,\n color: \"var(--color-warning)\",\n fontSize: \"12px\",\n fontFamily: \"var(--font-sans)\",\n }}\n >\n {annotation}\n </span>\n ) : null}\n </div>\n );\n}\n","/**\n * AhpFieldStrip — renders 0–9 AhpFieldRow items for AHP-specific fields.\n *\n * Present fields come from EventRow (projected) and AhpEvent (raw).\n * Absent fields are omitted — the strip has variable row count.\n *\n * Field order follows UI-SPEC §4.3 + §7.6:\n * session, turn, toolCall, actionType, serverSeq, origin,\n * requestId, errorCode, notificationType\n *\n * No raw #hex literals — all stripe colors use CSS var().\n */\n\nimport type { EventRow } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport type { JSX } from \"react\";\nimport { AhpFieldRow } from \"./AhpFieldRow.js\";\n\nconst AHP_ERROR_LABELS: Record<number, string> = {\n [-32700]: \"Parse error\",\n [-32600]: \"Invalid request\",\n [-32601]: \"Method not found\",\n [-32602]: \"Invalid params\",\n [-32603]: \"Internal error\",\n [-32007]: \"Authentication required\",\n};\n\ninterface AhpFieldStripProps {\n row: EventRow;\n rawEvent: AhpEvent;\n}\n\ninterface FieldDef {\n label: string;\n stripeColor: string;\n value: string;\n annotation?: string | undefined;\n}\n\nfunction getRawParams(rawEvent: AhpEvent): Record<string, unknown> | null {\n if (rawEvent.raw && typeof rawEvent.raw === \"object\") {\n const r = rawEvent.raw as Record<string, unknown>;\n if (r.params && typeof r.params === \"object\") {\n return r.params as Record<string, unknown>;\n }\n }\n return null;\n}\n\nexport function AhpFieldStrip({ row, rawEvent }: AhpFieldStripProps): JSX.Element {\n const fields: FieldDef[] = [];\n const params = getRawParams(rawEvent);\n\n // 1. session\n if (row.sessionId) {\n fields.push({\n label: \"Session\",\n stripeColor: \"var(--color-info)\",\n value: row.sessionId,\n });\n }\n\n // 2. turn\n if (row.turnId) {\n fields.push({\n label: \"Turn\",\n stripeColor: \"var(--color-info)\",\n value: row.turnId,\n });\n }\n\n // 3. toolCall (from raw.params?.toolCall for tool-call actions)\n const toolCall = params?.toolCall;\n if (toolCall && typeof toolCall === \"object\") {\n const tc = toolCall as Record<string, unknown>;\n const tcName = typeof tc.name === \"string\" ? tc.name : JSON.stringify(toolCall);\n fields.push({\n label: \"Tool call\",\n stripeColor: \"var(--action-tool-call)\",\n value: tcName,\n });\n }\n\n // 4. actionType (for non-NTF rows — NTF uses notificationType below)\n if (row.actionType && row.kindTag !== \"NTF\") {\n fields.push({\n label: \"Action type\",\n stripeColor: \"var(--action-text)\",\n value: row.actionType,\n });\n }\n\n // 5. serverSeq\n if (row.serverSeq !== null) {\n fields.push({\n label: \"Server seq\",\n stripeColor: \"var(--color-text-muted)\",\n value: String(row.serverSeq),\n ...(row.gapBefore ? { annotation: \"gap before\" } : {}),\n });\n }\n\n // 6. origin (from raw.params?.origin)\n const origin = params?.origin;\n if (typeof origin === \"string\" && origin) {\n fields.push({\n label: \"Origin\",\n stripeColor: \"var(--color-text-muted)\",\n value: origin,\n });\n }\n\n // 7. requestId (for REQ/RES rows)\n if (row.keyId && (row.kindTag === \"REQ\" || row.kindTag === \"RES\")) {\n fields.push({\n label: \"Request id\",\n stripeColor: \"var(--kind-request)\",\n value: row.keyId,\n });\n }\n\n // 8. errorCode\n if (row.errorCode !== null) {\n const label = AHP_ERROR_LABELS[row.errorCode];\n const valueStr = label ? `${row.errorCode} — ${label}` : String(row.errorCode);\n fields.push({\n label: \"Error code\",\n stripeColor: \"var(--color-destructive)\",\n value: valueStr,\n });\n }\n\n // 9. notificationType (for NTF rows)\n if (row.kindTag === \"NTF\" && row.actionType) {\n fields.push({\n label: \"Notification type\",\n stripeColor: \"var(--kind-notification)\",\n value: row.actionType,\n });\n }\n\n return (\n <div\n data-testid=\"ahp-field-strip\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1px\",\n padding: \"var(--space-2) 0\",\n }}\n >\n {fields.map((f) => (\n <AhpFieldRow\n key={f.label}\n stripeColor={f.stripeColor}\n label={f.label}\n value={f.value}\n {...(f.annotation !== undefined ? { annotation: f.annotation } : {})}\n />\n ))}\n </div>\n );\n}\n","/**\n * AuthFailureBanner — alert banner shown when an event has isAuthFailure=true.\n *\n * No raw #hex literals; uses --color-auth-fail-banner-bg token.\n */\n\nimport { ShieldAlert } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface AuthFailureBannerProps {\n code?: number;\n notificationType?: string;\n}\n\nexport function AuthFailureBanner({ code, notificationType }: AuthFailureBannerProps): JSX.Element {\n const heading = `Authentication failure (${code ?? notificationType ?? \"unknown\"})`;\n\n const body =\n code === -32007\n ? \"Subsequent requests in this session may fail until re-auth.\"\n : notificationType === \"authRequired\"\n ? \"Server is requesting authentication.\"\n : \"Authentication failure detected.\";\n\n return (\n <div\n data-testid=\"auth-failure-banner\"\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-2) var(--space-3)\",\n background: \"var(--color-auth-fail-banner-bg)\",\n color: \"var(--color-destructive)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n borderBottom: \"1px solid var(--color-border)\",\n }}\n >\n <ShieldAlert size={14} style={{ flexShrink: 0, marginTop: \"1px\" }} />\n <div>\n <div style={{ fontWeight: \"var(--weight-semibold)\" }}>{heading}</div>\n <div style={{ color: \"var(--color-text-muted)\", marginTop: \"2px\" }}>{body}</div>\n </div>\n </div>\n );\n}\n","export async function copyText(text: string): Promise<void> {\n try {\n await navigator.clipboard.writeText(text);\n return;\n } catch {\n const ta = document.createElement(\"textarea\");\n ta.value = text;\n ta.style.position = \"fixed\";\n ta.style.top = \"0\";\n ta.style.left = \"0\";\n ta.style.opacity = \"0\";\n document.body.appendChild(ta);\n ta.focus();\n ta.select();\n document.execCommand(\"copy\");\n document.body.removeChild(ta);\n }\n}\n","/**\n * openInNewTab — open arbitrary text content in a new browser tab via a\n * same-origin Blob URL.\n *\n * Local-first guarantee: content never leaves the machine. We build a Blob and\n * hand the browser an object: URL — no upload, no hosted resource, no network.\n *\n * Reverse-tabnabbing is mitigated with \"noopener,noreferrer\" so the opened tab\n * has no reference back to this window.\n *\n * Returns false when the browser blocked the popup (window.open === null) so the\n * caller can surface feedback instead of failing silently.\n */\nexport function openInNewTab(text: string, mime: \"application/json\" | \"text/plain\"): boolean {\n const blob = new Blob([text], { type: mime });\n const url = URL.createObjectURL(blob);\n const win = window.open(url, \"_blank\", \"noopener,noreferrer\");\n if (win === null) {\n URL.revokeObjectURL(url);\n return false;\n }\n // Give the new tab time to load the resource before revoking.\n setTimeout(() => URL.revokeObjectURL(url), 60_000);\n return true;\n}\n","/**\n * CopyMenu — \"Actions\" dropdown button with copy and open-in-new-tab actions.\n *\n * T-03-04-03: Copy/open are explicit user actions only.\n * Uses navigator.clipboard.writeText with textarea execCommand fallback.\n * PrivacyCaption discloses that raw payload may contain tokens/prompts/paths.\n *\n * No raw #hex literals. No dangerouslySetInnerHTML.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport { ChevronDown } from \"lucide-react\";\nimport { type JSX, useEffect, useRef, useState } from \"react\";\nimport { copyText } from \"./clipboard.js\";\nimport { openInNewTab } from \"./openInNewTab.js\";\n\ninterface CopyMenuProps {\n event: AhpEvent;\n pairEvent: AhpEvent | null;\n pairIdx: number | null;\n latencyMs: number | null;\n status: Status;\n onCopy(msg: string, ok: boolean): void;\n}\n\nfunction directionWord(dir: string): string {\n switch (dir) {\n case \"c2s\":\n return \"Client→Server\";\n case \"s2c\":\n return \"Server→Client\";\n default:\n return \"Internal\";\n }\n}\n\nfunction fmtTs(ts: number): string {\n const d = new Date(ts);\n const hh = d.getUTCHours().toString().padStart(2, \"0\");\n const mm = d.getUTCMinutes().toString().padStart(2, \"0\");\n const ss = d.getUTCSeconds().toString().padStart(2, \"0\");\n const ms = d.getUTCMilliseconds().toString().padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\n\nfunction eventLabel(event: AhpEvent): string {\n return event.method ?? event.actionType ?? event.kind;\n}\n\nfunction idLabel(event: AhpEvent): string | null {\n if (event.id === null) return null;\n return `${String(event.id)} (${event.idType})`;\n}\n\nfunction appendEventContext(prefix: string, event: AhpEvent): string {\n let out = `${prefix}=${directionWord(event.dir)} ${event.kind} ${eventLabel(event)}`;\n const id = idLabel(event);\n if (id) out += ` id=${id}`;\n if (event.sessionId) out += ` session=${event.sessionId}`;\n if (event.turnId) out += ` turn=${event.turnId}`;\n if (event.toolCallId) out += ` tool=${event.toolCallId}`;\n return `${out}\\n`;\n}\n\nfunction buildSummary(\n event: AhpEvent,\n pairEvent: AhpEvent | null,\n pairIdx: number | null,\n latencyMs: number | null,\n status: Status,\n): string {\n const ts = fmtTs(event.ts);\n const dir = directionWord(event.dir);\n const method = event.method ?? event.actionType ?? \"—\";\n let summary = `${ts} ${dir} ${event.kind} ${method}\\nstatus=${status} latency=${latencyMs !== null ? `${latencyMs}ms` : \"—\"}\\n`;\n\n if (event.sessionId) summary += `session=${event.sessionId}\\n`;\n if (event.turnId) summary += `turn=${event.turnId}\\n`;\n if (event.serverSeq !== null) summary += `serverSeq=${event.serverSeq}\\n`;\n if (pairEvent) {\n summary += `correlation=paired`;\n if (pairIdx !== null) summary += ` pairIdx=${pairIdx}`;\n summary += ` status=${status} latency=${latencyMs !== null ? `${latencyMs}ms` : \"—\"}\\n`;\n summary += appendEventContext(\"current\", event);\n summary += appendEventContext(\"pair\", pairEvent);\n }\n\n return summary;\n}\n\nexport function CopyMenu({\n event,\n pairEvent,\n pairIdx,\n latencyMs,\n status,\n onCopy,\n}: CopyMenuProps): JSX.Element {\n const [open, setOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n\n // Close on click-outside.\n useEffect(() => {\n if (!open) return;\n function handler(e: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n async function handleCopy(getContent: () => string) {\n setOpen(false);\n const text = getContent();\n try {\n await copyText(text);\n onCopy(`Copied ${text.length} chars`, true);\n } catch {\n onCopy(\"Copy failed. Select and copy manually.\", false);\n }\n }\n\n function handleOpenInNewTab(mime: \"application/json\" | \"text/plain\") {\n setOpen(false);\n const text = (() => {\n try {\n return JSON.stringify(event.raw, null, 2);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n })();\n const ok = openInNewTab(text, mime);\n if (ok) {\n onCopy(\"Opened in new tab\", true);\n } else {\n onCopy(\"Popup blocked \\u2014 allow popups to open in a new tab\", false);\n }\n }\n\n const menuItems = [\n {\n label: \"Copy raw JSON\",\n action: () => {\n try {\n return JSON.stringify(event.raw);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n },\n },\n {\n label: \"Copy pretty JSON\",\n action: () => {\n try {\n return JSON.stringify(event.raw, null, 2);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n },\n },\n {\n label: \"Copy summary\",\n action: () => buildSummary(event, pairEvent, pairIdx, latencyMs, status),\n },\n ];\n\n return (\n <div ref={menuRef} style={{ position: \"relative\" }}>\n <button\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={open}\n onClick={() => setOpen((o) => !o)}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: \"4px\",\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n padding: \"var(--space-1) var(--space-2)\",\n }}\n >\n Actions <ChevronDown size={12} />\n </button>\n\n {open && (\n <div\n role=\"menu\"\n style={{\n position: \"absolute\",\n top: \"calc(100% + var(--space-1))\",\n right: 0,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: \"4px\",\n minWidth: \"180px\",\n zIndex: 50,\n overflow: \"hidden\",\n }}\n >\n {menuItems.map((item) => (\n <button\n key={item.label}\n role=\"menuitem\"\n type=\"button\"\n onClick={() => handleCopy(item.action)}\n style={{\n display: \"block\",\n width: \"100%\",\n textAlign: \"left\",\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-2) var(--space-3)\",\n }}\n >\n {item.label}\n </button>\n ))}\n {(\n [\n { label: \"Open in new tab (JSON)\", mime: \"application/json\" as const },\n { label: \"Open in new tab (text)\", mime: \"text/plain\" as const },\n ]\n ).map((item) => (\n <button\n key={item.label}\n role=\"menuitem\"\n type=\"button\"\n onClick={() => handleOpenInNewTab(item.mime)}\n style={{\n display: \"block\",\n width: \"100%\",\n textAlign: \"left\",\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-2) var(--space-3)\",\n }}\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n","/**\n * CopyToast — brief feedback after a clipboard copy attempt.\n *\n * - 1.5s auto-dismiss via useEffect timeout\n * - Success: --color-success tint background\n * - Failure: --color-destructive tint background\n * - prefers-reduced-motion: opacity animation skipped\n *\n * No raw #hex literals.\n */\nimport { type JSX, useEffect, useState } from \"react\";\n\ninterface CopyToastProps {\n message: string;\n kind: \"success\" | \"error\";\n}\n\nexport function CopyToast({ message, kind }: CopyToastProps): JSX.Element | null {\n const [visible, setVisible] = useState(true);\n\n useEffect(() => {\n const id = setTimeout(() => setVisible(false), 1500);\n return () => clearTimeout(id);\n }, []);\n\n if (!visible) return null;\n\n const bgColor =\n kind === \"success\"\n ? \"color-mix(in srgb, var(--color-success) 20%, var(--color-surface-raised))\"\n : \"color-mix(in srgb, var(--color-destructive) 20%, var(--color-surface-raised))\";\n\n const borderColor = kind === \"success\" ? \"var(--color-success)\" : \"var(--color-destructive)\";\n\n return (\n <div\n data-testid=\"copy-toast\"\n role=\"status\"\n aria-live=\"polite\"\n style={{\n position: \"absolute\",\n bottom: \"var(--space-4)\",\n right: \"var(--space-4)\",\n background: bgColor,\n border: `1px solid ${borderColor}`,\n borderRadius: \"4px\",\n padding: \"var(--space-2) var(--space-3)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n color: \"var(--color-text)\",\n zIndex: 100,\n animation: \"ahp-fade-in 0.15s ease\",\n pointerEvents: \"none\",\n }}\n >\n {message}\n </div>\n );\n}\n","/**\n * DetailCorrelation — visible request/response pairing metadata for the\n * selected detail event.\n *\n * Renders only when the detail API reports a correlated pair, so unpaired\n * details stay visually clean.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport type { JSX } from \"react\";\n\ninterface DetailCorrelationProps {\n currentIdx: number;\n event: AhpEvent;\n pairEvent: AhpEvent | null;\n pairIdx: number | null;\n latencyMs: number | null;\n status: Status;\n}\n\nfunction directionWord(dir: string): string {\n switch (dir) {\n case \"c2s\":\n return \"Client → Server\";\n case \"s2c\":\n return \"Server → Client\";\n default:\n return \"Internal\";\n }\n}\n\nfunction eventLabel(event: AhpEvent): string {\n return event.method ?? event.actionType ?? event.kind;\n}\n\nfunction requestIdLabel(event: AhpEvent): string | null {\n if (event.id === null) return null;\n return `${String(event.id)} (${event.idType})`;\n}\n\nfunction contextBits(event: AhpEvent): string[] {\n const bits: string[] = [];\n const requestId = requestIdLabel(event);\n if (requestId) bits.push(`id ${requestId}`);\n if (event.sessionId) bits.push(`session ${event.sessionId}`);\n if (event.turnId) bits.push(`turn ${event.turnId}`);\n if (event.toolCallId) bits.push(`tool ${event.toolCallId}`);\n return bits;\n}\n\nfunction CorrelationEventLine({\n label,\n idx,\n event,\n}: {\n label: string;\n idx: number;\n event: AhpEvent;\n}): JSX.Element {\n const bits = contextBits(event);\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"2px\",\n minWidth: 0,\n }}\n >\n <div\n style={{\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {label} #{idx} · {event.kind} · {eventLabel(event)}\n </div>\n <div\n style={{\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text-muted)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {directionWord(event.dir)}\n {bits.length ? ` · ${bits.join(\" · \")}` : \"\"}\n </div>\n </div>\n );\n}\n\nexport function DetailCorrelation({\n currentIdx,\n event,\n pairEvent,\n pairIdx,\n latencyMs,\n status,\n}: DetailCorrelationProps): JSX.Element | null {\n if (!pairEvent || pairIdx === null) return null;\n\n return (\n <section\n aria-label=\"Correlation\"\n data-testid=\"detail-correlation\"\n style={{\n borderTop: \"1px solid var(--color-border)\",\n borderBottom: \"1px solid var(--color-border)\",\n padding: \"var(--space-2) var(--space-3)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-2)\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"var(--space-2)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n <strong\n style={{\n color: \"var(--color-text)\",\n fontWeight: \"var(--weight-semibold)\",\n }}\n >\n Correlation\n </strong>\n <span>\n pair idx #{pairIdx} · status {status} · latency{\" \"}\n {latencyMs !== null ? `${latencyMs}ms` : \"—\"}\n </span>\n </div>\n <CorrelationEventLine label=\"This event\" idx={currentIdx} event={event} />\n <CorrelationEventLine label=\"Pair\" idx={pairIdx} event={pairEvent} />\n </section>\n );\n}\n","/**\n * DetailResizeHandle — 4px hit area on the left edge of the detail panel.\n *\n * Mouse drag: onMouseDown → track clientX delta → call onResize(newWidth).\n * Keyboard: Left/Right arrows add/subtract 16px increments.\n * Bounds: clamped to [min, max] (defaults: [360, 720]).\n *\n * No raw #hex literals.\n */\nimport type { JSX, KeyboardEvent, MouseEvent } from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { DETAIL_KEYBOARD_STEP } from \"./detail-layout.js\";\n\ninterface DetailResizeHandleProps {\n width: number;\n onResize(px: number): void;\n min: number;\n max: number;\n}\n\nexport function DetailResizeHandle({\n width,\n onResize,\n min,\n max,\n}: DetailResizeHandleProps): JSX.Element {\n const dragging = useRef(false);\n const startX = useRef(0);\n const startWidth = useRef(0);\n const moveHandler = useRef<((ev: globalThis.MouseEvent) => void) | null>(null);\n const upHandler = useRef<(() => void) | null>(null);\n\n function clamp(v: number): number {\n return Math.max(min, Math.min(max, v));\n }\n\n const stopDrag = useCallback(() => {\n dragging.current = false;\n if (moveHandler.current) {\n document.removeEventListener(\"mousemove\", moveHandler.current);\n moveHandler.current = null;\n }\n if (upHandler.current) {\n document.removeEventListener(\"mouseup\", upHandler.current);\n upHandler.current = null;\n }\n }, []);\n\n useEffect(() => stopDrag, [stopDrag]);\n\n function handleMouseDown(e: MouseEvent<HTMLButtonElement>) {\n e.preventDefault();\n stopDrag();\n dragging.current = true;\n startX.current = e.clientX;\n startWidth.current = width;\n\n function onMouseMove(ev: globalThis.MouseEvent) {\n if (!dragging.current) return;\n const delta = startX.current - ev.clientX;\n onResize(clamp(startWidth.current + delta));\n }\n\n function onMouseUp() {\n stopDrag();\n }\n\n moveHandler.current = onMouseMove;\n upHandler.current = onMouseUp;\n document.addEventListener(\"mousemove\", onMouseMove);\n document.addEventListener(\"mouseup\", onMouseUp);\n }\n\n function handleKeyDown(e: KeyboardEvent<HTMLButtonElement>) {\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n onResize(clamp(width + DETAIL_KEYBOARD_STEP));\n } else if (e.key === \"ArrowRight\") {\n e.preventDefault();\n onResize(clamp(width - DETAIL_KEYBOARD_STEP));\n }\n }\n\n return (\n <button\n type=\"button\"\n data-testid=\"detail-resize-handle\"\n aria-label=\"Resize detail panel\"\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"4px\",\n cursor: \"col-resize\",\n background: \"transparent\",\n border: \"none\",\n padding: 0,\n zIndex: 10,\n transition: \"background 0.1s\",\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLElement).style.background =\n \"color-mix(in srgb, var(--color-accent) 60%, transparent)\";\n }}\n onMouseLeave={(e) => {\n if (!dragging.current) {\n (e.currentTarget as HTMLElement).style.background = \"transparent\";\n }\n }}\n />\n );\n}\n","/**\n * DetailSummary — 2-line summary block for a selected event.\n *\n * Line 1: {tsFmt} · {direction-word} · {kindTag} · {method ?? actionType ?? \"—\"}\n * Line 2: Status: {status} · Latency: {latencyMs}ms or \"—\"\n *\n * Status coloring: ok/200 → --color-success, error → --color-destructive,\n * others → --color-text-muted.\n *\n * No raw #hex literals.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent } from \"@ahp-inspector/shared\";\nimport type { JSX } from \"react\";\n\ninterface DetailSummaryProps {\n event: AhpEvent;\n latencyMs: number | null;\n status: Status;\n}\n\nfunction directionWord(dir: string): string {\n switch (dir) {\n case \"c2s\":\n return \"Client → Server\";\n case \"s2c\":\n return \"Server → Client\";\n default:\n return \"Internal\";\n }\n}\n\nfunction statusColor(status: Status): string {\n if (status === \"ok\") return \"var(--color-success)\";\n if (status === \"error\") return \"var(--color-destructive)\";\n return \"var(--color-text-muted)\";\n}\n\nfunction fmtTs(ts: number): string {\n const d = new Date(ts);\n const hh = d.getUTCHours().toString().padStart(2, \"0\");\n const mm = d.getUTCMinutes().toString().padStart(2, \"0\");\n const ss = d.getUTCSeconds().toString().padStart(2, \"0\");\n const ms = d.getUTCMilliseconds().toString().padStart(3, \"0\");\n return `${hh}:${mm}:${ss}.${ms}`;\n}\n\nfunction kindTagFor(kind: AhpEvent[\"kind\"]): string {\n switch (kind) {\n case \"request\":\n return \"REQ\";\n case \"response\":\n return \"RES\";\n case \"client-notification\":\n case \"server-notification\":\n case \"protocol-notification\":\n return \"NTF\";\n case \"action\":\n return \"ACT\";\n case \"parse-error\":\n return \"BAD\";\n case \"log\":\n return \"LOG\";\n default:\n return \"?\";\n }\n}\n\nexport function DetailSummary({ event, latencyMs, status }: DetailSummaryProps): JSX.Element {\n const tsFmt = fmtTs(event.ts);\n const dirWord = directionWord(event.dir);\n const kindTag = kindTagFor(event.kind);\n const methodLabel = event.method ?? event.actionType ?? \"—\";\n\n return (\n <div data-testid=\"detail-summary\" style={{ padding: \"var(--space-2) var(--space-3)\" }}>\n <div\n style={{\n fontSize: \"var(--text-row-size)\",\n fontFamily: \"var(--font-mono)\",\n color: \"var(--color-text)\",\n lineHeight: \"var(--text-row-line)\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {tsFmt} · {dirWord} · {kindTag} · {methodLabel}\n </div>\n <div\n style={{\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n color: \"var(--color-text-muted)\",\n lineHeight: \"var(--text-row-line)\",\n marginTop: \"2px\",\n }}\n >\n Status: <span style={{ color: statusColor(status) }}>{status}</span>\n {\" · \"}\n Latency: {latencyMs !== null ? `${latencyMs}ms` : \"—\"}\n </div>\n </div>\n );\n}\n","/**\n * DetailTabs — tablist for Pretty / Raw JSON views.\n *\n * Keyboard: Left/Right arrows navigate; Enter/Space activate.\n * Active tab: 2px --color-accent bottom border, weight 600.\n *\n * No raw #hex literals.\n */\nimport type { JSX, KeyboardEvent } from \"react\";\n\ntype Tab = \"pretty\" | \"raw\";\n\ninterface DetailTabsProps {\n active: Tab;\n onChange(tab: Tab): void;\n}\n\nconst TABS: { id: Tab; label: string }[] = [\n { id: \"pretty\", label: \"Pretty\" },\n { id: \"raw\", label: \"Raw\" },\n];\n\nexport function DetailTabs({ active, onChange }: DetailTabsProps): JSX.Element {\n function handleKeyDown(e: KeyboardEvent<HTMLButtonElement>, idx: number): void {\n if (e.key === \"ArrowLeft\" || e.key === \"ArrowRight\") {\n e.preventDefault();\n const next =\n e.key === \"ArrowRight\" ? (idx + 1) % TABS.length : (idx - 1 + TABS.length) % TABS.length;\n const tab = TABS[next];\n if (tab) onChange(tab.id);\n }\n }\n\n return (\n <div\n role=\"tablist\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n padding: \"0 var(--space-3)\",\n borderBottom: \"1px solid var(--color-border)\",\n height: \"var(--filter-bar-height)\",\n }}\n >\n {TABS.map((tab, idx) => {\n const isActive = tab.id === active;\n return (\n <button\n key={tab.id}\n role=\"tab\"\n aria-selected={isActive}\n tabIndex={isActive ? 0 : -1}\n type=\"button\"\n onClick={() => onChange(tab.id)}\n onKeyDown={(e) => handleKeyDown(e, idx)}\n style={{\n background: \"none\",\n border: \"none\",\n borderBottom: isActive ? \"2px solid var(--color-accent)\" : \"2px solid transparent\",\n color: isActive ? \"var(--color-text)\" : \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n fontWeight: isActive ? \"var(--weight-semibold)\" : \"var(--weight-regular)\",\n padding: \"var(--space-2) var(--space-2)\",\n marginBottom: \"-1px\",\n }}\n >\n {tab.label}\n </button>\n );\n })}\n </div>\n );\n}\n","import { createElement, useRef, useState, useEffect, useId } from 'react';\n\nconst isBoolean = data => {\n return typeof data === 'boolean' || data instanceof Boolean;\n};\nconst isNumber = data => {\n return typeof data === 'number' || data instanceof Number;\n};\nconst isBigInt = data => {\n return typeof data === 'bigint' || data instanceof BigInt;\n};\nconst isDate = data => {\n return !!data && data instanceof Date;\n};\nconst isString = data => {\n return typeof data === 'string' || data instanceof String;\n};\nconst isArray = data => {\n return Array.isArray(data);\n};\nconst isObject = data => {\n return typeof data === 'object' && data !== null;\n};\nconst isFunction = data => {\n return !!data && data instanceof Object && typeof data === 'function';\n};\n\nfunction quoteString(value, quoted) {\n if (quoted === void 0) {\n quoted = false;\n }\n return !value || quoted ? `\"${value}\"` : value;\n}\nfunction quoteStringValue(value, quoted, stringify) {\n if (stringify) {\n return JSON.stringify(value);\n }\n return quoted ? `\"${value}\"` : value;\n}\nfunction ExpandableObject(_ref) {\n let {\n field,\n value,\n data,\n lastElement,\n openBracket,\n closeBracket,\n level,\n style,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref;\n const shouldExpandNodeCalledRef = useRef(false);\n const [expanded, setExpanded] = useState(() => shouldExpandNode(level, value, field));\n const expanderButtonRef = useRef(null);\n useEffect(() => {\n if (!shouldExpandNodeCalledRef.current) {\n shouldExpandNodeCalledRef.current = true;\n } else {\n setExpanded(shouldExpandNode(level, value, field));\n }\n }, [shouldExpandNode]);\n const contentsId = useId();\n if (data.length === 0) {\n return EmptyObject({\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n });\n }\n const expanderIconStyle = expanded ? style.collapseIcon : style.expandIcon;\n const ariaLabel = expanded ? style.ariaLables.collapseJson : style.ariaLables.expandJson;\n const childLevel = level + 1;\n const lastIndex = data.length - 1;\n const setExpandWithCallback = newExpandValue => {\n if (expanded !== newExpandValue && (!beforeExpandChange || beforeExpandChange({\n level,\n value,\n field,\n newExpandValue\n }))) {\n setExpanded(newExpandValue);\n }\n };\n const onKeyDown = e => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n e.preventDefault();\n setExpandWithCallback(e.key === 'ArrowRight');\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const direction = e.key === 'ArrowUp' ? -1 : 1;\n if (!outerRef.current) return;\n const buttonElements = outerRef.current.querySelectorAll('[role=button]');\n let currentIndex = -1;\n for (let i = 0; i < buttonElements.length; i++) {\n if (buttonElements[i].tabIndex === 0) {\n currentIndex = i;\n break;\n }\n }\n if (currentIndex < 0) {\n return;\n }\n const nextIndex = (currentIndex + direction + buttonElements.length) % buttonElements.length;\n buttonElements[currentIndex].tabIndex = -1;\n buttonElements[nextIndex].tabIndex = 0;\n buttonElements[nextIndex].focus();\n }\n };\n const onClick = () => {\n var _outerRef$current;\n setExpandWithCallback(!expanded);\n const buttonElement = expanderButtonRef.current;\n if (!buttonElement) return;\n const prevButtonElement = (_outerRef$current = outerRef.current) === null || _outerRef$current === void 0 ? void 0 : _outerRef$current.querySelector('[role=button][tabindex=\"0\"]');\n if (prevButtonElement) {\n prevButtonElement.tabIndex = -1;\n }\n buttonElement.tabIndex = 0;\n buttonElement.focus();\n };\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-expanded\": expanded,\n \"aria-selected\": undefined\n }, /*#__PURE__*/createElement(\"span\", {\n className: expanderIconStyle,\n onClick: onClick,\n onKeyDown: onKeyDown,\n role: 'button',\n \"aria-label\": ariaLabel,\n \"aria-expanded\": expanded,\n \"aria-controls\": expanded ? contentsId : undefined,\n ref: expanderButtonRef,\n tabIndex: level === 0 ? 0 : -1\n }), (field || field === '') && (clickToExpandNode ? (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.clickableLabel,\n onClick: onClick,\n onKeyDown: onKeyDown\n }, quoteString(field, style.quotesForFieldNames), \":\")) : (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\"))), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), expanded ? (/*#__PURE__*/createElement(\"ul\", {\n id: contentsId,\n role: 'group',\n className: style.childFieldsContainer\n }, data.map((dataElement, index) => (/*#__PURE__*/createElement(DataRender, {\n key: dataElement[0] || index,\n field: dataElement[0],\n value: dataElement[1],\n style: style,\n lastElement: index === lastIndex,\n level: childLevel,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n beforeExpandChange: beforeExpandChange,\n outerRef: outerRef\n }))))) : (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.collapsedContent,\n onClick: onClick,\n onKeyDown: onKeyDown\n })), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction EmptyObject(_ref2) {\n let {\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n } = _ref2;\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction JsonObject(_ref3) {\n let {\n field,\n value,\n style,\n lastElement,\n shouldExpandNode,\n clickToExpandNode,\n level,\n outerRef,\n beforeExpandChange\n } = _ref3;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '{',\n closeBracket: '}',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: Object.keys(value).map(key => [key, value[key]]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonArray(_ref4) {\n let {\n field,\n value,\n style,\n lastElement,\n level,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref4;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '[',\n closeBracket: ']',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: value.map(element => [undefined, element]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonPrimitiveValue(_ref5) {\n let {\n field,\n value,\n style,\n lastElement\n } = _ref5;\n let stringValue;\n let valueStyle = style.otherValue;\n if (value === null) {\n stringValue = 'null';\n valueStyle = style.nullValue;\n } else if (value === undefined) {\n stringValue = 'undefined';\n valueStyle = style.undefinedValue;\n } else if (isString(value)) {\n stringValue = quoteStringValue(value, !style.noQuotesForStringValues, style.stringifyStringValues);\n valueStyle = style.stringValue;\n } else if (isBoolean(value)) {\n stringValue = value ? 'true' : 'false';\n valueStyle = style.booleanValue;\n } else if (isNumber(value)) {\n stringValue = value.toString();\n valueStyle = style.numberValue;\n } else if (isBigInt(value)) {\n stringValue = `${value.toString()}n`;\n valueStyle = style.numberValue;\n } else if (isDate(value)) {\n stringValue = value.toISOString();\n } else if (isFunction(value)) {\n stringValue = 'function() { }';\n } else {\n stringValue = value.toString();\n }\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: valueStyle\n }, stringValue), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction DataRender(props) {\n const value = props.value;\n if (isArray(value)) {\n return /*#__PURE__*/createElement(JsonArray, Object.assign({}, props));\n }\n if (isObject(value) && !isDate(value) && !isFunction(value)) {\n return /*#__PURE__*/createElement(JsonObject, Object.assign({}, props));\n }\n return /*#__PURE__*/createElement(JsonPrimitiveValue, Object.assign({}, props));\n}\n\nvar styles = {\"container-base\":\"_GzYRV\",\"punctuation-base\":\"_3eOF8\",\"pointer\":\"_1MFti\",\"expander-base\":\"_f10Tu _1MFti\",\"expand-icon\":\"_1UmXx\",\"collapse-icon\":\"_1LId0\",\"collapsed-content-base\":\"_1pNG9 _1MFti\",\"container-light\":\"_2IvMF _GzYRV\",\"basic-element-style\":\"_2bkNM\",\"child-fields-container\":\"_1BXBN\",\"label-light\":\"_1MGIk\",\"clickable-label-light\":\"_2YKJg _1MGIk _1MFti\",\"punctuation-light\":\"_3uHL6 _3eOF8\",\"value-null-light\":\"_2T6PJ\",\"value-undefined-light\":\"_1Gho6\",\"value-string-light\":\"_vGjyY\",\"value-number-light\":\"_1bQdo\",\"value-boolean-light\":\"_3zQKs\",\"value-other-light\":\"_1xvuR\",\"collapse-icon-light\":\"_oLqym _f10Tu _1MFti _1LId0\",\"expand-icon-light\":\"_2AXVT _f10Tu _1MFti _1UmXx\",\"collapsed-content-light\":\"_2KJWg _1pNG9 _1MFti\",\"container-dark\":\"_11RoI _GzYRV\",\"expand-icon-dark\":\"_17H2C _f10Tu _1MFti _1UmXx\",\"collapse-icon-dark\":\"_3QHg2 _f10Tu _1MFti _1LId0\",\"collapsed-content-dark\":\"_3fDAz _1pNG9 _1MFti\",\"label-dark\":\"_2bSDX\",\"clickable-label-dark\":\"_1RQEj _2bSDX _1MFti\",\"punctuation-dark\":\"_gsbQL _3eOF8\",\"value-null-dark\":\"_LaAZe\",\"value-undefined-dark\":\"_GTKgm\",\"value-string-dark\":\"_Chy1W\",\"value-number-dark\":\"_2bveF\",\"value-boolean-dark\":\"_2vRm-\",\"value-other-dark\":\"_1prJR\"};\n\nconst defaultAriaLables = {\n collapseJson: 'collapse JSON',\n expandJson: 'expand JSON'\n};\nconst defaultStyles = {\n container: styles['container-light'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-light'],\n clickableLabel: styles['clickable-label-light'],\n nullValue: styles['value-null-light'],\n undefinedValue: styles['value-undefined-light'],\n stringValue: styles['value-string-light'],\n booleanValue: styles['value-boolean-light'],\n numberValue: styles['value-number-light'],\n otherValue: styles['value-other-light'],\n punctuation: styles['punctuation-light'],\n collapseIcon: styles['collapse-icon-light'],\n expandIcon: styles['expand-icon-light'],\n collapsedContent: styles['collapsed-content-light'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst darkStyles = {\n container: styles['container-dark'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-dark'],\n clickableLabel: styles['clickable-label-dark'],\n nullValue: styles['value-null-dark'],\n undefinedValue: styles['value-undefined-dark'],\n stringValue: styles['value-string-dark'],\n booleanValue: styles['value-boolean-dark'],\n numberValue: styles['value-number-dark'],\n otherValue: styles['value-other-dark'],\n punctuation: styles['punctuation-dark'],\n collapseIcon: styles['collapse-icon-dark'],\n expandIcon: styles['expand-icon-dark'],\n collapsedContent: styles['collapsed-content-dark'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst allExpanded = () => true;\nconst collapseAllNested = level => level < 1;\nconst JsonView = _ref => {\n let {\n data,\n style = defaultStyles,\n shouldExpandNode = allExpanded,\n clickToExpandNode = false,\n beforeExpandChange,\n compactTopLevel,\n ...ariaAttrs\n } = _ref;\n const outerRef = useRef(null);\n return /*#__PURE__*/createElement(\"div\", Object.assign({\n \"aria-label\": 'JSON view'\n }, ariaAttrs, {\n className: style.container,\n ref: outerRef,\n role: 'tree'\n }), compactTopLevel && isObject(data) ? Object.entries(data).map(_ref2 => {\n let [key, value] = _ref2;\n return /*#__PURE__*/createElement(DataRender, {\n key: key,\n field: key,\n value: value,\n style: {\n ...defaultStyles,\n ...style\n },\n lastElement: true,\n level: 1,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n beforeExpandChange: beforeExpandChange,\n outerRef: outerRef\n });\n }) : (/*#__PURE__*/createElement(DataRender, {\n value: data,\n style: {\n ...defaultStyles,\n ...style\n },\n lastElement: true,\n level: 0,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n outerRef: outerRef,\n beforeExpandChange: beforeExpandChange\n })));\n};\n\nexport { JsonView, allExpanded, collapseAllNested, darkStyles, defaultStyles };\n//# sourceMappingURL=index.modern.js.map\n","/**\n * TruncationBanner — warning shown when payload exceeds 256KB or is server-truncated.\n *\n * No raw #hex literals; uses CSS variable color-mix pattern from tokens.css.\n */\n\nimport { AlertTriangle } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface TruncationBannerProps {\n kind: \"client-cap\" | \"server-cap\";\n bytes?: number;\n onOpenRaw?(): void;\n onCopyFull?(): void;\n}\n\nexport function TruncationBanner({\n kind,\n bytes,\n onOpenRaw,\n onCopyFull,\n}: TruncationBannerProps): JSX.Element {\n return (\n <div\n data-testid=\"truncation-banner\"\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-2) var(--space-3)\",\n background: \"color-mix(in srgb, var(--color-warning) 14%, var(--color-bg))\",\n color: \"var(--color-warning)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n }}\n >\n <AlertTriangle size={14} style={{ flexShrink: 0, marginTop: \"1px\" }} />\n <div>\n {kind === \"client-cap\" ? (\n <>\n Tree view truncated at 256 KB to keep the UI responsive.{\" \"}\n {onOpenRaw && (\n <button\n type=\"button\"\n onClick={onOpenRaw}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"var(--color-warning)\",\n cursor: \"pointer\",\n textDecoration: \"underline\",\n padding: 0,\n fontSize: \"inherit\",\n fontFamily: \"inherit\",\n }}\n >\n [Open Raw]\n </button>\n )}\n {onOpenRaw && onCopyFull && \" \"}\n {onCopyFull && (\n <button\n type=\"button\"\n onClick={onCopyFull}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"var(--color-warning)\",\n cursor: \"pointer\",\n textDecoration: \"underline\",\n padding: 0,\n fontSize: \"inherit\",\n fontFamily: \"inherit\",\n }}\n >\n [Copy full payload]\n </button>\n )}\n </>\n ) : (\n `Payload truncated at ${bytes != null ? Math.round(bytes / 1024) : \"?\"} KB.`\n )}\n </div>\n </div>\n );\n}\n","/**\n * PrettyJsonView — renders a collapsible JSON tree via react-json-view-lite.\n *\n * T-03-04-02: If JSON.stringify(data).length > 256KB, show TruncationBanner\n * instead of the tree. Raw view is still available.\n *\n * No raw #hex literals — token colors come from CSS variables.\n * react-json-view-lite uses text-only rendering, no eval (verified 03-RESEARCH).\n */\nimport type { JSX } from \"react\";\nimport { defaultStyles, JsonView } from \"react-json-view-lite\";\nimport \"react-json-view-lite/dist/index.css\";\nimport { TruncationBanner } from \"./TruncationBanner.js\";\n\nconst CLIENT_CAP_BYTES = 256 * 1024; // 256KB\n\nconst JSON_STYLES: typeof defaultStyles = {\n ...defaultStyles,\n container: \"ahp-json-container\",\n basicChildStyle: \"ahp-json-child\",\n label: \"ahp-json-label\",\n clickableLabel: \"ahp-json-label ahp-json-clickable-label\",\n nullValue: \"ahp-json-null\",\n undefinedValue: \"ahp-json-null\",\n numberValue: \"ahp-json-number\",\n stringValue: \"ahp-json-string\",\n booleanValue: \"ahp-json-boolean\",\n otherValue: \"ahp-json-other\",\n punctuation: \"ahp-json-punctuation\",\n expandIcon: \"ahp-json-expander\",\n collapseIcon: \"ahp-json-expander\",\n collapsedContent: \"ahp-json-collapsed\",\n childFieldsContainer: \"ahp-json-children\",\n};\n\ninterface PrettyJsonViewProps {\n data: unknown;\n query?: string;\n capBytes?: number;\n onOpenRaw?(): void;\n}\n\nexport function PrettyJsonView({\n data,\n capBytes = CLIENT_CAP_BYTES,\n onOpenRaw,\n}: PrettyJsonViewProps): JSX.Element {\n let serialized: string;\n try {\n serialized = JSON.stringify(data);\n } catch {\n serialized = \"[Circular or non-serializable value]\";\n }\n\n if (serialized.length > capBytes) {\n return (\n <TruncationBanner\n kind=\"client-cap\"\n bytes={serialized.length}\n {...(onOpenRaw !== undefined ? { onOpenRaw } : {})}\n />\n );\n }\n\n return (\n <div\n data-testid=\"pretty-json-view\"\n className=\"ahp-json-view\"\n style={{\n padding: \"var(--space-2) var(--space-3)\",\n overflow: \"auto\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text)\",\n background: \"var(--color-json-bg)\",\n flex: 1,\n }}\n >\n <JsonView\n data={data as object}\n shouldExpandNode={(level: number) => level < 5}\n clickToExpandNode\n style={JSON_STYLES}\n />\n </div>\n );\n}\n","/**\n * PrivacyCaption — always-rendered footer line in the detail panel.\n *\n * T-03-04-03: Discloses that copy may include raw payload (tokens, prompts, paths).\n *\n * No raw #hex literals.\n */\n\nimport { Info } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\nexport function PrivacyCaption(): JSX.Element {\n return (\n <div\n data-testid=\"privacy-caption\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n padding: \"var(--space-2) var(--space-3)\",\n color: \"var(--color-text-muted)\",\n fontSize: \"12px\",\n fontFamily: \"var(--font-sans)\",\n borderTop: \"1px solid var(--color-border)\",\n }}\n >\n <Info size={12} style={{ flexShrink: 0 }} />\n <span>Copy includes raw payload — may contain tokens, prompts, or paths.</span>\n </div>\n );\n}\n","/**\n * RawJsonView — renders JSON as plain text in a <pre> element.\n *\n * T-03-04-01: React auto-escapes text children — NO dangerouslySetInnerHTML.\n * This is the safe rendering guarantee for arbitrary event payloads.\n *\n * No raw #hex literals.\n */\nimport type { JSX } from \"react\";\n\ninterface RawJsonViewProps {\n data: unknown;\n query?: string;\n}\n\nexport function RawJsonView({ data }: RawJsonViewProps): JSX.Element {\n const text = (() => {\n try {\n return JSON.stringify(data, null, 2);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n })();\n\n return (\n <pre\n data-testid=\"raw-json-view\"\n style={{\n margin: 0,\n padding: \"var(--space-2) var(--space-3)\",\n overflow: \"auto\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text)\",\n flex: 1,\n whiteSpace: \"pre-wrap\",\n wordBreak: \"break-all\",\n }}\n >\n {text}\n </pre>\n );\n}\n","/**\n * Browser-only transport for lazy reconstructed state lookup.\n *\n * MUST NOT import node:, fs, path, hono, or @ahp-inspector/server.\n * boundary.test.ts enforces this at CI time.\n */\n\nimport { apiUrl } from \"./api-base.js\";\n\nexport type ReplayConfidence = \"complete\" | \"partial\" | \"unknown\";\nexport type StateResourceKind = \"root\" | \"session\" | \"terminal\" | \"unknown\";\n\nexport interface ReplayDiagnostic {\n readonly code: string;\n readonly severity: \"info\" | \"warning\" | \"error\";\n readonly eventIdx: number | null;\n readonly message: string;\n readonly details?: unknown;\n}\n\nexport interface ReplayClientIntent {\n readonly eventIdx: number;\n readonly ts: number;\n readonly clientSeq: number | null;\n readonly actionType: string | null;\n readonly resource: { readonly kind: StateResourceKind; readonly uri: string } | null;\n readonly ignored: boolean;\n readonly acceptedByServerSeq: number | null;\n}\n\nexport interface StateReplayCacheInfo {\n readonly hit: boolean;\n readonly size: number;\n readonly maxEntries: number;\n}\n\nexport interface StateAtResourceMetadata {\n readonly kind: StateResourceKind;\n readonly uri: string;\n readonly confidence: ReplayConfidence;\n readonly baselineEventIdx: number;\n readonly lastAppliedEventIdx: number;\n readonly baselineFromSeq: number | null;\n readonly lastServerSeq: number | null;\n readonly diagnosticCount: number;\n}\n\nexport interface StateAtSelectedResource extends StateAtResourceMetadata {\n readonly diagnostics: readonly ReplayDiagnostic[];\n readonly state: unknown;\n}\n\nexport interface StateAtSuccessResponse {\n readonly logKey: string;\n readonly targetIndex: number;\n readonly totalEvents: number;\n readonly confidence: ReplayConfidence;\n readonly diagnostics: readonly ReplayDiagnostic[];\n readonly resources: readonly StateAtResourceMetadata[];\n readonly selectedResource: StateAtSelectedResource | null;\n readonly intents: readonly ReplayClientIntent[];\n readonly cache: StateReplayCacheInfo;\n}\n\nexport type StateAtErrorCode = \"bad-request\" | \"no-active-log\" | \"not-found\" | \"log-mismatch\";\n\nexport interface StateAtErrorResponse {\n readonly code: StateAtErrorCode;\n readonly message: string;\n readonly totalEvents?: number;\n}\n\nexport type StateAtResponse = StateAtSuccessResponse | StateAtErrorResponse;\n\nexport interface FetchStateAtOptions {\n readonly logKey?: string | null;\n readonly resourceKind?: Exclude<StateResourceKind, \"unknown\">;\n readonly resourceUri?: string;\n readonly signal?: AbortSignal;\n}\n\nexport async function fetchStateAt(\n idx: number,\n options: FetchStateAtOptions = {},\n): Promise<StateAtSuccessResponse | null> {\n if (!Number.isInteger(idx) || idx < 0) {\n throw new Error(`Invalid state index: ${idx}`);\n }\n if ((options.resourceKind === undefined) !== (options.resourceUri === undefined)) {\n throw new Error(\"resourceKind and resourceUri must be provided together\");\n }\n\n const params = new URLSearchParams({ idx: String(idx) });\n if (options.logKey) params.set(\"logKey\", options.logKey);\n if (options.resourceKind !== undefined && options.resourceUri !== undefined) {\n params.set(\"resourceKind\", options.resourceKind);\n params.set(\"resourceUri\", options.resourceUri);\n }\n\n const init: RequestInit = options.signal !== undefined ? { signal: options.signal } : {};\n const resp = await fetch(apiUrl(`/api/state-at?${params.toString()}`), init);\n if (resp.status === 404) return null;\n if (!resp.ok) {\n const body = await readErrorBody(resp);\n const message = body?.message\n ? `${body.message} (${resp.status})`\n : `Failed to load state: ${resp.status}`;\n throw new Error(message);\n }\n return (await resp.json()) as StateAtSuccessResponse;\n}\n\nasync function readErrorBody(resp: Response): Promise<StateAtErrorResponse | null> {\n try {\n return (await resp.json()) as StateAtErrorResponse;\n } catch {\n return null;\n }\n}\n","import type { JSX } from \"react\";\nimport type { ReplayConfidence } from \"../../transport/state-client.js\";\n\ninterface StateConfidenceBadgeProps {\n readonly confidence: ReplayConfidence;\n readonly label: string;\n}\n\nconst CONFIDENCE_TEXT: Record<ReplayConfidence, string | null> = {\n complete: null,\n partial: \"Reconstruction may be incomplete.\",\n unknown: \"State cannot be treated as authoritative.\",\n};\n\nexport function StateConfidenceBadge({\n confidence,\n label,\n}: StateConfidenceBadgeProps): JSX.Element {\n const caution = CONFIDENCE_TEXT[confidence];\n\n return (\n <div className=\"state-confidence\" data-confidence={confidence}>\n <span className=\"state-confidence-label\">{label}</span>\n <span className=\"state-confidence-pill\">{toTitle(confidence)}</span>\n {caution && <span className=\"state-confidence-caution\">{caution}</span>}\n </div>\n );\n}\n\nfunction toTitle(value: ReplayConfidence): string {\n return value.charAt(0).toUpperCase() + value.slice(1);\n}\n","import type { ReplayConfidence } from \"../../transport/state-client.js\";\nimport type { PinnedStatePoint } from \"./state-pins.js\";\n\nexport const MAX_CHANGED_TOP_LEVEL_PATHS = 25;\n\nexport interface StateComparisonResult {\n readonly from: PinnedStatePoint;\n readonly to: PinnedStatePoint;\n readonly changedPaths: readonly string[];\n readonly overflowCount: number;\n readonly same: boolean;\n readonly confidence: ReplayConfidence;\n}\n\nexport function comparePinnedStatePoints(\n from: PinnedStatePoint,\n to: PinnedStatePoint,\n): StateComparisonResult {\n const allChangedPaths = getChangedTopLevelPaths(from.state, to.state);\n const changedPaths = allChangedPaths.slice(0, MAX_CHANGED_TOP_LEVEL_PATHS);\n\n return {\n from,\n to,\n changedPaths,\n overflowCount: Math.max(0, allChangedPaths.length - changedPaths.length),\n same: allChangedPaths.length === 0,\n confidence: compareConfidence(from.confidence, to.confidence),\n };\n}\n\nfunction getChangedTopLevelPaths(from: unknown, to: unknown): string[] {\n if (isPlainComparableObject(from) && isPlainComparableObject(to)) {\n return Array.from(new Set([...Object.keys(from), ...Object.keys(to)])).filter(\n (key) => stableStringify(from[key]) !== stableStringify(to[key]),\n );\n }\n\n if (Array.isArray(from) && Array.isArray(to)) {\n if (from.length !== to.length) {\n return [\"length\"];\n }\n\n return from\n .map((value, index) => ({ index, value }))\n .filter(({ index, value }) => stableStringify(value) !== stableStringify(to[index]))\n .map(({ index }) => `[${index}]`);\n }\n\n return stableStringify(from) === stableStringify(to) ? [] : [\"(root)\"];\n}\n\nfunction isPlainComparableObject(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction stableStringify(value: unknown): string {\n try {\n const serialized = JSON.stringify(value);\n return serialized === undefined ? \"[Circular or non-serializable value]\" : serialized;\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n}\n\nfunction compareConfidence(from: ReplayConfidence, to: ReplayConfidence): ReplayConfidence {\n if (from === \"complete\" && to === \"complete\") {\n return \"complete\";\n }\n if (from === \"partial\" || to === \"partial\") {\n return \"partial\";\n }\n return \"unknown\";\n}\n","import type { StateAtSelectedResource } from \"../../transport/state-client.js\";\n\nexport const MAX_PINNED_STATE_POINTS = 2;\n\nexport interface PinnedStatePoint {\n readonly id: string;\n readonly logKey: string;\n readonly targetIndex: number;\n readonly eventLabel: string;\n readonly eventTimestamp: number;\n readonly resourceKind: StateAtSelectedResource[\"kind\"];\n readonly resourceUri: string;\n readonly confidence: StateAtSelectedResource[\"confidence\"];\n readonly diagnosticCount: number;\n readonly baselineEventIdx: number;\n readonly lastAppliedEventIdx: number;\n readonly baselineFromSeq: number | null;\n readonly lastServerSeq: number | null;\n readonly state: unknown;\n}\n\ninterface CreatePinnedStatePointArgs {\n readonly logKey: string;\n readonly targetIndex: number;\n readonly eventLabel: string;\n readonly eventTimestamp: number;\n readonly resource: StateAtSelectedResource;\n}\n\nexport function createPinnedStatePoint({\n logKey,\n targetIndex,\n eventLabel,\n eventTimestamp,\n resource,\n}: CreatePinnedStatePointArgs): PinnedStatePoint {\n return {\n id: `${logKey}:${targetIndex}:${resource.kind}:${resource.uri}`,\n logKey,\n targetIndex,\n eventLabel,\n eventTimestamp,\n resourceKind: resource.kind,\n resourceUri: resource.uri,\n confidence: resource.confidence,\n diagnosticCount: resource.diagnosticCount,\n baselineEventIdx: resource.baselineEventIdx,\n lastAppliedEventIdx: resource.lastAppliedEventIdx,\n baselineFromSeq: resource.baselineFromSeq,\n lastServerSeq: resource.lastServerSeq,\n state: resource.state,\n };\n}\n\nexport function upsertPinnedStatePoint(\n existing: readonly PinnedStatePoint[],\n next: PinnedStatePoint,\n): readonly PinnedStatePoint[] {\n const duplicateIndex = existing.findIndex((point) => point.id === next.id);\n if (duplicateIndex >= 0) {\n return existing.map((point, index) => (index === duplicateIndex ? next : point));\n }\n\n return [...existing, next].slice(-MAX_PINNED_STATE_POINTS);\n}\n\nexport function removePinnedStatePoint(\n existing: readonly PinnedStatePoint[],\n id: string,\n): readonly PinnedStatePoint[] {\n return existing.filter((point) => point.id !== id);\n}\n\nexport function clearPinnedStatePoints(): readonly PinnedStatePoint[] {\n return [];\n}\n","import type { JSX } from \"react\";\nimport { StateConfidenceBadge } from \"./StateConfidenceBadge.js\";\nimport { comparePinnedStatePoints } from \"./state-compare.js\";\nimport { MAX_PINNED_STATE_POINTS, type PinnedStatePoint } from \"./state-pins.js\";\n\ninterface PinnedStatePanelProps {\n readonly points: readonly PinnedStatePoint[];\n readonly onRemove: (id: string) => void;\n readonly onClear: () => void;\n}\n\nexport function PinnedStatePanel({\n points,\n onRemove,\n onClear,\n}: PinnedStatePanelProps): JSX.Element {\n const comparison = getComparison(points);\n\n return (\n <section className=\"pinned-state-panel\" aria-label=\"Pinned state points\">\n <div className=\"pinned-state-header\">\n <div>\n <h4>Pinned state points</h4>\n <p>{`Pinned ${points.length}/${MAX_PINNED_STATE_POINTS}`}</p>\n </div>\n {points.length > 0 && (\n <button type=\"button\" className=\"state-secondary-button\" onClick={onClear}>\n Clear pinned states\n </button>\n )}\n </div>\n\n {points.length === 0 ? (\n <p className=\"pinned-state-empty\">\n Pin two state points to compare before/after reducer state.\n </p>\n ) : (\n <ul className=\"pinned-state-list\">\n {points.map((point) => (\n <li key={point.id} className=\"pinned-state-card\">\n <div className=\"pinned-state-meta\">\n <span className=\"mono\">#{point.targetIndex}</span>\n <span>{point.eventLabel}</span>\n <span>{formatTimestamp(point.eventTimestamp)}</span>\n </div>\n <div className=\"state-resource-main\">\n <span className=\"state-resource-kind\">{point.resourceKind}</span>\n <span className=\"state-resource-uri\">{point.resourceUri}</span>\n </div>\n <StateConfidenceBadge confidence={point.confidence} label=\"Confidence\" />\n <div className=\"pinned-state-meta\">\n <span>{point.diagnosticCount} diagnostics</span>\n <span>baseline #{point.baselineEventIdx}</span>\n <span>applied #{point.lastAppliedEventIdx}</span>\n <span>baseline seq {point.baselineFromSeq ?? \"—\"}</span>\n <span>server seq {point.lastServerSeq ?? \"—\"}</span>\n </div>\n <div className=\"pinned-state-actions\">\n <button\n type=\"button\"\n className=\"state-secondary-button\"\n onClick={() => onRemove(point.id)}\n >\n Remove pinned state\n </button>\n </div>\n </li>\n ))}\n </ul>\n )}\n {comparison && (\n <section className=\"state-comparison\" aria-label=\"Pinned comparison\">\n <div className=\"state-comparison-header\">\n <h4>Pinned comparison</h4>\n <StateConfidenceBadge\n confidence={comparison.confidence}\n label=\"Comparison confidence\"\n />\n </div>\n <div className=\"state-comparison-points\">\n <ComparisonPoint label=\"From\" point={comparison.from} />\n <ComparisonPoint label=\"To\" point={comparison.to} />\n </div>\n {comparison.confidence !== \"complete\" && (\n <p className=\"state-comparison-warning\">\n Comparison may be incomplete because at least one pinned state is not complete.\n </p>\n )}\n {comparison.same ? (\n <p className=\"state-comparison-empty\">No top-level changes detected.</p>\n ) : (\n <div className=\"state-comparison-paths\">\n <span className=\"state-section-label\">Changed top-level paths</span>\n <ul>\n {comparison.changedPaths.map((path) => (\n <li key={path}>{path}</li>\n ))}\n </ul>\n {comparison.overflowCount > 0 && <p>{`and ${comparison.overflowCount} more`}</p>}\n </div>\n )}\n </section>\n )}\n </section>\n );\n}\n\nfunction getComparison(points: readonly PinnedStatePoint[]) {\n if (points.length !== MAX_PINNED_STATE_POINTS) {\n return null;\n }\n\n const [from, to] = points;\n if (!from || !to) {\n return null;\n }\n\n return comparePinnedStatePoints(from, to);\n}\n\nfunction ComparisonPoint({\n label,\n point,\n}: {\n readonly label: \"From\" | \"To\";\n readonly point: PinnedStatePoint;\n}): JSX.Element {\n return (\n <div>\n <span className=\"state-section-label\">{`${label} #${point.targetIndex}`}</span>\n <span>{point.eventLabel}</span>\n <span>\n {point.resourceKind} <span className=\"state-resource-uri\">{point.resourceUri}</span>\n </span>\n </div>\n );\n}\n\nfunction formatTimestamp(ts: number): string {\n if (!Number.isFinite(ts)) return \"unknown time\";\n return new Date(ts).toLocaleString();\n}\n","import { ChevronDown } from \"lucide-react\";\nimport { type JSX, useEffect, useRef, useState } from \"react\";\nimport type { StateAtSelectedResource } from \"../../transport/state-client.js\";\nimport { copyText } from \"./clipboard.js\";\n\ninterface StateCopyMenuProps {\n readonly targetIndex: number;\n readonly resource: StateAtSelectedResource;\n readonly onCopy: (message: string, ok: boolean) => void;\n}\n\nexport function StateCopyMenu({ targetIndex, resource, onCopy }: StateCopyMenuProps): JSX.Element {\n const [open, setOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return;\n function handler(e: MouseEvent) {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n }\n document.addEventListener(\"mousedown\", handler);\n return () => document.removeEventListener(\"mousedown\", handler);\n }, [open]);\n\n async function handleCopy(getContent: () => string) {\n setOpen(false);\n const text = getContent();\n try {\n await copyText(text);\n onCopy(`Copied ${text.length} chars`, true);\n } catch {\n onCopy(\"Copy failed. Select and copy manually.\", false);\n }\n }\n\n const menuItems = [\n { label: \"Copy state raw JSON\", action: () => stringifyState(resource.state) },\n { label: \"Copy state pretty JSON\", action: () => stringifyState(resource.state, 2) },\n { label: \"Copy state summary\", action: () => buildStateSummary(targetIndex, resource) },\n ];\n\n return (\n <div ref={menuRef} className=\"state-copy-menu\">\n <button\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={open}\n onClick={() => setOpen((current) => !current)}\n className=\"state-copy-button\"\n >\n Copy state <ChevronDown size={12} />\n </button>\n {open && (\n <div role=\"menu\" className=\"state-copy-menu-list\">\n {menuItems.map((item) => (\n <button\n key={item.label}\n role=\"menuitem\"\n type=\"button\"\n onClick={() => handleCopy(item.action)}\n className=\"state-copy-menu-item\"\n >\n {item.label}\n </button>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nfunction stringifyState(state: unknown, space?: number): string {\n try {\n return JSON.stringify(state, null, space);\n } catch {\n return \"[Circular or non-serializable value]\";\n }\n}\n\nfunction buildStateSummary(targetIndex: number, resource: StateAtSelectedResource): string {\n return [\n `target=#${targetIndex}`,\n `resource=${resource.kind} ${resource.uri}`,\n `confidence=${resource.confidence}`,\n `diagnostics=${resource.diagnostics.length}`,\n `baselineEvent=#${resource.baselineEventIdx}`,\n `lastAppliedEvent=#${resource.lastAppliedEventIdx}`,\n `baselineSeq=${resource.baselineFromSeq ?? \"—\"}`,\n `lastServerSeq=${resource.lastServerSeq ?? \"—\"}`,\n ].join(\"\\n\");\n}\n","import type { JSX } from \"react\";\nimport type {\n ReplayClientIntent,\n ReplayDiagnostic,\n StateReplayCacheInfo,\n} from \"../../transport/state-client.js\";\n\ninterface StateDiagnosticsPanelProps {\n readonly aggregateDiagnostics: readonly ReplayDiagnostic[];\n readonly selectedDiagnostics: readonly ReplayDiagnostic[];\n readonly intents: readonly ReplayClientIntent[];\n readonly cache: StateReplayCacheInfo;\n}\n\nexport function StateDiagnosticsPanel({\n aggregateDiagnostics,\n selectedDiagnostics,\n intents,\n cache,\n}: StateDiagnosticsPanelProps): JSX.Element {\n const hasDiagnostics = aggregateDiagnostics.length > 0 || selectedDiagnostics.length > 0;\n\n return (\n <section className=\"state-diagnostics\" aria-label=\"Replay diagnostics\">\n <div className=\"state-diagnostics-header\">\n <h4>Replay diagnostics</h4>\n <span>\n cache {cache.hit ? \"hit\" : \"miss\"} · {cache.size}/{cache.maxEntries}\n </span>\n <span>{intents.length} client intents</span>\n </div>\n {!hasDiagnostics ? (\n <p className=\"state-diagnostics-empty\">No replay diagnostics for this state point.</p>\n ) : (\n <div className=\"state-diagnostics-groups\">\n <DiagnosticGroup title=\"Aggregate\" diagnostics={aggregateDiagnostics} />\n <DiagnosticGroup title=\"Selected resource\" diagnostics={selectedDiagnostics} />\n </div>\n )}\n </section>\n );\n}\n\nfunction DiagnosticGroup({\n title,\n diagnostics,\n}: {\n readonly title: string;\n readonly diagnostics: readonly ReplayDiagnostic[];\n}): JSX.Element {\n if (diagnostics.length === 0) {\n return (\n <div className=\"state-diagnostic-group\">\n <h5>{title}</h5>\n <p className=\"state-diagnostics-empty\">No diagnostics.</p>\n </div>\n );\n }\n\n return (\n <div className=\"state-diagnostic-group\">\n <h5>{title}</h5>\n <ul>\n {diagnostics.map((diagnostic) => (\n <li\n key={`${title}-${diagnostic.code}-${diagnostic.eventIdx ?? \"none\"}-${diagnostic.message}`}\n >\n <span className=\"state-diagnostic-meta\">\n <span data-severity={diagnostic.severity}>{diagnostic.severity}</span>\n <span>{diagnostic.code}</span>\n {diagnostic.eventIdx !== null && <span>event #{diagnostic.eventIdx}</span>}\n </span>\n <span className=\"state-diagnostic-message\">{diagnostic.message}</span>\n </li>\n ))}\n </ul>\n </div>\n );\n}\n","import type { JSX } from \"react\";\nimport type { StateAtResourceMetadata, StateResourceKind } from \"../../transport/state-client.js\";\n\nexport type SelectableStateResourceKind = Exclude<StateResourceKind, \"unknown\">;\nexport type SelectableStateResource = StateAtResourceMetadata & {\n readonly kind: SelectableStateResourceKind;\n};\n\ninterface StateResourceSelectorProps {\n readonly resources: readonly StateAtResourceMetadata[];\n readonly selectedKey: string | null;\n readonly onSelect: (resource: SelectableStateResource) => void;\n}\n\nexport function isSelectableResource(\n resource: StateAtResourceMetadata,\n): resource is SelectableStateResource {\n return resource.kind === \"root\" || resource.kind === \"session\" || resource.kind === \"terminal\";\n}\n\nexport function stateResourceKey(resource: StateAtResourceMetadata): string {\n return `${resource.kind}\\u0000${resource.uri}`;\n}\n\nexport function chooseDefaultResource(\n resources: readonly StateAtResourceMetadata[],\n): SelectableStateResource | null {\n const selectable = resources.filter(isSelectableResource);\n return selectable.find((resource) => resource.confidence === \"complete\") ?? selectable[0] ?? null;\n}\n\nexport function StateResourceSelector({\n resources,\n selectedKey,\n onSelect,\n}: StateResourceSelectorProps): JSX.Element {\n return (\n <fieldset className=\"state-resource-selector\">\n <legend className=\"state-section-label\">Resources</legend>\n <div className=\"state-resource-list\">\n {resources.map((resource) => {\n const key = stateResourceKey(resource);\n const selectable = isSelectableResource(resource);\n const selected = selectable && key === selectedKey;\n const label = `${resource.kind} ${resource.uri} ${resource.confidence} confidence ${resource.diagnosticCount} diagnostics`;\n\n if (!selectable) {\n return (\n <div\n key={key}\n className=\"state-resource-option state-resource-option-disabled\"\n aria-disabled=\"true\"\n >\n <ResourceLabel resource={resource} />\n <span className=\"state-resource-unavailable\">Unavailable kind</span>\n </div>\n );\n }\n\n return (\n <button\n key={key}\n type=\"button\"\n className=\"state-resource-option\"\n aria-pressed={selected}\n aria-label={label}\n onClick={() => onSelect(resource)}\n >\n <ResourceLabel resource={resource} />\n </button>\n );\n })}\n </div>\n </fieldset>\n );\n}\n\nfunction ResourceLabel({ resource }: { readonly resource: StateAtResourceMetadata }): JSX.Element {\n return (\n <>\n <span className=\"state-resource-main\">\n <span className=\"state-resource-kind\">{resource.kind}</span>\n <span className=\"state-resource-uri\">{resource.uri}</span>\n </span>\n <span className=\"state-resource-meta\">\n <span data-confidence={resource.confidence}>{resource.confidence}</span>\n <span>{resource.diagnosticCount} diagnostics</span>\n </span>\n </>\n );\n}\n","import type { JSX } from \"react\";\nimport type { StateAtSelectedResource } from \"../../transport/state-client.js\";\n\ninterface StateSummaryViewProps {\n readonly resource: StateAtSelectedResource;\n}\n\nexport function StateSummaryView({ resource }: StateSummaryViewProps): JSX.Element {\n const shape = describeStateShape(resource.state);\n\n return (\n <div className=\"state-summary-view\" data-testid=\"state-summary-view\">\n <p className=\"state-summary-warning\">\n Reconstructed state is replay-derived. Confidence and diagnostics describe how complete this\n point-in-time view is.\n </p>\n <dl className=\"state-summary-grid\">\n <dt>Resource</dt>\n <dd>\n {resource.kind} <span className=\"state-resource-uri\">{resource.uri}</span>\n </dd>\n <dt>Confidence</dt>\n <dd data-confidence={resource.confidence}>{resource.confidence}</dd>\n <dt>Baseline event</dt>\n <dd>#{resource.baselineEventIdx}</dd>\n <dt>Last applied event</dt>\n <dd>#{resource.lastAppliedEventIdx}</dd>\n <dt>Baseline sequence</dt>\n <dd>{resource.baselineFromSeq ?? \"—\"}</dd>\n <dt>Last server sequence</dt>\n <dd>{resource.lastServerSeq ?? \"—\"}</dd>\n <dt>Diagnostics</dt>\n <dd>{resource.diagnostics.length}</dd>\n <dt>Top-level shape</dt>\n <dd>{shape.summary}</dd>\n </dl>\n {shape.details.length > 0 && (\n <ul className=\"state-shape-details\" aria-label=\"Top-level state keys\">\n {shape.details.map((detail) => (\n <li key={detail}>{detail}</li>\n ))}\n </ul>\n )}\n </div>\n );\n}\n\nfunction describeStateShape(state: unknown): { summary: string; details: string[] } {\n if (Array.isArray(state)) {\n return { summary: `array with ${state.length} items`, details: [] };\n }\n if (state && typeof state === \"object\") {\n const keys = Object.keys(state as Record<string, unknown>);\n return {\n summary: `object with ${keys.length} top-level keys`,\n details: keys.slice(0, 12),\n };\n }\n if (state === null) {\n return { summary: \"null\", details: [] };\n }\n const type = typeof state;\n return { summary: `${type}: ${previewValue(state)}`, details: [] };\n}\n\nfunction previewValue(value: unknown): string {\n const text = (() => {\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n })();\n return text.length > 80 ? `${text.slice(0, 77)}...` : text;\n}\n","import { Loader2 } from \"lucide-react\";\nimport { type JSX, useCallback, useEffect, useRef, useState } from \"react\";\nimport { fetchStateAt, type StateAtSuccessResponse } from \"../../transport/state-client.js\";\nimport { CopyToast } from \"./CopyToast.js\";\nimport { PinnedStatePanel } from \"./PinnedStatePanel.js\";\nimport { PrettyJsonView } from \"./PrettyJsonView.js\";\nimport { RawJsonView } from \"./RawJsonView.js\";\nimport { StateConfidenceBadge } from \"./StateConfidenceBadge.js\";\nimport { StateCopyMenu } from \"./StateCopyMenu.js\";\nimport { StateDiagnosticsPanel } from \"./StateDiagnosticsPanel.js\";\nimport {\n chooseDefaultResource,\n type SelectableStateResource,\n StateResourceSelector,\n stateResourceKey,\n} from \"./StateResourceSelector.js\";\nimport { StateSummaryView } from \"./StateSummaryView.js\";\nimport {\n clearPinnedStatePoints,\n createPinnedStatePoint,\n type PinnedStatePoint,\n removePinnedStatePoint,\n upsertPinnedStatePoint,\n} from \"./state-pins.js\";\n\ninterface StateInspectorPanelProps {\n readonly idx: number;\n readonly logKey: string | null;\n readonly eventLabel?: string;\n readonly eventTimestamp?: number;\n readonly pinnedPoints?: readonly PinnedStatePoint[];\n readonly onPinnedPointsChange?: (points: readonly PinnedStatePoint[]) => void;\n}\n\ntype LoadState =\n | { readonly status: \"idle\"; readonly data: null; readonly error: null }\n | { readonly status: \"loading\"; readonly data: null; readonly error: null }\n | { readonly status: \"error\"; readonly data: null; readonly error: string }\n | { readonly status: \"ok\"; readonly data: StateAtSuccessResponse; readonly error: null };\n\ntype StateTab = \"summary\" | \"pretty\" | \"raw\";\n\ntype SelectedLoadState =\n | { readonly status: \"idle\"; readonly data: null; readonly error: null }\n | { readonly status: \"loading\"; readonly data: null; readonly error: null }\n | { readonly status: \"error\"; readonly data: null; readonly error: string }\n | {\n readonly status: \"ok\";\n readonly data: NonNullable<StateAtSuccessResponse[\"selectedResource\"]>;\n readonly error: null;\n };\n\nconst IDLE_STATE: LoadState = { status: \"idle\", data: null, error: null };\nconst IDLE_SELECTED_STATE: SelectedLoadState = { status: \"idle\", data: null, error: null };\n\nexport function StateInspectorPanel({\n idx,\n logKey,\n eventLabel = \"unknown event\",\n eventTimestamp = Number.NaN,\n pinnedPoints: controlledPinnedPoints,\n onPinnedPointsChange,\n}: StateInspectorPanelProps): JSX.Element {\n const [open, setOpen] = useState(false);\n const [loadState, setLoadState] = useState<LoadState>(IDLE_STATE);\n const [selectedKey, setSelectedKey] = useState<string | null>(null);\n const [selectedLoadState, setSelectedLoadState] =\n useState<SelectedLoadState>(IDLE_SELECTED_STATE);\n const [localPinnedPoints, setLocalPinnedPoints] = useState<readonly PinnedStatePoint[]>([]);\n const pinnedPoints = controlledPinnedPoints ?? localPinnedPoints;\n const setPinnedPoints = onPinnedPointsChange ?? setLocalPinnedPoints;\n const [stateTab, setStateTab] = useState<StateTab>(\"summary\");\n const [toast, setToast] = useState<{ message: string; kind: \"success\" | \"error\" } | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const selectedAbortRef = useRef<AbortController | null>(null);\n const requestKey = `${idx}\\u0000${logKey ?? \"\"}`;\n const lastRequestKeyRef = useRef(requestKey);\n const lastLogKeyRef = useRef(logKey);\n\n const loadSelectedResource = useCallback(\n async (resource: SelectableStateResource) => {\n if (selectedAbortRef.current) selectedAbortRef.current.abort();\n const controller = new AbortController();\n selectedAbortRef.current = controller;\n setSelectedLoadState({ status: \"loading\", data: null, error: null });\n\n try {\n const data = await fetchStateAt(idx, {\n logKey,\n resourceKind: resource.kind,\n resourceUri: resource.uri,\n signal: controller.signal,\n });\n if (controller.signal.aborted) return;\n if (data?.selectedResource) {\n setLoadState((current) =>\n current.status === \"ok\"\n ? { status: \"ok\", data: { ...data, resources: current.data.resources }, error: null }\n : { status: \"ok\", data, error: null },\n );\n setSelectedLoadState({ status: \"ok\", data: data.selectedResource, error: null });\n } else {\n setSelectedLoadState({\n status: \"error\",\n data: null,\n error: `No reconstructed ${resource.kind} state was returned for ${resource.uri}.`,\n });\n }\n } catch (err) {\n if (controller.signal.aborted) return;\n const message = err instanceof Error ? err.message : String(err);\n setSelectedLoadState({ status: \"error\", data: null, error: message });\n }\n },\n [idx, logKey],\n );\n\n const loadMetadata = useCallback(async () => {\n if (abortRef.current) abortRef.current.abort();\n if (selectedAbortRef.current) selectedAbortRef.current.abort();\n const controller = new AbortController();\n abortRef.current = controller;\n setLoadState({ status: \"loading\", data: null, error: null });\n setSelectedKey(null);\n setSelectedLoadState(IDLE_SELECTED_STATE);\n\n try {\n const data = await fetchStateAt(idx, { logKey, signal: controller.signal });\n if (controller.signal.aborted) return;\n if (data === null) {\n setLoadState({\n status: \"error\",\n data: null,\n error: `Event #${idx} not found while loading reconstructed state.`,\n });\n } else {\n setLoadState({ status: \"ok\", data, error: null });\n const defaultResource = chooseDefaultResource(data.resources);\n setSelectedKey(defaultResource ? stateResourceKey(defaultResource) : null);\n setStateTab(\"summary\");\n if (defaultResource) {\n void loadSelectedResource(defaultResource);\n }\n }\n } catch (err) {\n if (controller.signal.aborted) return;\n const message = err instanceof Error ? err.message : String(err);\n setLoadState({ status: \"error\", data: null, error: message });\n }\n }, [idx, logKey, loadSelectedResource]);\n\n useEffect(() => {\n if (lastRequestKeyRef.current === requestKey) return;\n lastRequestKeyRef.current = requestKey;\n setOpen(false);\n setLoadState(IDLE_STATE);\n setSelectedKey(null);\n setSelectedLoadState(IDLE_SELECTED_STATE);\n setStateTab(\"summary\");\n if (abortRef.current) abortRef.current.abort();\n if (selectedAbortRef.current) selectedAbortRef.current.abort();\n }, [requestKey]);\n\n useEffect(() => {\n if (lastLogKeyRef.current === logKey) return;\n lastLogKeyRef.current = logKey;\n setPinnedPoints(clearPinnedStatePoints());\n }, [logKey, setPinnedPoints]);\n\n useEffect(() => {\n return () => {\n if (abortRef.current) abortRef.current.abort();\n if (selectedAbortRef.current) selectedAbortRef.current.abort();\n };\n }, []);\n\n function handleOpen(): void {\n setOpen((current) => {\n if (!current) void loadMetadata();\n return !current;\n });\n }\n\n function handleRetry(): void {\n void loadMetadata();\n }\n\n function handleSelectResource(resource: SelectableStateResource): void {\n setSelectedKey(stateResourceKey(resource));\n setStateTab(\"summary\");\n void loadSelectedResource(resource);\n }\n\n function handlePinStatePoint(resource: NonNullable<StateAtSuccessResponse[\"selectedResource\"]>) {\n if (!logKey) return;\n const point = createPinnedStatePoint({\n logKey,\n targetIndex: idx,\n eventLabel,\n eventTimestamp,\n resource,\n });\n setPinnedPoints(upsertPinnedStatePoint(pinnedPoints, point));\n }\n\n return (\n <section\n data-testid=\"state-inspector-panel\"\n aria-label=\"Reconstructed state inspector\"\n className=\"state-inspector\"\n >\n <div className=\"state-inspector-header\">\n <div>\n <h3>Reconstructed state</h3>\n <p>Replay reducer state at event #{idx}.</p>\n </div>\n <button\n type=\"button\"\n onClick={handleOpen}\n aria-expanded={open}\n className=\"state-action-button\"\n >\n State at this point\n </button>\n </div>\n\n {open && (\n <div className=\"state-inspector-body\">\n {loadState.status === \"loading\" && (\n <div data-testid=\"state-inspector-loading\" className=\"state-inline-status\">\n <Loader2 size={14} className=\"spin\" />\n Loading reconstructed state metadata…\n </div>\n )}\n\n {loadState.status === \"error\" && (\n <div data-testid=\"state-inspector-error\" className=\"state-error\">\n <p>{loadState.error}</p>\n <button type=\"button\" onClick={handleRetry} className=\"state-secondary-button\">\n Retry state lookup\n </button>\n </div>\n )}\n\n {loadState.status === \"ok\" && (\n <>\n <StateMetadataSummary data={loadState.data} />\n {loadState.data.resources.length === 0 ? (\n <div className=\"state-empty\" data-testid=\"state-inspector-empty\">\n No reconstructed resources at this point.\n </div>\n ) : (\n <StateResourceSelector\n resources={loadState.data.resources}\n selectedKey={selectedKey}\n onSelect={handleSelectResource}\n />\n )}\n <SelectedStateViews\n targetIndex={loadState.data.targetIndex}\n loadState={selectedLoadState}\n activeTab={stateTab}\n onTabChange={setStateTab}\n onCopy={(message, ok) => setToast({ message, kind: ok ? \"success\" : \"error\" })}\n onPin={handlePinStatePoint}\n />\n <StateDiagnosticsPanel\n aggregateDiagnostics={loadState.data.diagnostics}\n selectedDiagnostics={\n selectedLoadState.status === \"ok\" ? selectedLoadState.data.diagnostics : []\n }\n intents={loadState.data.intents}\n cache={loadState.data.cache}\n />\n <PinnedStatePanel\n points={pinnedPoints}\n onRemove={(id) => setPinnedPoints(removePinnedStatePoint(pinnedPoints, id))}\n onClear={() => setPinnedPoints(clearPinnedStatePoints())}\n />\n </>\n )}\n </div>\n )}\n {toast && (\n <CopyToast key={toast.message + Date.now()} message={toast.message} kind={toast.kind} />\n )}\n </section>\n );\n}\n\nfunction StateMetadataSummary({ data }: { readonly data: StateAtSuccessResponse }): JSX.Element {\n return (\n <div data-testid=\"state-inspector-metadata\" className=\"state-metadata-summary\">\n <StateConfidenceBadge confidence={data.confidence} label=\"Aggregate confidence\" />\n <dl>\n <dt>Target</dt>\n <dd>#{data.targetIndex}</dd>\n <dt>Confidence</dt>\n <dd data-confidence={data.confidence}>{data.confidence}</dd>\n <dt>Resources</dt>\n <dd>{data.resources.length}</dd>\n </dl>\n </div>\n );\n}\n\nfunction SelectedStateViews({\n targetIndex,\n loadState,\n activeTab,\n onTabChange,\n onCopy,\n onPin,\n}: {\n readonly targetIndex: number;\n readonly loadState: SelectedLoadState;\n readonly activeTab: StateTab;\n readonly onTabChange: (tab: StateTab) => void;\n readonly onCopy: (message: string, ok: boolean) => void;\n readonly onPin: (resource: NonNullable<StateAtSuccessResponse[\"selectedResource\"]>) => void;\n}): JSX.Element | null {\n if (loadState.status === \"idle\") return null;\n if (loadState.status === \"loading\") {\n return (\n <div data-testid=\"state-resource-loading\" className=\"state-inline-status\">\n <Loader2 size={14} className=\"spin\" />\n Loading selected resource state…\n </div>\n );\n }\n if (loadState.status === \"error\") {\n return (\n <div data-testid=\"state-resource-error\" className=\"state-error\">\n <p>{loadState.error}</p>\n </div>\n );\n }\n\n const resource = loadState.data;\n return (\n <div className=\"state-view-shell\" data-testid=\"state-view-shell\">\n <div className=\"state-view-header\">\n <StateConfidenceBadge confidence={resource.confidence} label=\"Selected resource\" />\n <div className=\"state-view-actions\">\n <button type=\"button\" className=\"state-copy-button\" onClick={() => onPin(resource)}>\n Pin state point\n </button>\n <StateCopyMenu targetIndex={targetIndex} resource={resource} onCopy={onCopy} />\n </div>\n </div>\n <div className=\"state-tabs\" role=\"tablist\" aria-label=\"Reconstructed state views\">\n {([\"summary\", \"pretty\", \"raw\"] as const).map((tab) => (\n <button\n key={tab}\n type=\"button\"\n role=\"tab\"\n aria-selected={activeTab === tab}\n className=\"state-tab\"\n onClick={() => onTabChange(tab)}\n >\n {tab === \"summary\" ? \"Summary\" : tab === \"pretty\" ? \"Pretty JSON\" : \"Raw JSON\"}\n </button>\n ))}\n </div>\n <div className=\"state-tabpanel\" role=\"tabpanel\">\n {activeTab === \"summary\" && <StateSummaryView resource={resource} />}\n {activeTab === \"pretty\" && (\n <PrettyJsonView data={resource.state} onOpenRaw={() => onTabChange(\"raw\")} />\n )}\n {activeTab === \"raw\" && <RawJsonView data={resource.state} />}\n </div>\n </div>\n );\n}\n","/**\n * DetailPanel — root orchestrator for the event detail view.\n *\n * Reads selectedIdx from the Zustand store. On selectedIdx change,\n * fetches via fetchEvent (with AbortController for T-03-04-04), and\n * updates selectedDetail with loading/error/data transitions.\n *\n * States:\n * - selectedIdx === null → empty state (§7.2 copy)\n * - loading → spinner (§7.3)\n * - error → retry button (§7.4)\n * - populated → AuthFailureBanner? + Summary + AhpFieldStrip + tabs + JSON + PrivacyCaption\n *\n * No raw #hex literals. No dangerouslySetInnerHTML.\n */\n\nimport type { Status } from \"@ahp-inspector/core\";\nimport type { AhpEvent, EventKind } from \"@ahp-inspector/shared\";\nimport { Loader2 } from \"lucide-react\";\nimport { type CSSProperties, type JSX, useCallback, useEffect, useRef, useState } from \"react\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { type DetailResponse, fetchEvent } from \"../../transport/http-client.js\";\nimport { AhpFieldStrip } from \"./AhpFieldStrip.js\";\nimport { AuthFailureBanner } from \"./AuthFailureBanner.js\";\nimport { CopyMenu } from \"./CopyMenu.js\";\nimport { CopyToast } from \"./CopyToast.js\";\nimport { DetailCorrelation } from \"./DetailCorrelation.js\";\nimport { DetailResizeHandle } from \"./DetailResizeHandle.js\";\nimport { DetailSummary } from \"./DetailSummary.js\";\nimport { DetailTabs } from \"./DetailTabs.js\";\nimport { DETAIL_MAX_WIDTH, DETAIL_MIN_WIDTH } from \"./detail-layout.js\";\nimport { PrettyJsonView } from \"./PrettyJsonView.js\";\nimport { PrivacyCaption } from \"./PrivacyCaption.js\";\nimport { RawJsonView } from \"./RawJsonView.js\";\nimport { StateInspectorPanel } from \"./StateInspectorPanel.js\";\nimport { clearPinnedStatePoints, type PinnedStatePoint } from \"./state-pins.js\";\n\ninterface LoadState {\n status: \"idle\" | \"loading\" | \"error\" | \"ok\";\n detail: DetailResponse | null;\n error: string | null;\n}\n\nconst KIND_LABEL: Record<EventKind, string> = {\n request: \"Request\",\n response: \"Response\",\n \"client-notification\": \"Notification (client)\",\n \"server-notification\": \"Notification (server)\",\n action: \"Action\",\n \"protocol-notification\": \"Notification\",\n log: \"Log\",\n \"parse-error\": \"Parse error\",\n};\n\n/**\n * Returns the (request, response) ordering when the selected event has a\n * paired counterpart so we can render request-on-top, response-below\n * regardless of which row the user clicked. Returns null when there's no\n * pair to stack.\n */\nfunction orderedPair(\n selected: AhpEvent,\n pair: AhpEvent | null,\n): { primary: AhpEvent; secondary: AhpEvent } | null {\n if (!pair) return null;\n if (selected.kind === \"response\" && pair.kind === \"request\") {\n return { primary: pair, secondary: selected };\n }\n if (selected.kind === \"request\" && pair.kind === \"response\") {\n return { primary: selected, secondary: pair };\n }\n // Any other paired combinations (rare): keep selected first.\n return { primary: selected, secondary: pair };\n}\n\ninterface DetailPanelProps {\n showResizeHandle?: boolean;\n /**\n * When true, the panel fills its parent (used inside the responsive\n * drawer, where the parent controls the width). When false, the panel\n * sizes itself to `detailWidth` (used by the docked desktop rail).\n */\n fill?: boolean;\n}\n\nexport function DetailPanel({\n showResizeHandle = true,\n fill = false,\n}: DetailPanelProps = {}): JSX.Element | null {\n const selectedIdx = useAppStore((s) => s.selectedIdx);\n const logKey = useAppStore((s) => s.logKey);\n const rows = useAppStore((s) => s.rows);\n const detailWidth = useAppStore((s) => s.detailWidth);\n const setDetailWidth = useAppStore((s) => s.setDetailWidth);\n const panelSizing: CSSProperties = fill\n ? { flex: \"1 1 auto\", width: \"100%\" }\n : { flex: `0 0 ${detailWidth}px`, width: `${detailWidth}px` };\n\n const [loadState, setLoadState] = useState<LoadState>({\n status: \"idle\",\n detail: null,\n error: null,\n });\n const [activeTab, setActiveTab] = useState<\"pretty\" | \"raw\">(\"pretty\");\n const [pinnedPoints, setPinnedPoints] = useState<readonly PinnedStatePoint[]>([]);\n const [toast, setToast] = useState<{ message: string; kind: \"success\" | \"error\" } | null>(null);\n const retryKey = useRef(0);\n const abortRef = useRef<AbortController | null>(null);\n const pinnedLogKeyRef = useRef(logKey);\n\n const load = useCallback(async (idx: number, activeLogKey: string | null) => {\n // Abort any prior in-flight request (T-03-04-04)\n if (abortRef.current) {\n abortRef.current.abort();\n }\n const controller = new AbortController();\n abortRef.current = controller;\n\n setLoadState({ status: \"loading\", detail: null, error: null });\n\n try {\n const detail = await fetchEvent(idx, controller.signal, activeLogKey);\n if (controller.signal.aborted) return;\n if (detail === null) {\n setLoadState({ status: \"error\", detail: null, error: `Event #${idx} not found (404)` });\n } else {\n setLoadState({ status: \"ok\", detail, error: null });\n }\n } catch (err) {\n if (controller.signal.aborted) return;\n const msg = err instanceof Error ? err.message : String(err);\n setLoadState({ status: \"error\", detail: null, error: msg });\n }\n }, []);\n\n useEffect(() => {\n if (selectedIdx === null) {\n setLoadState({ status: \"idle\", detail: null, error: null });\n if (abortRef.current) abortRef.current.abort();\n return;\n }\n void load(selectedIdx, logKey);\n return () => {\n if (abortRef.current) abortRef.current.abort();\n };\n }, [selectedIdx, logKey, load]);\n\n useEffect(() => {\n if (pinnedLogKeyRef.current === logKey) return;\n pinnedLogKeyRef.current = logKey;\n setPinnedPoints(clearPinnedStatePoints());\n }, [logKey]);\n\n function handleRetry() {\n if (selectedIdx !== null) {\n retryKey.current += 1;\n void load(selectedIdx, logKey);\n }\n }\n\n // ── Empty state ─────────────────────────────────────────────────────────────\n if (selectedIdx === null) {\n return (\n <aside\n data-testid=\"detail-panel\"\n aria-label=\"Event detail\"\n style={{\n position: \"relative\",\n ...panelSizing,\n height: \"100%\",\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n background: \"var(--color-surface)\",\n borderLeft: showResizeHandle ? \"1px solid var(--color-border-strong)\" : \"0\",\n overflow: \"hidden\",\n }}\n >\n {showResizeHandle && (\n <DetailResizeHandle\n width={detailWidth}\n onResize={setDetailWidth}\n min={DETAIL_MIN_WIDTH}\n max={DETAIL_MAX_WIDTH}\n />\n )}\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-5)\",\n color: \"var(--color-text-muted)\",\n textAlign: \"center\",\n }}\n >\n <h2\n style={{\n margin: 0,\n fontSize: \"var(--text-heading-size)\",\n fontFamily: \"var(--font-sans)\",\n fontWeight: \"var(--weight-semibold)\",\n color: \"var(--color-text)\",\n }}\n >\n No event selected\n </h2>\n <p\n style={{\n margin: 0,\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n }}\n >\n Select a row in the timeline to inspect its details.\n </p>\n </div>\n </aside>\n );\n }\n\n // ── Loading state ────────────────────────────────────────────────────────────\n if (loadState.status === \"loading\") {\n return (\n <aside\n data-testid=\"detail-panel\"\n aria-label=\"Event detail\"\n style={{\n position: \"relative\",\n ...panelSizing,\n height: \"100%\",\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n background: \"var(--color-surface)\",\n borderLeft: showResizeHandle ? \"1px solid var(--color-border-strong)\" : \"0\",\n overflow: \"hidden\",\n }}\n >\n {showResizeHandle && (\n <DetailResizeHandle\n width={detailWidth}\n onResize={setDetailWidth}\n min={DETAIL_MIN_WIDTH}\n max={DETAIL_MAX_WIDTH}\n />\n )}\n <div\n data-testid=\"detail-loading\"\n style={{\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"var(--space-2)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n }}\n >\n <Loader2 size={16} style={{ animation: \"spin 1s linear infinite\" }} />\n Loading event #{selectedIdx}…\n </div>\n </aside>\n );\n }\n\n // ── Error state ──────────────────────────────────────────────────────────────\n if (loadState.status === \"error\") {\n return (\n <aside\n data-testid=\"detail-panel\"\n aria-label=\"Event detail\"\n style={{\n position: \"relative\",\n ...panelSizing,\n height: \"100%\",\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n background: \"var(--color-surface)\",\n borderLeft: showResizeHandle ? \"1px solid var(--color-border-strong)\" : \"0\",\n overflow: \"hidden\",\n }}\n >\n {showResizeHandle && (\n <DetailResizeHandle\n width={detailWidth}\n onResize={setDetailWidth}\n min={DETAIL_MIN_WIDTH}\n max={DETAIL_MAX_WIDTH}\n />\n )}\n <div\n data-testid=\"detail-error\"\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n gap: \"var(--space-3)\",\n padding: \"var(--space-5)\",\n color: \"var(--color-text-muted)\",\n textAlign: \"center\",\n }}\n >\n <p\n style={{\n margin: 0,\n color: \"var(--color-destructive)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n }}\n >\n {loadState.error ?? \"Failed to load event.\"}\n </p>\n <button\n type=\"button\"\n onClick={handleRetry}\n style={{\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: \"4px\",\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n padding: \"var(--space-2) var(--space-3)\",\n }}\n >\n Retry event details\n </button>\n </div>\n </aside>\n );\n }\n\n // ── Populated state ──────────────────────────────────────────────────────────\n const detail = loadState.detail;\n if (!detail) return null;\n\n const event = detail.event as AhpEvent;\n const pairEvent = detail.pair as AhpEvent | null;\n const row = selectedIdx !== null ? (rows[selectedIdx] ?? null) : null;\n const isAuthFailure = row?.isAuthFailure ?? false;\n\n // WR-03: Prefer live row values for status/latencyMs so that SSE patch updates\n // (pending → ok) are reflected immediately, even on a cache hit.\n const liveStatus = (row?.status ?? detail.status) as Status;\n const liveLatencyMs = row?.latencyMs ?? detail.latencyMs;\n\n return (\n <aside\n data-testid=\"detail-panel\"\n aria-label=\"Event detail\"\n style={{\n position: \"relative\",\n ...panelSizing,\n height: \"100%\",\n minHeight: 0,\n display: \"flex\",\n flexDirection: \"column\",\n background: \"var(--color-surface)\",\n borderLeft: showResizeHandle ? \"1px solid var(--color-border-strong)\" : \"0\",\n overflow: \"hidden\",\n }}\n >\n {showResizeHandle && (\n <DetailResizeHandle\n width={detailWidth}\n onResize={setDetailWidth}\n min={DETAIL_MIN_WIDTH}\n max={DETAIL_MAX_WIDTH}\n />\n )}\n\n {/* Auth failure banner */}\n {isAuthFailure && (\n <AuthFailureBanner\n {...(row?.errorCode !== null && row?.errorCode !== undefined\n ? { code: row.errorCode }\n : {})}\n />\n )}\n\n {/* Summary */}\n <DetailSummary event={event} latencyMs={liveLatencyMs} status={liveStatus} />\n\n {/* Correlation metadata */}\n <DetailCorrelation\n currentIdx={selectedIdx}\n event={event}\n pairEvent={pairEvent}\n pairIdx={detail.pairIdx}\n latencyMs={liveLatencyMs}\n status={liveStatus}\n />\n\n {/* AHP field strip */}\n {row && <AhpFieldStrip row={row} rawEvent={event} />}\n\n {/* Scrollable lower region: state inspector + tabs + JSON + privacy share one scroll */}\n <div\n data-testid=\"detail-scroll-region\"\n style={{\n flex: 1,\n minHeight: 0,\n overflow: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <StateInspectorPanel\n idx={selectedIdx}\n logKey={logKey}\n eventLabel={event.method ?? event.actionType ?? event.kind}\n eventTimestamp={event.ts}\n pinnedPoints={pinnedPoints}\n onPinnedPointsChange={setPinnedPoints}\n />\n\n {/* Tab strip + copy menu header */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingRight: \"var(--space-3)\",\n borderBottom: \"1px solid var(--color-border)\",\n position: \"sticky\",\n top: 0,\n background: \"var(--color-surface)\",\n zIndex: 1,\n }}\n >\n <DetailTabs active={activeTab} onChange={setActiveTab} />\n <CopyMenu\n event={event}\n pairEvent={pairEvent}\n pairIdx={detail.pairIdx}\n latencyMs={liveLatencyMs}\n status={liveStatus}\n onCopy={(msg, ok) => setToast({ message: msg, kind: ok ? \"success\" : \"error\" })}\n />\n </div>\n\n {/* JSON view — natural height inside the shared scroller. When the\n selected event has a paired counterpart we render request-on-top,\n response-below regardless of which row the user clicked. */}\n <div role=\"tabpanel\" style={{ display: \"flex\", flexDirection: \"column\" }}>\n {(() => {\n const ordered = orderedPair(event, pairEvent);\n if (!ordered) {\n return activeTab === \"pretty\" ? (\n <PrettyJsonView data={event.raw} onOpenRaw={() => setActiveTab(\"raw\")} />\n ) : (\n <RawJsonView data={event.raw} />\n );\n }\n return (\n <>\n <DetailJsonSection\n label={KIND_LABEL[ordered.primary.kind]}\n data={ordered.primary.raw}\n activeTab={activeTab}\n onOpenRaw={() => setActiveTab(\"raw\")}\n />\n <DetailJsonSection\n label={KIND_LABEL[ordered.secondary.kind]}\n data={ordered.secondary.raw}\n activeTab={activeTab}\n onOpenRaw={() => setActiveTab(\"raw\")}\n />\n </>\n );\n })()}\n </div>\n\n {/* Privacy caption */}\n <PrivacyCaption />\n </div>\n\n {/* Copy toast */}\n {toast && (\n <CopyToast key={toast.message + Date.now()} message={toast.message} kind={toast.kind} />\n )}\n </aside>\n );\n}\n\ninterface DetailJsonSectionProps {\n label: string;\n data: unknown;\n activeTab: \"pretty\" | \"raw\";\n onOpenRaw: () => void;\n}\n\nfunction DetailJsonSection({\n label,\n data,\n activeTab,\n onOpenRaw,\n}: DetailJsonSectionProps): JSX.Element {\n return (\n <section\n data-testid={`detail-json-section-${label.toLowerCase().replace(/\\s+/g, \"-\")}`}\n style={{ display: \"flex\", flexDirection: \"column\" }}\n >\n <h3\n style={{\n margin: 0,\n padding: \"var(--space-2) var(--space-3)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n fontWeight: \"var(--weight-semibold)\",\n color: \"var(--color-text-muted)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n borderBottom: \"1px solid var(--color-border)\",\n background: \"var(--color-surface)\",\n }}\n >\n {label}\n </h3>\n {activeTab === \"pretty\" ? (\n <PrettyJsonView data={data} onOpenRaw={onOpenRaw} />\n ) : (\n <RawJsonView data={data} />\n )}\n </section>\n );\n}\n","// DropOverlay — visual contract per 17-UI-SPEC.md (CONTEXT D-03).\n\nimport { type JSX, useEffect } from \"react\";\n\nexport type DropOverlayState =\n | { kind: \"idle\" }\n | { kind: \"armed\"; replacing: boolean }\n | { kind: \"error\"; message: string };\n\nconst ARMED_HEADING = \"Drop a .jsonl file to open.\";\nconst ARMED_BODY = \"Drag from Finder, Explorer, or VS Code's file tree.\";\nconst REPLACING_HEADING = \"Drop to replace the active log.\";\nconst REPLACING_BODY = \"The current log will close and the new file will start tailing.\";\n\nconst REDUCED_MOTION =\n typeof window !== \"undefined\" &&\n typeof window.matchMedia === \"function\" &&\n window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n\nexport function DropOverlay(props: {\n state: DropOverlayState;\n onDismiss: () => void;\n}): JSX.Element | null {\n const { state, onDismiss } = props;\n\n useEffect(() => {\n if (state.kind !== \"error\") return;\n function handler(event: KeyboardEvent): void {\n if (event.key === \"Escape\") onDismiss();\n }\n document.addEventListener(\"keydown\", handler);\n return () => document.removeEventListener(\"keydown\", handler);\n }, [state.kind, onDismiss]);\n\n if (state.kind === \"idle\") return null;\n\n const isError = state.kind === \"error\";\n const borderColor = isError ? \"var(--color-destructive)\" : \"var(--color-accent)\";\n\n const scrimStyle: React.CSSProperties = {\n position: \"fixed\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n zIndex: 1000,\n background: \"color-mix(in srgb, var(--color-bg) 80%, transparent)\",\n backdropFilter: \"blur(2px)\",\n WebkitBackdropFilter: \"blur(2px)\",\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"center\",\n paddingTop: \"35vh\",\n transition: REDUCED_MOTION ? undefined : \"opacity 150ms\",\n };\n\n const cardStyle: React.CSSProperties = {\n maxWidth: 480,\n width: \"100%\",\n marginInline: \"auto\",\n padding: \"var(--space-4) var(--space-5)\",\n background: \"var(--color-surface-raised)\",\n border: `2px dashed ${borderColor}`,\n borderRadius: 4,\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-3)\",\n };\n\n const headingStyle: React.CSSProperties = {\n margin: 0,\n fontSize: \"var(--text-heading-size)\",\n fontWeight: \"var(--weight-semibold)\",\n lineHeight: 1.4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n };\n\n const bodyStyle: React.CSSProperties = {\n margin: 0,\n fontSize: \"var(--text-body-size)\",\n lineHeight: 1.45,\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n };\n\n const errorTextStyle: React.CSSProperties = {\n margin: 0,\n fontSize: \"var(--text-body-size)\",\n lineHeight: 1.45,\n color: \"var(--color-destructive)\",\n fontFamily: \"var(--font-sans)\",\n };\n\n const dismissButtonStyle: React.CSSProperties = {\n alignSelf: \"flex-start\",\n height: 32,\n padding: \"0 var(--space-4)\",\n background: \"var(--color-surface)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n cursor: \"pointer\",\n };\n\n let inner: JSX.Element;\n if (state.kind === \"armed\") {\n const heading = state.replacing ? REPLACING_HEADING : ARMED_HEADING;\n const body = state.replacing ? REPLACING_BODY : ARMED_BODY;\n inner = (\n <div aria-live=\"polite\">\n <h2 style={headingStyle}>{heading}</h2>\n <p style={bodyStyle}>{body}</p>\n </div>\n );\n } else {\n inner = (\n <div aria-live=\"polite\">\n <p role=\"alert\" style={errorTextStyle}>\n {state.message}\n </p>\n <button\n type=\"button\"\n onClick={onDismiss}\n style={{ ...dismissButtonStyle, marginTop: \"var(--space-3)\" }}\n >\n Dismiss\n </button>\n </div>\n );\n }\n\n return (\n <section aria-label=\"Drop a log file\" style={scrimStyle}>\n <div style={cardStyle}>{inner}</div>\n </section>\n );\n}\n","// MultiFileToast — locked copy and tokens per 17-UI-SPEC.md.\n\nimport { type JSX, useEffect } from \"react\";\n\nexport function MultiFileToast(props: {\n basename: string;\n ignoredCount: number;\n onDismiss: () => void;\n}): JSX.Element {\n const { basename, ignoredCount, onDismiss } = props;\n\n useEffect(() => {\n const id = window.setTimeout(onDismiss, 5000);\n return () => window.clearTimeout(id);\n }, [onDismiss]);\n\n const containerStyle: React.CSSProperties = {\n position: \"fixed\",\n bottom: \"var(--space-6)\",\n right: \"var(--space-6)\",\n maxWidth: 360,\n padding: \"var(--space-2) var(--space-3)\",\n background: \"var(--color-surface-raised)\",\n borderLeft: \"2px solid var(--color-accent)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-size)\",\n lineHeight: 1.4,\n zIndex: 1001,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-3)\",\n };\n\n const codeStyle: React.CSSProperties = {\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-size)\",\n };\n\n const dismissStyle: React.CSSProperties = {\n marginLeft: \"var(--space-3)\",\n background: \"transparent\",\n border: \"none\",\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-size)\",\n fontFamily: \"var(--font-sans)\",\n padding: 0,\n lineHeight: 1,\n };\n\n const plural = ignoredCount === 1 ? \"\" : \"s\";\n\n return (\n <div\n role=\"status\"\n // biome-ignore lint/a11y/noNoninteractiveTabindex: toast is focusable so users can dismiss via Escape (UI-SPEC requirement)\n tabIndex={0}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") onDismiss();\n }}\n style={containerStyle}\n >\n <span>\n Opened <code style={codeStyle}>{basename}</code>. Ignored {ignoredCount} other file{plural}.\n </span>\n <button type=\"button\" aria-label=\"Dismiss notice\" onClick={onDismiss} style={dismissStyle}>\n ×\n </button>\n </div>\n );\n}\n","export const ERROR_COPY: Record<string, string> = {\n \"path-too-long\": \"Path is too long.\",\n \"not-found\": \"File not found. Check the path and try again.\",\n \"not-a-file\": \"That path is not a readable file.\",\n \"not-readable\": \"That path is not a readable file.\",\n \"bad-request\": \"Could not open that file. Check that it exists and is readable.\",\n};\n\nexport const FALLBACK_ERROR = \"Could not open that file. Check that it exists and is readable.\";\n","// Implements CONTEXT D-02 (text/uri-list first, friendly error otherwise) and D-04 (first .jsonl wins).\n\nexport type ParseResult =\n | { kind: \"ok\"; path: string; ignoredCount: number }\n | { kind: \"error\"; code: \"no-uri\" | \"not-jsonl\" };\n\nexport function parseDroppedUri(dataTransfer: Pick<DataTransfer, \"getData\">): ParseResult {\n const raw = dataTransfer.getData(\"text/uri-list\");\n if (!raw || raw.trim() === \"\") {\n return { kind: \"error\", code: \"no-uri\" };\n }\n\n const entries: string[] = [];\n for (const line of raw.split(/\\r?\\n/)) {\n const trimmed = line.trim();\n if (trimmed === \"\") continue;\n if (trimmed.startsWith(\"#\")) continue;\n entries.push(trimmed);\n }\n\n if (entries.length === 0) {\n return { kind: \"error\", code: \"no-uri\" };\n }\n\n let ignoredCount = 0;\n for (const entry of entries) {\n let url: URL;\n try {\n url = new URL(entry);\n } catch {\n ignoredCount++;\n continue;\n }\n if (url.protocol !== \"file:\") {\n ignoredCount++;\n continue;\n }\n let decoded: string;\n try {\n decoded = decodeURIComponent(url.pathname);\n } catch {\n ignoredCount++;\n continue;\n }\n if (!decoded.toLowerCase().endsWith(\".jsonl\")) {\n ignoredCount++;\n continue;\n }\n return { kind: \"ok\", path: decoded, ignoredCount };\n }\n\n return { kind: \"error\", code: \"not-jsonl\" };\n}\n","// useDropZone — owns the window-level drag listeners and the DropOverlay state machine.\n// CONTEXT D-03 (window-level listeners) and D-05 (no new transport — reuses onOpenPath).\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { ERROR_COPY, FALLBACK_ERROR } from \"../picker/error-copy.js\";\nimport type { DropOverlayState } from \"./DropOverlay.js\";\nimport { parseDroppedUri } from \"./parseDroppedUri.js\";\n\nconst NO_FILE_COPY =\n \"That drop didn't include a file path. Try dragging from Finder or VS Code's file tree, or paste a path in the picker below.\";\nconst WRONG_EXT_COPY = \"Only .jsonl files are supported. Drop the raw AHP log file.\";\nconst UPLOAD_FAILED_COPY =\n \"Couldn't open the dropped file. Try again or paste a path in the picker below.\";\n\nexport interface UseDropZoneArgs {\n hasActiveLog: boolean;\n onOpenPath: (path: string) => Promise<void>;\n /**\n * Fallback for browser drops that expose a `File` object but no real\n * filesystem path (e.g. Finder → Chrome on http://localhost). The hook\n * uploads the bytes via this callback when `parseDroppedUri` returns\n * `no-uri` and the drop carries at least one .jsonl File.\n */\n onUploadFile?: (file: File) => Promise<void>;\n}\n\nexport interface UseDropZoneResult {\n overlayState: DropOverlayState;\n toast: { basename: string; ignoredCount: number } | null;\n dismissError: () => void;\n dismissToast: () => void;\n}\n\nfunction isCodeError(err: unknown): err is { code: string } {\n return (\n typeof err === \"object\" &&\n err !== null &&\n \"code\" in err &&\n typeof (err as { code: unknown }).code === \"string\"\n );\n}\n\nexport function useDropZone(args: UseDropZoneArgs): UseDropZoneResult {\n const { hasActiveLog, onOpenPath, onUploadFile } = args;\n const [overlayState, setOverlayState] = useState<DropOverlayState>({\n kind: \"idle\",\n });\n const [toast, setToast] = useState<{ basename: string; ignoredCount: number } | null>(null);\n\n const depthRef = useRef(0);\n const stateRef = useRef<DropOverlayState>(overlayState);\n stateRef.current = overlayState;\n const hasActiveLogRef = useRef(hasActiveLog);\n hasActiveLogRef.current = hasActiveLog;\n const onOpenPathRef = useRef(onOpenPath);\n onOpenPathRef.current = onOpenPath;\n const onUploadFileRef = useRef(onUploadFile);\n onUploadFileRef.current = onUploadFile;\n\n const dismissError = useCallback((): void => {\n setOverlayState({ kind: \"idle\" });\n }, []);\n const dismissToast = useCallback((): void => {\n setToast(null);\n }, []);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n function carriesFiles(dt: DataTransfer | null): boolean {\n if (dt === null) return false;\n const types = dt.types;\n for (let i = 0; i < types.length; i++) {\n if (types[i] === \"Files\") return true;\n }\n return false;\n }\n\n function onDragEnter(event: DragEvent): void {\n if (!carriesFiles(event.dataTransfer)) return;\n event.preventDefault();\n depthRef.current += 1;\n if (stateRef.current.kind === \"error\") return;\n if (stateRef.current.kind === \"idle\" || stateRef.current.kind === \"armed\") {\n setOverlayState({ kind: \"armed\", replacing: hasActiveLogRef.current });\n }\n }\n\n function onDragOver(event: DragEvent): void {\n if (!carriesFiles(event.dataTransfer)) return;\n event.preventDefault();\n }\n\n function onDragLeave(event: DragEvent): void {\n depthRef.current = Math.max(0, depthRef.current - 1);\n const atDocumentEdge = event.relatedTarget === null || depthRef.current === 0;\n if (!atDocumentEdge) return;\n depthRef.current = 0;\n if (stateRef.current.kind === \"armed\") {\n setOverlayState({ kind: \"idle\" });\n }\n }\n\n function onDrop(event: DragEvent): void {\n event.preventDefault();\n depthRef.current = 0;\n const dt = event.dataTransfer;\n if (dt === null) {\n setOverlayState({ kind: \"error\", message: NO_FILE_COPY });\n return;\n }\n const result = parseDroppedUri(dt);\n if (result.kind === \"error\") {\n // Fallback: browser stripped the URI but still gave us File objects\n // (typical for Finder → Chrome on http://localhost). Pick the first\n // .jsonl File and upload its bytes.\n if (result.code === \"no-uri\" && onUploadFileRef.current) {\n const files = dt.files;\n let chosen: File | null = null;\n let extraJsonl = 0;\n for (let i = 0; i < files.length; i++) {\n const f = files.item(i);\n if (f !== null && f.name.toLowerCase().endsWith(\".jsonl\")) {\n if (chosen === null) chosen = f;\n else extraJsonl += 1;\n }\n }\n if (chosen !== null) {\n const uploadFn = onUploadFileRef.current;\n const file = chosen;\n const ignoredCount = extraJsonl + (files.length - extraJsonl - 1);\n setOverlayState({ kind: \"idle\" });\n void (async () => {\n try {\n await uploadFn(file);\n if (ignoredCount > 0) {\n setToast({ basename: file.name, ignoredCount });\n }\n } catch (err) {\n const code = isCodeError(err) ? err.code : null;\n const message =\n code === \"too-large\"\n ? \"That file is too large to upload. Use a smaller log or paste a path in the picker below.\"\n : (code !== null && ERROR_COPY[code]) || UPLOAD_FAILED_COPY;\n setOverlayState({ kind: \"error\", message });\n }\n })();\n return;\n }\n }\n const message = result.code === \"no-uri\" ? NO_FILE_COPY : WRONG_EXT_COPY;\n setOverlayState({ kind: \"error\", message });\n return;\n }\n\n const { path, ignoredCount } = result;\n const basename = path.split(\"/\").pop() ?? path;\n setOverlayState({ kind: \"idle\" });\n\n void (async () => {\n try {\n await onOpenPathRef.current(path);\n if (ignoredCount > 0) {\n setToast({ basename, ignoredCount });\n }\n } catch (err) {\n const code = isCodeError(err) ? err.code : null;\n const message = (code !== null && ERROR_COPY[code]) || FALLBACK_ERROR;\n setOverlayState({ kind: \"error\", message });\n }\n })();\n }\n\n window.addEventListener(\"dragenter\", onDragEnter);\n window.addEventListener(\"dragover\", onDragOver);\n window.addEventListener(\"dragleave\", onDragLeave);\n window.addEventListener(\"drop\", onDrop);\n return () => {\n window.removeEventListener(\"dragenter\", onDragEnter);\n window.removeEventListener(\"dragover\", onDragOver);\n window.removeEventListener(\"dragleave\", onDragLeave);\n window.removeEventListener(\"drop\", onDrop);\n };\n }, []);\n\n return { overlayState, toast, dismissError, dismissToast };\n}\n","import { X } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface ActiveChipProps {\n label: string;\n onDismiss(): void;\n ariaLabel: string;\n}\n\nexport function ActiveChip({ label, onDismiss, ariaLabel }: ActiveChipProps): JSX.Element {\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n height: 22,\n paddingLeft: \"var(--space-2)\",\n paddingRight: \"var(--space-1)\",\n background: \"var(--color-chip-bg-active)\",\n border: \"1px solid var(--color-chip-border)\",\n borderRadius: 4,\n color: \"var(--color-chip-fg)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n whiteSpace: \"nowrap\",\n }}\n >\n <span>{label}</span>\n <button\n type=\"button\"\n aria-label={ariaLabel}\n onClick={onDismiss}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--color-chip-dismiss)\",\n padding: \"1px\",\n borderRadius: 2,\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n onMouseEnter={(e) => {\n (e.currentTarget as HTMLButtonElement).style.color = \"var(--color-destructive)\";\n }}\n onMouseLeave={(e) => {\n (e.currentTarget as HTMLButtonElement).style.color = \"var(--color-chip-dismiss)\";\n }}\n >\n <X size={12} />\n </button>\n </span>\n );\n}\n","import type { JSX } from \"react\";\nimport { isFiltersEmpty } from \"../../state/filters.js\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { ActiveChip } from \"./ActiveChip.js\";\n\nexport function ActiveFilterChips(): JSX.Element | null {\n const filters = useAppStore((s) => s.filters);\n const patchFilter = useAppStore((s) => s.patchFilter);\n const clearFilters = useAppStore((s) => s.clearFilters);\n\n const hasFilters = !isFiltersEmpty(filters);\n\n if (!hasFilters) return null;\n\n const chips: JSX.Element[] = [];\n\n const rowText = filters.rowText.trim().slice(0, 256);\n if (rowText !== \"\") {\n chips.push(\n <ActiveChip\n key=\"rowText\"\n label={`Rows contain: ${rowText}`}\n ariaLabel=\"Clear row filter\"\n onDismiss={() => patchFilter(\"rowText\", \"\")}\n />,\n );\n }\n\n // Facet chips\n const arrayFacets: Array<{\n key: keyof typeof filters;\n prefix: string;\n }> = [\n { key: \"direction\", prefix: \"Dir\" },\n { key: \"kind\", prefix: \"Kind\" },\n { key: \"method\", prefix: \"Method\" },\n { key: \"actionType\", prefix: \"Action\" },\n { key: \"session\", prefix: \"Channel\" },\n { key: \"turn\", prefix: \"Turn\" },\n { key: \"status\", prefix: \"Status\" },\n ];\n\n for (const { key, prefix } of arrayFacets) {\n const vals = filters[key] as string[];\n if (!vals || vals.length === 0) continue;\n for (const val of vals) {\n chips.push(\n <ActiveChip\n key={`${key}-${val}`}\n label={`Hidden ${prefix}: ${val}`}\n ariaLabel={`Show ${prefix}: ${val}`}\n onDismiss={() => {\n patchFilter(\n key as Parameters<typeof patchFilter>[0],\n vals.filter((v) => v !== val) as never,\n );\n }}\n />,\n );\n }\n }\n\n // Time chips\n if (filters.timeFrom !== null) {\n chips.push(\n <ActiveChip\n key=\"timeFrom\"\n label={`Time: from ${new Date(filters.timeFrom).toLocaleString()}`}\n ariaLabel=\"Remove time from filter\"\n onDismiss={() => patchFilter(\"timeFrom\", null)}\n />,\n );\n }\n if (filters.timeTo !== null) {\n chips.push(\n <ActiveChip\n key=\"timeTo\"\n label={`Time: to ${new Date(filters.timeTo).toLocaleString()}`}\n ariaLabel=\"Remove time to filter\"\n onDismiss={() => patchFilter(\"timeTo\", null)}\n />,\n );\n }\n\n return (\n <div\n data-testid=\"active-filter-chips\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n height: \"var(--filter-chips-height)\",\n paddingLeft: \"var(--space-3)\",\n paddingRight: \"var(--space-3)\",\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border)\",\n flexWrap: \"nowrap\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n gap: \"var(--space-2)\",\n flex: 1,\n overflow: \"hidden\",\n alignItems: \"center\",\n }}\n >\n {chips}\n </div>\n <button\n type=\"button\"\n aria-label=\"Clear all filters\"\n onClick={clearFilters}\n style={{\n marginLeft: \"auto\",\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n flexShrink: 0,\n outline: \"none\",\n borderRadius: 3,\n padding: \"1px var(--space-1)\",\n textDecoration: \"underline\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Clear all\n </button>\n </div>\n );\n}\n","import { ChevronDown } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface FacetChipProps {\n label: string;\n activeCount: number;\n isOpen: boolean;\n isDisabled: boolean;\n onClick(): void;\n}\n\nexport function FacetChip({\n label,\n activeCount,\n isOpen,\n isDisabled,\n onClick,\n}: FacetChipProps): JSX.Element {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n onMouseDown={(event) => event.stopPropagation()}\n disabled={isDisabled}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n height: 28,\n paddingLeft: \"var(--space-2)\",\n paddingRight: \"var(--space-2)\",\n background: isOpen ? \"var(--color-chip-bg-active)\" : \"var(--color-chip-bg)\",\n border: \"1px solid var(--color-chip-border)\",\n borderRadius: 6,\n color: isDisabled ? \"var(--color-text-disabled)\" : \"var(--color-chip-fg)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n cursor: isDisabled ? \"not-allowed\" : \"pointer\",\n outline: \"none\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n (e.currentTarget as HTMLButtonElement).style.outlineOffset = \"2px\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <span style={{ color: \"var(--color-chip-fg)\" }}>{label}</span>\n {activeCount > 0 && (\n <span style={{ color: \"var(--color-chip-fg-muted)\" }}>· {activeCount}</span>\n )}\n <ChevronDown size={12} style={{ color: \"var(--color-chip-fg-muted)\" }} />\n </button>\n );\n}\n","import type { JSX } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\n\nconst MAX_VISIBLE = 100;\n\ninterface FacetOption {\n value: string;\n label: string;\n count: number;\n}\n\ninterface FacetPopoverProps {\n options: FacetOption[];\n selected: string[];\n onChange(values: string[]): void;\n onClose(): void;\n searchable?: boolean;\n align?: \"start\" | \"end\";\n}\n\nexport function FacetPopover({\n options,\n selected,\n onChange,\n onClose,\n searchable,\n align = \"start\",\n}: FacetPopoverProps): JSX.Element {\n const ref = useRef<HTMLDivElement>(null);\n const [query, setQuery] = useState(\"\");\n\n // Close on click-outside\n useEffect(() => {\n function handleMouseDown(e: MouseEvent) {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n onClose();\n }\n }\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, [onClose]);\n\n const filtered = query\n ? options.filter((o) => {\n const q = query.toLowerCase();\n return o.label.toLowerCase().includes(q) || o.value.toLowerCase().includes(q);\n })\n : options;\n const visible = filtered.slice(0, MAX_VISIBLE);\n const overflow = filtered.length - visible.length;\n\n function toggle(value: string) {\n if (selected.includes(value)) {\n onChange(selected.filter((v) => v !== value));\n } else {\n onChange([...selected, value]);\n }\n }\n\n return (\n <div\n ref={ref}\n role=\"listbox\"\n aria-multiselectable=\"true\"\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n ...(align === \"start\" ? { left: 0 } : { right: 0 }),\n zIndex: 1100,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n minWidth: 180,\n maxWidth: 320,\n maxHeight: 320,\n overflowY: \"auto\",\n boxShadow: \"var(--shadow-menu)\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n {searchable && (\n <div style={{ padding: \"var(--space-2)\", borderBottom: \"1px solid var(--color-border)\" }}>\n <input\n type=\"text\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder=\"Filter…\"\n style={{\n width: \"100%\",\n background: \"var(--color-surface)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1) var(--space-2)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.target as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n (e.target as HTMLInputElement).style.outlineOffset = \"-2px\";\n }}\n onBlur={(e) => {\n (e.target as HTMLInputElement).style.outline = \"none\";\n }}\n />\n </div>\n )}\n {visible.length === 0 && (\n <div\n style={{\n padding: \"var(--space-3)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n No options\n </div>\n )}\n {visible.map((opt) => (\n <label\n key={opt.value}\n title={opt.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-1) var(--space-3)\",\n cursor: \"pointer\",\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n <input\n type=\"checkbox\"\n checked={selected.includes(opt.value)}\n onChange={() => toggle(opt.value)}\n style={{ accentColor: \"var(--color-accent)\" }}\n />\n <span style={{ flex: 1 }}>{opt.label}</span>\n <span style={{ color: \"var(--color-text-muted)\", fontSize: \"var(--text-ui-muted-size)\" }}>\n {opt.count}\n </span>\n </label>\n ))}\n {overflow > 0 && (\n <div\n style={{\n padding: \"var(--space-1) var(--space-3)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n borderTop: \"1px solid var(--color-border)\",\n }}\n >\n …and {overflow} more\n </div>\n )}\n <div\n style={{\n display: \"flex\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-1) var(--space-2)\",\n borderTop: \"1px solid var(--color-border)\",\n }}\n >\n <button\n type=\"button\"\n onClick={() => onChange(options.map((option) => option.value))}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1)\",\n borderRadius: 3,\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Select all\n </button>\n <button\n type=\"button\"\n onClick={() => onChange([])}\n style={{\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1)\",\n borderRadius: 3,\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Uncheck all\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n style={{\n marginLeft: \"auto\",\n background: \"none\",\n border: \"none\",\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1)\",\n borderRadius: 3,\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Close\n </button>\n </div>\n </div>\n );\n}\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n/**\n * Common Action Types — `ActionEnvelope`, `ActionOrigin`, the central\n * `ActionType` enum, and the `StateAction` discriminated union over every\n * per-channel action declaration.\n *\n * @module common/actions\n */\n\nimport type { URI } from \"./state.js\";\n\nimport type {\n RootAgentsChangedAction,\n RootActiveSessionsChangedAction,\n RootTerminalsChangedAction,\n RootConfigChangedAction,\n} from \"../channels-root/actions.js\";\n\nimport type {\n SessionReadyAction,\n SessionCreationFailedAction,\n SessionTurnStartedAction,\n SessionDeltaAction,\n SessionResponsePartAction,\n SessionToolCallStartAction,\n SessionToolCallDeltaAction,\n SessionToolCallReadyAction,\n SessionToolCallConfirmedAction,\n SessionToolCallCompleteAction,\n SessionToolCallResultConfirmedAction,\n SessionToolCallContentChangedAction,\n SessionTurnCompleteAction,\n SessionTurnCancelledAction,\n SessionErrorAction,\n SessionTitleChangedAction,\n SessionUsageAction,\n SessionReasoningAction,\n SessionModelChangedAction,\n SessionServerToolsChangedAction,\n SessionActiveClientChangedAction,\n SessionActiveClientToolsChangedAction,\n SessionPendingMessageSetAction,\n SessionPendingMessageRemovedAction,\n SessionQueuedMessagesReorderedAction,\n SessionInputRequestedAction,\n SessionInputAnswerChangedAction,\n SessionInputCompletedAction,\n SessionCustomizationsChangedAction,\n SessionCustomizationToggledAction,\n SessionCustomizationUpdatedAction,\n SessionTruncatedAction,\n SessionIsReadChangedAction,\n SessionIsArchivedChangedAction,\n SessionActivityChangedAction,\n SessionChangesetsChangedAction,\n SessionConfigChangedAction,\n SessionMetaChangedAction,\n} from \"../channels-session/actions.js\";\n\nimport type {\n ChangesetStatusChangedAction,\n ChangesetFileSetAction,\n ChangesetFileRemovedAction,\n ChangesetOperationsChangedAction,\n ChangesetClearedAction,\n} from \"../channels-changeset/actions.js\";\n\nimport type {\n TerminalDataAction,\n TerminalInputAction,\n TerminalResizedAction,\n TerminalClaimedAction,\n TerminalTitleChangedAction,\n TerminalCwdChangedAction,\n TerminalExitedAction,\n TerminalClearedAction,\n TerminalCommandDetectionAvailableAction,\n TerminalCommandExecutedAction,\n TerminalCommandFinishedAction,\n} from \"../channels-terminal/actions.js\";\n\n// ─── Action Type Enum ────────────────────────────────────────────────────────\n\n/**\n * Discriminant values for all state actions.\n *\n * @category Actions\n */\nexport const enum ActionType {\n RootAgentsChanged = \"root/agentsChanged\",\n RootActiveSessionsChanged = \"root/activeSessionsChanged\",\n SessionReady = \"session/ready\",\n SessionCreationFailed = \"session/creationFailed\",\n SessionTurnStarted = \"session/turnStarted\",\n SessionDelta = \"session/delta\",\n SessionResponsePart = \"session/responsePart\",\n SessionToolCallStart = \"session/toolCallStart\",\n SessionToolCallDelta = \"session/toolCallDelta\",\n SessionToolCallReady = \"session/toolCallReady\",\n SessionToolCallConfirmed = \"session/toolCallConfirmed\",\n SessionToolCallComplete = \"session/toolCallComplete\",\n SessionToolCallResultConfirmed = \"session/toolCallResultConfirmed\",\n SessionToolCallContentChanged = \"session/toolCallContentChanged\",\n SessionTurnComplete = \"session/turnComplete\",\n SessionTurnCancelled = \"session/turnCancelled\",\n SessionError = \"session/error\",\n SessionTitleChanged = \"session/titleChanged\",\n SessionUsage = \"session/usage\",\n SessionReasoning = \"session/reasoning\",\n SessionModelChanged = \"session/modelChanged\",\n SessionServerToolsChanged = \"session/serverToolsChanged\",\n SessionActiveClientChanged = \"session/activeClientChanged\",\n SessionActiveClientToolsChanged = \"session/activeClientToolsChanged\",\n SessionPendingMessageSet = \"session/pendingMessageSet\",\n SessionPendingMessageRemoved = \"session/pendingMessageRemoved\",\n SessionQueuedMessagesReordered = \"session/queuedMessagesReordered\",\n SessionInputRequested = \"session/inputRequested\",\n SessionInputAnswerChanged = \"session/inputAnswerChanged\",\n SessionInputCompleted = \"session/inputCompleted\",\n SessionCustomizationsChanged = \"session/customizationsChanged\",\n SessionCustomizationToggled = \"session/customizationToggled\",\n SessionCustomizationUpdated = \"session/customizationUpdated\",\n SessionTruncated = \"session/truncated\",\n SessionIsReadChanged = \"session/isReadChanged\",\n SessionIsArchivedChanged = \"session/isArchivedChanged\",\n SessionActivityChanged = \"session/activityChanged\",\n SessionChangesetsChanged = \"session/changesetsChanged\",\n SessionConfigChanged = \"session/configChanged\",\n SessionMetaChanged = \"session/metaChanged\",\n ChangesetStatusChanged = \"changeset/statusChanged\",\n ChangesetFileSet = \"changeset/fileSet\",\n ChangesetFileRemoved = \"changeset/fileRemoved\",\n ChangesetOperationsChanged = \"changeset/operationsChanged\",\n ChangesetCleared = \"changeset/cleared\",\n RootTerminalsChanged = \"root/terminalsChanged\",\n RootConfigChanged = \"root/configChanged\",\n TerminalData = \"terminal/data\",\n TerminalInput = \"terminal/input\",\n TerminalResized = \"terminal/resized\",\n TerminalClaimed = \"terminal/claimed\",\n TerminalTitleChanged = \"terminal/titleChanged\",\n TerminalCwdChanged = \"terminal/cwdChanged\",\n TerminalExited = \"terminal/exited\",\n TerminalCleared = \"terminal/cleared\",\n TerminalCommandDetectionAvailable = \"terminal/commandDetectionAvailable\",\n TerminalCommandExecuted = \"terminal/commandExecuted\",\n TerminalCommandFinished = \"terminal/commandFinished\",\n}\n\n// ─── Action Envelope ─────────────────────────────────────────────────────────\n\n/**\n * Identifies the client that originally dispatched an action.\n */\nexport interface ActionOrigin {\n clientId: string;\n clientSeq: number;\n}\n\n/**\n * Every action is wrapped in an `ActionEnvelope`.\n *\n * The envelope identifies the channel the action belongs to (e.g.\n * `ahp-root://` for root actions, the session URI for session actions, the\n * terminal URI for terminal actions). Individual action payloads carry only\n * fields that are intrinsic to the action; the channel comes from the\n * envelope so that any subscribable resource can route its actions uniformly.\n */\nexport interface ActionEnvelope {\n /** Channel URI this action belongs to. */\n readonly channel: URI;\n readonly action: StateAction;\n readonly serverSeq: number;\n readonly origin: ActionOrigin | undefined;\n readonly rejectionReason?: string;\n}\n\n// ─── Discriminated Union ─────────────────────────────────────────────────────\n\n/**\n * Discriminated union of all state actions.\n */\nexport type StateAction =\n | RootAgentsChangedAction\n | RootActiveSessionsChangedAction\n | RootTerminalsChangedAction\n | RootConfigChangedAction\n | SessionReadyAction\n | SessionCreationFailedAction\n | SessionTurnStartedAction\n | SessionDeltaAction\n | SessionResponsePartAction\n | SessionToolCallStartAction\n | SessionToolCallDeltaAction\n | SessionToolCallReadyAction\n | SessionToolCallConfirmedAction\n | SessionToolCallCompleteAction\n | SessionToolCallResultConfirmedAction\n | SessionToolCallContentChangedAction\n | SessionTurnCompleteAction\n | SessionTurnCancelledAction\n | SessionErrorAction\n | SessionTitleChangedAction\n | SessionUsageAction\n | SessionReasoningAction\n | SessionModelChangedAction\n | SessionServerToolsChangedAction\n | SessionActiveClientChangedAction\n | SessionActiveClientToolsChangedAction\n | SessionPendingMessageSetAction\n | SessionPendingMessageRemovedAction\n | SessionQueuedMessagesReorderedAction\n | SessionInputRequestedAction\n | SessionInputAnswerChangedAction\n | SessionInputCompletedAction\n | SessionCustomizationsChangedAction\n | SessionCustomizationToggledAction\n | SessionCustomizationUpdatedAction\n | SessionTruncatedAction\n | SessionIsReadChangedAction\n | SessionIsArchivedChangedAction\n | SessionActivityChangedAction\n | SessionChangesetsChangedAction\n | SessionConfigChangedAction\n | SessionMetaChangedAction\n | ChangesetStatusChangedAction\n | ChangesetFileSetAction\n | ChangesetFileRemovedAction\n | ChangesetOperationsChangedAction\n | ChangesetClearedAction\n | TerminalDataAction\n | TerminalInputAction\n | TerminalResizedAction\n | TerminalClaimedAction\n | TerminalTitleChangedAction\n | TerminalCwdChangedAction\n | TerminalExitedAction\n | TerminalClearedAction\n | TerminalCommandDetectionAvailableAction\n | TerminalCommandExecutedAction\n | TerminalCommandFinishedAction;\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n// Generated from types/actions.ts — do not edit\n// Run `npm run generate` to regenerate.\n\nimport type {\n StateAction,\n RootAgentsChangedAction,\n RootActiveSessionsChangedAction,\n RootTerminalsChangedAction,\n RootConfigChangedAction,\n SessionReadyAction,\n SessionCreationFailedAction,\n SessionTurnStartedAction,\n SessionDeltaAction,\n SessionResponsePartAction,\n SessionToolCallStartAction,\n SessionToolCallDeltaAction,\n SessionToolCallReadyAction,\n SessionToolCallConfirmedAction,\n SessionToolCallCompleteAction,\n SessionToolCallResultConfirmedAction,\n SessionToolCallContentChangedAction,\n SessionTurnCompleteAction,\n SessionTurnCancelledAction,\n SessionErrorAction,\n SessionTitleChangedAction,\n SessionUsageAction,\n SessionReasoningAction,\n SessionModelChangedAction,\n SessionServerToolsChangedAction,\n SessionActiveClientChangedAction,\n SessionActiveClientToolsChangedAction,\n SessionPendingMessageSetAction,\n SessionPendingMessageRemovedAction,\n SessionQueuedMessagesReorderedAction,\n SessionInputRequestedAction,\n SessionInputAnswerChangedAction,\n SessionInputCompletedAction,\n SessionCustomizationsChangedAction,\n SessionCustomizationToggledAction,\n SessionCustomizationUpdatedAction,\n SessionTruncatedAction,\n SessionIsReadChangedAction,\n SessionIsArchivedChangedAction,\n SessionActivityChangedAction,\n SessionChangesetsChangedAction,\n SessionConfigChangedAction,\n SessionMetaChangedAction,\n ChangesetStatusChangedAction,\n ChangesetFileSetAction,\n ChangesetFileRemovedAction,\n ChangesetOperationsChangedAction,\n ChangesetClearedAction,\n TerminalDataAction,\n TerminalInputAction,\n TerminalResizedAction,\n TerminalClaimedAction,\n TerminalTitleChangedAction,\n TerminalCwdChangedAction,\n TerminalExitedAction,\n TerminalClearedAction,\n TerminalCommandDetectionAvailableAction,\n TerminalCommandExecutedAction,\n TerminalCommandFinishedAction,\n} from \"./actions.js\";\n\nimport { ActionType } from \"./actions.js\";\n\n// ─── Root vs Session vs Terminal vs Changeset Action Unions ─────────────────\n\n/** Union of all root-scoped actions. */\nexport type RootAction =\n | RootAgentsChangedAction\n | RootActiveSessionsChangedAction\n | RootTerminalsChangedAction\n | RootConfigChangedAction;\n\n/** Union of root actions that clients may dispatch. */\nexport type ClientRootAction = RootConfigChangedAction;\n\n/** Union of root actions that only the server may produce. */\nexport type ServerRootAction =\n | RootAgentsChangedAction\n | RootActiveSessionsChangedAction\n | RootTerminalsChangedAction;\n\n/** Union of all session-scoped actions. */\nexport type SessionAction =\n | SessionReadyAction\n | SessionCreationFailedAction\n | SessionTurnStartedAction\n | SessionDeltaAction\n | SessionResponsePartAction\n | SessionToolCallStartAction\n | SessionToolCallDeltaAction\n | SessionToolCallReadyAction\n | SessionToolCallConfirmedAction\n | SessionToolCallCompleteAction\n | SessionToolCallResultConfirmedAction\n | SessionToolCallContentChangedAction\n | SessionTurnCompleteAction\n | SessionTurnCancelledAction\n | SessionErrorAction\n | SessionTitleChangedAction\n | SessionUsageAction\n | SessionReasoningAction\n | SessionModelChangedAction\n | SessionServerToolsChangedAction\n | SessionActiveClientChangedAction\n | SessionActiveClientToolsChangedAction\n | SessionPendingMessageSetAction\n | SessionPendingMessageRemovedAction\n | SessionQueuedMessagesReorderedAction\n | SessionInputRequestedAction\n | SessionInputAnswerChangedAction\n | SessionInputCompletedAction\n | SessionCustomizationsChangedAction\n | SessionCustomizationToggledAction\n | SessionCustomizationUpdatedAction\n | SessionTruncatedAction\n | SessionIsReadChangedAction\n | SessionIsArchivedChangedAction\n | SessionActivityChangedAction\n | SessionChangesetsChangedAction\n | SessionConfigChangedAction\n | SessionMetaChangedAction;\n\n/** Union of session actions that clients may dispatch. */\nexport type ClientSessionAction =\n | SessionToolCallConfirmedAction\n | SessionToolCallCompleteAction\n | SessionToolCallResultConfirmedAction\n | SessionToolCallContentChangedAction\n | SessionTurnCancelledAction\n | SessionTitleChangedAction\n | SessionModelChangedAction\n | SessionActiveClientChangedAction\n | SessionActiveClientToolsChangedAction\n | SessionPendingMessageSetAction\n | SessionPendingMessageRemovedAction\n | SessionQueuedMessagesReorderedAction\n | SessionInputAnswerChangedAction\n | SessionInputCompletedAction\n | SessionCustomizationToggledAction\n | SessionTruncatedAction\n | SessionIsReadChangedAction\n | SessionIsArchivedChangedAction\n | SessionConfigChangedAction;\n\n/** Union of session actions that only the server may produce. */\nexport type ServerSessionAction =\n | SessionReadyAction\n | SessionCreationFailedAction\n | SessionTurnStartedAction\n | SessionDeltaAction\n | SessionResponsePartAction\n | SessionToolCallStartAction\n | SessionToolCallDeltaAction\n | SessionToolCallReadyAction\n | SessionTurnCompleteAction\n | SessionErrorAction\n | SessionUsageAction\n | SessionReasoningAction\n | SessionServerToolsChangedAction\n | SessionInputRequestedAction\n | SessionCustomizationsChangedAction\n | SessionCustomizationUpdatedAction\n | SessionActivityChangedAction\n | SessionChangesetsChangedAction\n | SessionMetaChangedAction;\n\n/** Union of all terminal-scoped actions. */\nexport type TerminalAction =\n | TerminalDataAction\n | TerminalInputAction\n | TerminalResizedAction\n | TerminalClaimedAction\n | TerminalTitleChangedAction\n | TerminalCwdChangedAction\n | TerminalExitedAction\n | TerminalClearedAction\n | TerminalCommandDetectionAvailableAction\n | TerminalCommandExecutedAction\n | TerminalCommandFinishedAction;\n\n/** Union of terminal actions that clients may dispatch. */\nexport type ClientTerminalAction =\n | TerminalInputAction\n | TerminalResizedAction\n | TerminalClaimedAction\n | TerminalTitleChangedAction\n | TerminalClearedAction;\n\n/** Union of terminal actions that only the server may produce. */\nexport type ServerTerminalAction =\n | TerminalDataAction\n | TerminalCwdChangedAction\n | TerminalExitedAction\n | TerminalCommandDetectionAvailableAction\n | TerminalCommandExecutedAction\n | TerminalCommandFinishedAction;\n\n/** Union of all changeset-scoped actions. */\nexport type ChangesetAction =\n | ChangesetStatusChangedAction\n | ChangesetFileSetAction\n | ChangesetFileRemovedAction\n | ChangesetOperationsChangedAction\n | ChangesetClearedAction;\n\n/** Union of changeset actions that clients may dispatch. */\nexport type ClientChangesetAction = never;\n\n/** Union of changeset actions that only the server may produce. */\nexport type ServerChangesetAction =\n | ChangesetStatusChangedAction\n | ChangesetFileSetAction\n | ChangesetFileRemovedAction\n | ChangesetOperationsChangedAction\n | ChangesetClearedAction;\n\n// ─── Client-Dispatchable Map ─────────────────────────────────────────────────\n\n/**\n * Exhaustive map indicating which action types may be dispatched by clients.\n * Adding a new action to StateAction without adding it here is a compile error.\n */\nexport const IS_CLIENT_DISPATCHABLE: { readonly [K in StateAction[\"type\"]]: boolean } = {\n [ActionType.RootAgentsChanged]: false,\n [ActionType.RootActiveSessionsChanged]: false,\n [ActionType.RootTerminalsChanged]: false,\n [ActionType.RootConfigChanged]: true,\n [ActionType.SessionReady]: false,\n [ActionType.SessionCreationFailed]: false,\n [ActionType.SessionTurnStarted]: false,\n [ActionType.SessionDelta]: false,\n [ActionType.SessionResponsePart]: false,\n [ActionType.SessionToolCallStart]: false,\n [ActionType.SessionToolCallDelta]: false,\n [ActionType.SessionToolCallReady]: false,\n [ActionType.SessionToolCallConfirmed]: true,\n [ActionType.SessionToolCallComplete]: true,\n [ActionType.SessionToolCallResultConfirmed]: true,\n [ActionType.SessionToolCallContentChanged]: true,\n [ActionType.SessionTurnComplete]: false,\n [ActionType.SessionTurnCancelled]: true,\n [ActionType.SessionError]: false,\n [ActionType.SessionTitleChanged]: true,\n [ActionType.SessionUsage]: false,\n [ActionType.SessionReasoning]: false,\n [ActionType.SessionModelChanged]: true,\n [ActionType.SessionServerToolsChanged]: false,\n [ActionType.SessionActiveClientChanged]: true,\n [ActionType.SessionActiveClientToolsChanged]: true,\n [ActionType.SessionPendingMessageSet]: true,\n [ActionType.SessionPendingMessageRemoved]: true,\n [ActionType.SessionQueuedMessagesReordered]: true,\n [ActionType.SessionInputRequested]: false,\n [ActionType.SessionInputAnswerChanged]: true,\n [ActionType.SessionInputCompleted]: true,\n [ActionType.SessionCustomizationsChanged]: false,\n [ActionType.SessionCustomizationToggled]: true,\n [ActionType.SessionCustomizationUpdated]: false,\n [ActionType.SessionTruncated]: true,\n [ActionType.SessionIsReadChanged]: true,\n [ActionType.SessionIsArchivedChanged]: true,\n [ActionType.SessionActivityChanged]: false,\n [ActionType.SessionChangesetsChanged]: false,\n [ActionType.SessionConfigChanged]: true,\n [ActionType.SessionMetaChanged]: false,\n [ActionType.ChangesetStatusChanged]: false,\n [ActionType.ChangesetFileSet]: false,\n [ActionType.ChangesetFileRemoved]: false,\n [ActionType.ChangesetOperationsChanged]: false,\n [ActionType.ChangesetCleared]: false,\n [ActionType.TerminalData]: false,\n [ActionType.TerminalInput]: true,\n [ActionType.TerminalResized]: true,\n [ActionType.TerminalClaimed]: true,\n [ActionType.TerminalTitleChanged]: true,\n [ActionType.TerminalCwdChanged]: false,\n [ActionType.TerminalExited]: false,\n [ActionType.TerminalCleared]: true,\n [ActionType.TerminalCommandDetectionAvailable]: false,\n [ActionType.TerminalCommandExecuted]: false,\n [ActionType.TerminalCommandFinished]: false,\n};\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n\nexport const AHP_SOURCE_COMMIT = \"7ed423d\" as const;\nexport const AHP_SOURCE_REPOSITORY = \"agent-host-protocol\" as const;\nconst AHP_SOURCE_TYPES_ROOT = \"../agent-host-protocol\" as const;\nconst AHP_SOURCE_TYPES_SUFFIX = \"types\" as const;\nexport const AHP_SOURCE_TYPES_PATH: string = `${AHP_SOURCE_TYPES_ROOT}/${AHP_SOURCE_TYPES_SUFFIX}`;\nexport const AHP_GENERATED_FILES = [\n \"state.ts\",\n \"actions.ts\",\n \"action-origin.generated.ts\",\n \"reducers.ts\",\n \"commands.ts\",\n \"notifications.ts\",\n \"messages.ts\",\n \"errors.ts\",\n \"version/registry.ts\",\n] as const;\n","// DO NOT EDIT -- auto-generated by scripts/sync-agent-host-protocol.ts\n// @ts-nocheck\n// biome-ignore-all lint: generated upstream protocol source\n// biome-ignore-all assist/source/organizeImports: generated upstream protocol source\n/**\n * Version Registry — Maps action types and features to protocol versions.\n *\n * @module version/registry\n */\n\nimport type { StateAction } from \"../actions.js\";\nimport { ActionType } from \"../actions.js\";\nimport type { ServerNotificationMap } from \"../messages.js\";\n\n// ─── Protocol Version Constants ──────────────────────────────────────────────\n\n/**\n * The current protocol version that new code speaks.\n *\n * Formatted as a [SemVer](https://semver.org) `MAJOR.MINOR.PATCH` string.\n */\nexport const PROTOCOL_VERSION = \"0.2.0\";\n\n// ─── SemVer Comparison ───────────────────────────────────────────────────────\n\n/**\n * Parses a `MAJOR.MINOR.PATCH` SemVer string into its three numeric\n * components. Pre-release and build metadata are not supported and MUST NOT\n * be present in protocol version strings.\n *\n * Throws if `version` is not a well-formed `MAJOR.MINOR.PATCH` string.\n */\nfunction parseSemver(version: string): readonly [number, number, number] {\n const match = /^(\\d+)\\.(\\d+)\\.(\\d+)$/.exec(version);\n if (!match) {\n throw new Error(`Invalid protocol version: ${version}`);\n }\n return [Number(match[1]), Number(match[2]), Number(match[3])] as const;\n}\n\n/**\n * Compares two `MAJOR.MINOR.PATCH` SemVer strings.\n *\n * Returns a negative number if `a < b`, zero if `a === b`, and a positive\n * number if `a > b`.\n */\nexport function compareProtocolVersions(a: string, b: string): number {\n const [aMajor, aMinor, aPatch] = parseSemver(a);\n const [bMajor, bMinor, bPatch] = parseSemver(b);\n return aMajor - bMajor || aMinor - bMinor || aPatch - bPatch;\n}\n\n// ─── Exhaustive Action → Version Map ─────────────────────────────────────────\n\n/**\n * Maps every action type to the protocol version that introduced it.\n * Adding a new action to `StateAction` without adding it here is a compile error.\n *\n * Versions are SemVer `MAJOR.MINOR.PATCH` strings (see `PROTOCOL_VERSION`).\n */\nexport const ACTION_INTRODUCED_IN: { readonly [K in StateAction[\"type\"]]: string } = {\n [ActionType.RootAgentsChanged]: \"0.1.0\",\n [ActionType.RootActiveSessionsChanged]: \"0.1.0\",\n [ActionType.SessionReady]: \"0.1.0\",\n [ActionType.SessionCreationFailed]: \"0.1.0\",\n [ActionType.SessionTurnStarted]: \"0.1.0\",\n [ActionType.SessionDelta]: \"0.1.0\",\n [ActionType.SessionResponsePart]: \"0.1.0\",\n [ActionType.SessionToolCallStart]: \"0.1.0\",\n [ActionType.SessionToolCallDelta]: \"0.1.0\",\n [ActionType.SessionToolCallReady]: \"0.1.0\",\n [ActionType.SessionToolCallConfirmed]: \"0.1.0\",\n [ActionType.SessionToolCallComplete]: \"0.1.0\",\n [ActionType.SessionToolCallResultConfirmed]: \"0.1.0\",\n [ActionType.SessionToolCallContentChanged]: \"0.1.0\",\n [ActionType.SessionTurnComplete]: \"0.1.0\",\n [ActionType.SessionTurnCancelled]: \"0.1.0\",\n [ActionType.SessionError]: \"0.1.0\",\n [ActionType.SessionTitleChanged]: \"0.1.0\",\n [ActionType.SessionUsage]: \"0.1.0\",\n [ActionType.SessionReasoning]: \"0.1.0\",\n [ActionType.SessionModelChanged]: \"0.1.0\",\n [ActionType.SessionServerToolsChanged]: \"0.1.0\",\n [ActionType.SessionActiveClientChanged]: \"0.1.0\",\n [ActionType.SessionActiveClientToolsChanged]: \"0.1.0\",\n [ActionType.SessionPendingMessageSet]: \"0.1.0\",\n [ActionType.SessionPendingMessageRemoved]: \"0.1.0\",\n [ActionType.SessionQueuedMessagesReordered]: \"0.1.0\",\n [ActionType.SessionInputRequested]: \"0.1.0\",\n [ActionType.SessionInputAnswerChanged]: \"0.1.0\",\n [ActionType.SessionInputCompleted]: \"0.1.0\",\n [ActionType.SessionCustomizationsChanged]: \"0.1.0\",\n [ActionType.SessionCustomizationToggled]: \"0.1.0\",\n [ActionType.SessionCustomizationUpdated]: \"0.1.0\",\n [ActionType.SessionTruncated]: \"0.1.0\",\n [ActionType.SessionIsReadChanged]: \"0.1.0\",\n [ActionType.SessionIsArchivedChanged]: \"0.1.0\",\n [ActionType.SessionActivityChanged]: \"0.1.0\",\n [ActionType.SessionChangesetsChanged]: \"0.2.0\",\n [ActionType.SessionConfigChanged]: \"0.1.0\",\n [ActionType.SessionMetaChanged]: \"0.1.0\",\n [ActionType.ChangesetStatusChanged]: \"0.2.0\",\n [ActionType.ChangesetFileSet]: \"0.2.0\",\n [ActionType.ChangesetFileRemoved]: \"0.2.0\",\n [ActionType.ChangesetOperationsChanged]: \"0.2.0\",\n [ActionType.ChangesetCleared]: \"0.2.0\",\n [ActionType.RootTerminalsChanged]: \"0.1.0\",\n [ActionType.RootConfigChanged]: \"0.1.0\",\n [ActionType.TerminalData]: \"0.1.0\",\n [ActionType.TerminalInput]: \"0.1.0\",\n [ActionType.TerminalResized]: \"0.1.0\",\n [ActionType.TerminalClaimed]: \"0.1.0\",\n [ActionType.TerminalTitleChanged]: \"0.1.0\",\n [ActionType.TerminalCwdChanged]: \"0.1.0\",\n [ActionType.TerminalExited]: \"0.1.0\",\n [ActionType.TerminalCleared]: \"0.1.0\",\n [ActionType.TerminalCommandDetectionAvailable]: \"0.1.0\",\n [ActionType.TerminalCommandExecuted]: \"0.1.0\",\n [ActionType.TerminalCommandFinished]: \"0.1.0\",\n};\n\n/**\n * Returns whether the given action type is known to the specified protocol version.\n */\nexport function isActionKnownToVersion(action: StateAction, clientVersion: string): boolean {\n return compareProtocolVersions(ACTION_INTRODUCED_IN[action.type], clientVersion) <= 0;\n}\n\n// ─── Exhaustive Notification Method → Version Map ──────────────────────────\n\n/**\n * Server → client notification method names that are part of the AHP\n * protocol surface. The set is a subset of {@link ServerNotificationMap}\n * keys that excludes `action` (the action envelope) since action versions\n * are tracked via {@link ACTION_INTRODUCED_IN}.\n */\nexport type ProtocolNotificationMethod = Exclude<keyof ServerNotificationMap, \"action\">;\n\n/**\n * Maps every server → client protocol notification method to the protocol\n * version that introduced it. Adding a new notification method to\n * {@link ServerNotificationMap} without adding it here is a compile error.\n *\n * Versions are SemVer `MAJOR.MINOR.PATCH` strings (see `PROTOCOL_VERSION`).\n */\nexport const NOTIFICATION_INTRODUCED_IN: { readonly [K in ProtocolNotificationMethod]: string } = {\n \"root/sessionAdded\": \"0.1.0\",\n \"root/sessionRemoved\": \"0.1.0\",\n \"root/sessionSummaryChanged\": \"0.1.0\",\n \"auth/required\": \"0.1.0\",\n};\n\n/**\n * Returns whether the given notification method is known to the specified\n * protocol version.\n */\nexport function isNotificationKnownToVersion(\n method: ProtocolNotificationMethod,\n clientVersion: string,\n): boolean {\n return compareProtocolVersions(NOTIFICATION_INTRODUCED_IN[method], clientVersion) <= 0;\n}\n","import type { AhpEvent, Direction, EventKind } from \"@ahp-inspector/shared\";\nimport { summarizeEvent } from \"./summary.js\";\nimport type { Status } from \"./types.js\";\n\nexport type LatencyBand = \"fast\" | \"normal\" | \"slow\" | \"critical\";\nexport type ActionFamily = \"text\" | \"tool-call\" | \"tool-result\" | \"status\" | \"unknown\";\nexport type KindTag = \"REQ\" | \"RES\" | \"NTF\" | \"ACT\" | \"BAD\" | \"LOG\";\nexport type DirGlyph = \"→\" | \"←\" | \"·\";\n\n/** EventRow — locked Phase-2 row projection contract.\n * Consumed by: server projector (snapshot/append SSE frames),\n * UI <EventRow> component, UI virtualization tests.\n * Adding fields is non-breaking; renaming/removing is breaking. */\nexport interface EventRow {\n readonly idx: number; // EventStore index; stable selection key\n readonly seq: number;\n readonly ts: number; // epoch ms\n readonly tsFmt: string; // 'HH:mm:ss.SSS' UTC\n readonly dir: Direction;\n readonly dirGlyph: DirGlyph;\n readonly kind: EventKind;\n readonly kindTag: KindTag;\n readonly method: string | null;\n readonly actionType: string | null;\n readonly actionFamily: ActionFamily | null;\n readonly sessionId: string | null;\n readonly sessionShort: string | null;\n readonly turnId: string | null;\n readonly turnShort: string | null;\n readonly keyId: string | null;\n readonly status: Status;\n readonly latencyMs: number | null;\n readonly latencyBand: LatencyBand | null;\n readonly payloadPreview: string;\n readonly summary?: string;\n readonly pairIdx?: number | null;\n // Parse-error specifics; null/empty for ok events.\n readonly parseErrorReason: string | null;\n readonly lineIndex: number | null; // 1-based source line; from seq+1\n // Phase 3 additions — additive, non-breaking (row-projection.ts:9-13)\n readonly errorCode: number | null;\n readonly serverSeq: number | null;\n readonly previousServerSeq: number | null;\n readonly gapBefore: boolean;\n readonly isAuthFailure: boolean;\n}\n\n/** Phase 3 additive extras — computed in AppState before projectRow call. */\nexport interface EventRowExtras {\n readonly errorCode: number | null;\n readonly serverSeq: number | null;\n readonly previousServerSeq: number | null;\n readonly gapBefore: boolean;\n readonly isAuthFailure: boolean;\n readonly pairIdx?: number | null;\n}\n\nconst DEFAULT_EXTRAS: EventRowExtras = {\n errorCode: null,\n serverSeq: null,\n previousServerSeq: null,\n gapBefore: false,\n isAuthFailure: false,\n pairIdx: null,\n};\n\nexport function bandFor(latencyMs: number | null): LatencyBand | null {\n if (latencyMs === null || latencyMs < 0) return null;\n if (latencyMs < 50) return \"fast\";\n if (latencyMs < 200) return \"normal\";\n if (latencyMs < 1000) return \"slow\";\n return \"critical\";\n}\n\nexport function dirGlyphFor(dir: Direction): DirGlyph {\n return dir === \"c2s\" ? \"→\" : dir === \"s2c\" ? \"←\" : \"·\";\n}\n\nconst KIND_TAG: Record<EventKind, KindTag> = {\n request: \"REQ\",\n response: \"RES\",\n \"client-notification\": \"NTF\",\n \"server-notification\": \"NTF\",\n \"protocol-notification\": \"NTF\",\n action: \"ACT\",\n \"parse-error\": \"BAD\",\n log: \"LOG\",\n};\n\nexport function kindTagFor(kind: EventKind): KindTag {\n return KIND_TAG[kind];\n}\n\nexport function actionFamilyFor(kind: EventKind, actionType: string | null): ActionFamily | null {\n if (kind !== \"action\") return null;\n if (!actionType) return \"unknown\";\n if (/^text$/i.test(actionType)) return \"text\";\n if (/^tool[._-]?call/i.test(actionType)) return \"tool-call\";\n if (/^tool[._-]?result/i.test(actionType)) return \"tool-result\";\n if (/^status/i.test(actionType)) return \"status\";\n return \"unknown\";\n}\n\nexport function formatTs(ms: number): string {\n const d = new Date(ms);\n const pad = (n: number, w = 2): string => String(n).padStart(w, \"0\");\n return `${pad(d.getUTCHours())}:${pad(d.getUTCMinutes())}:${pad(d.getUTCSeconds())}.${pad(\n d.getUTCMilliseconds(),\n 3,\n )}`;\n}\n\nexport function formatSessionShort(sessionId: string): string {\n const watched = formatResourceWatchChannel(sessionId);\n if (watched) return watched;\n\n const parts = sessionId.split(/[/:]+/).filter(Boolean);\n let label = parts.at(-1) ?? sessionId;\n label = label.replace(/^session[-_:]?/i, \"\");\n label = label.replace(/[-_]\\d{4}[-_]\\d{2}[-_]\\d{2}$/u, \"\");\n\n if (/^[0-9a-f]{16,}$/iu.test(label)) return label.slice(-8);\n const uuidFirstSegment = label.match(/^[0-9a-f]{8}(?=-[0-9a-f]{4}-)/iu)?.[0];\n if (uuidFirstSegment) return uuidFirstSegment;\n if (label.length <= 18) return label;\n return `${label.slice(0, 17)}…`;\n}\n\n/**\n * Resource-watch channels look like `ahp-resource-watch://r/<base64>` where the\n * base64 payload is JSON such as `{\"root\":\"file:///…/settings.json\"}`. Decode\n * it so the timeline shows the watched resource (e.g. `watch:settings.json`)\n * instead of an opaque base64 blob.\n */\nfunction formatResourceWatchChannel(sessionId: string): string | null {\n const match = sessionId.match(/^ahp-resource-watch:\\/\\/[^/]*\\/(.+)$/u);\n if (!match) return null;\n const encoded = match[1];\n if (!encoded) return null;\n try {\n const normalized = encoded.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const json = atob(normalized);\n const parsed = JSON.parse(json) as Record<string, unknown>;\n const root = parsed.root ?? parsed.uri ?? parsed.resource;\n if (typeof root !== \"string\") return null;\n const tail = root.split(/[/\\\\]/u).filter(Boolean).at(-1) ?? root;\n const name = decodeURIComponent(tail);\n return `watch:${name.length <= 24 ? name : `${name.slice(0, 23)}…`}`;\n } catch {\n return null;\n }\n}\n\nexport function payloadPreviewOf(raw: unknown): string {\n if (raw === undefined || raw === null) return \"\";\n let src: unknown = raw;\n if (typeof raw === \"object\" && raw !== null) {\n const r = raw as Record<string, unknown>;\n src = r.params ?? r.result ?? raw;\n }\n let s: string;\n try {\n s = JSON.stringify(src) ?? \"\";\n } catch {\n s = \"\";\n }\n s = s.replace(/\\s+/g, \" \");\n return s.length > 120 ? s.slice(0, 120) : s;\n}\n\nfunction capSummary(summary: string): string {\n return summary.length > 160 ? `${summary.slice(0, 159)}…` : summary;\n}\n\n/**\n * Compute the label shown in the timeline's Event column. Mirrors the UI's\n * `primaryLabel` so projection-side post-processing can avoid emitting a\n * summary that just repeats it.\n */\nfunction primaryLabelFor(\n kind: AhpEvent[\"kind\"],\n method: string | null,\n actionType: string | null,\n): string | null {\n if (kind === \"action\" || kind === \"protocol-notification\") return actionType ?? method;\n return method ?? actionType;\n}\n\n/** Strip the Event-column label from the start of summary so it adds info. */\nfunction dropLabelPrefix(summary: string, label: string | null): string {\n if (!label) return summary;\n const lc = summary.toLowerCase();\n const lcLabel = label.toLowerCase();\n if (lc === lcLabel) return summary;\n if (!lc.startsWith(`${lcLabel} `)) return summary;\n const stripped = summary.slice(label.length).trim();\n return stripped.length > 0 ? stripped : summary;\n}\n\nexport function projectRow(\n event: AhpEvent,\n idx: number,\n status: Status,\n latencyMs: number | null,\n extras: EventRowExtras = DEFAULT_EXTRAS,\n pairMethod: string | null = null,\n): EventRow {\n if (event.kind === \"parse-error\") {\n return {\n idx,\n seq: event.seq,\n ts: event.ts,\n tsFmt: formatTs(event.ts),\n dir: event.dir,\n dirGlyph: dirGlyphFor(event.dir),\n kind: event.kind,\n kindTag: \"BAD\",\n method: null,\n actionType: null,\n actionFamily: null,\n sessionId: null,\n sessionShort: null,\n turnId: null,\n turnShort: null,\n keyId: null,\n status: \"n/a\",\n latencyMs: null,\n latencyBand: null,\n payloadPreview: \"\",\n summary: capSummary(summarizeEvent(event, null)),\n pairIdx: null,\n parseErrorReason: event.parseError?.reason ?? \"unknown parse error\",\n lineIndex: event.seq + 1,\n ...DEFAULT_EXTRAS,\n };\n }\n const session = event.sessionId;\n const turn = event.turnId;\n const idStr = event.id === null ? null : String(event.id);\n return {\n idx,\n seq: event.seq,\n ts: event.ts,\n tsFmt: formatTs(event.ts),\n dir: event.dir,\n dirGlyph: dirGlyphFor(event.dir),\n kind: event.kind,\n kindTag: kindTagFor(event.kind),\n method: event.method,\n actionType: event.actionType,\n actionFamily: actionFamilyFor(event.kind, event.actionType),\n sessionId: session,\n sessionShort: session ? formatSessionShort(session) : null,\n turnId: turn,\n turnShort: turn ? turn.slice(-6) : null,\n keyId: idStr ? (idStr.length > 12 ? idStr.slice(0, 12) : idStr) : null,\n status,\n latencyMs,\n latencyBand: bandFor(latencyMs),\n payloadPreview: payloadPreviewOf(event.raw),\n summary: capSummary(\n dropLabelPrefix(\n summarizeEvent(event, pairMethod),\n primaryLabelFor(event.kind, event.method, event.actionType),\n ),\n ),\n pairIdx: extras.pairIdx ?? null,\n parseErrorReason: null,\n lineIndex: null,\n ...extras,\n };\n}\n","import { ChevronDown } from \"lucide-react\";\nimport type { JSX } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { GroupingMode } from \"../../state/store.js\";\n\ninterface GroupToggleChipProps {\n value: GroupingMode;\n onChange(mode: GroupingMode): void;\n}\n\nconst MODES: { mode: GroupingMode; label: string }[] = [\n { mode: \"none\", label: \"None\" },\n { mode: \"session\", label: \"Session\" },\n { mode: \"session+turn\", label: \"Session + Turn\" },\n];\n\nconst modeLabel: Record<GroupingMode, string> = {\n none: \"None\",\n session: \"Session\",\n \"session+turn\": \"Session + Turn\",\n};\n\ninterface GroupTogglePopoverProps {\n value: GroupingMode;\n onChange(mode: GroupingMode): void;\n onClose(): void;\n}\n\nfunction GroupTogglePopover({ value, onChange, onClose }: GroupTogglePopoverProps): JSX.Element {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleMouseDown(e: MouseEvent) {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n onClose();\n }\n }\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, [onClose]);\n\n function handleSelect(mode: GroupingMode) {\n onChange(mode);\n onClose();\n }\n\n return (\n <div\n ref={ref}\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n right: 0,\n zIndex: 1100,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n minWidth: 160,\n boxShadow: \"var(--shadow-menu)\",\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"var(--space-1) 0\",\n }}\n >\n {MODES.map(({ mode, label }) => (\n <label\n key={mode}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-1) var(--space-3)\",\n background: value === mode ? \"var(--color-chip-bg-active)\" : \"none\",\n cursor: \"pointer\",\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n width: \"100%\",\n }}\n >\n <input\n type=\"radio\"\n name=\"group-mode\"\n value={mode}\n checked={value === mode}\n onChange={() => handleSelect(mode)}\n style={{\n accentColor: \"var(--color-accent)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLInputElement).style.outline = \"none\";\n }}\n />\n {label}\n </label>\n ))}\n </div>\n );\n}\n\nexport function GroupToggleChip({ value, onChange }: GroupToggleChipProps): JSX.Element {\n const [isOpen, setIsOpen] = useState(false);\n\n function handleChange(mode: GroupingMode) {\n onChange(mode);\n if (mode !== \"none\") {\n window.scrollTo(0, 0);\n }\n }\n\n return (\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <button\n type=\"button\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n onClick={() => setIsOpen((o) => !o)}\n onMouseDown={(event) => event.stopPropagation()}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n height: 28,\n paddingLeft: \"var(--space-2)\",\n paddingRight: \"var(--space-2)\",\n background: isOpen ? \"var(--color-chip-bg-active)\" : \"var(--color-chip-bg)\",\n border: \"1px solid var(--color-chip-border)\",\n borderRadius: 6,\n color: \"var(--color-chip-fg)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n cursor: \"pointer\",\n outline: \"none\",\n whiteSpace: \"nowrap\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n (e.currentTarget as HTMLButtonElement).style.outlineOffset = \"2px\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <span>Group: {modeLabel[value]}</span>\n <ChevronDown size={12} style={{ color: \"var(--color-chip-fg-muted)\" }} />\n </button>\n {isOpen && (\n <GroupTogglePopover\n value={value}\n onChange={handleChange}\n onClose={() => setIsOpen(false)}\n />\n )}\n </div>\n );\n}\n","import type { JSX } from \"react\";\n\ninterface ResultCounterProps {\n visible: number;\n total: number;\n}\n\nexport function ResultCounter({ visible, total }: ResultCounterProps): JSX.Element {\n const isFiltered = visible !== total;\n const isZero = visible === 0 && isFiltered;\n\n return (\n <span\n style={{\n color: isZero ? \"var(--color-warning)\" : \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontVariantNumeric: \"tabular-nums\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n }}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n >\n {isFiltered ? `${visible}/${total} events` : `${total} events`}\n </span>\n );\n}\n","import { Filter, X } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface RowFilterInputProps {\n value: string;\n onChange(value: string): void;\n onClear(): void;\n}\n\nexport function RowFilterInput({ value, onChange, onClear }: RowFilterInputProps): JSX.Element {\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n flex: \"1 1 auto\",\n minWidth: 200,\n maxWidth: 480,\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: \"var(--space-2)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: \"var(--weight-semibold)\",\n pointerEvents: \"none\",\n }}\n >\n <Filter size={16} />\n <span>Filter rows</span>\n </span>\n <input\n type=\"text\"\n value={value}\n onChange={(event) => onChange(event.target.value)}\n onKeyDown={(event) => {\n // Escape clears the filter box only while focus is inside it.\n // Stop propagation so the global timeline Escape handler (which never\n // clears a filter) does not also act on this keypress.\n if (event.key === \"Escape\") {\n event.stopPropagation();\n if (value.length > 0) onClear();\n }\n }}\n placeholder=\"Filter visible rows...\"\n aria-label=\"Filter rows\"\n style={{\n width: \"100%\",\n height: \"var(--filter-bar-height)\",\n paddingLeft: \"104px\",\n paddingRight: value.length > 0 ? \"var(--space-6)\" : \"var(--space-2)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-row-size)\",\n lineHeight: \"var(--text-row-line)\",\n outline: \"none\",\n }}\n onFocus={(event) => {\n event.currentTarget.style.outline = \"2px solid var(--color-accent)\";\n event.currentTarget.style.outlineOffset = \"-2px\";\n }}\n onBlur={(event) => {\n event.currentTarget.style.outline = \"none\";\n }}\n />\n {value.length > 0 && (\n <button\n type=\"button\"\n aria-label=\"Clear row filter\"\n onClick={onClear}\n style={{\n position: \"absolute\",\n right: \"var(--space-2)\",\n display: \"flex\",\n alignItems: \"center\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--color-text-muted)\",\n padding: 0,\n borderRadius: 3,\n }}\n onFocus={(event) => {\n event.currentTarget.style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(event) => {\n event.currentTarget.style.outline = \"none\";\n }}\n >\n <X size={14} />\n </button>\n )}\n </div>\n );\n}\n","import { Search, X } from \"lucide-react\";\nimport type { JSX, RefObject } from \"react\";\n\ninterface SearchInputCoreProps {\n value: string;\n onChange(q: string): void;\n onClear(): void;\n ref?: RefObject<HTMLInputElement | null> | undefined;\n}\n\n/**\n * SearchInputCore — the core search input element without flex wrapper.\n * Used by SearchPopover and optionally wrapped by SearchInput for toolbar use.\n */\nexport function SearchInputCore({ value, onChange, onClear, ref }: SearchInputCoreProps): JSX.Element {\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{\n position: \"absolute\",\n left: \"var(--space-2)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: \"var(--weight-semibold)\",\n pointerEvents: \"none\",\n }}\n >\n <Search size={16} />\n <span>Search</span>\n </span>\n <input\n type=\"text\"\n ref={ref}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" && value.length > 0) {\n e.preventDefault();\n window.dispatchEvent(\n new CustomEvent(\"ahp-search-nav\", {\n detail: e.shiftKey ? \"previous\" : \"next\",\n }),\n );\n }\n }}\n placeholder=\"all JSON payloads, methods, ids, sessions...\"\n aria-label=\"Search all events\"\n style={{\n width: \"100%\",\n height: \"var(--filter-bar-height)\",\n paddingLeft: \"92px\",\n paddingRight: value.length > 0 ? \"var(--space-6)\" : \"var(--space-8)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-row-size)\",\n lineHeight: \"var(--text-row-line)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.target as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n (e.target as HTMLInputElement).style.outlineOffset = \"-2px\";\n }}\n onBlur={(e) => {\n (e.target as HTMLInputElement).style.outline = \"none\";\n }}\n />\n {value.length > 0 && (\n <button\n type=\"button\"\n aria-label=\"Clear search\"\n onClick={onClear}\n style={{\n position: \"absolute\",\n right: \"var(--space-2)\",\n display: \"flex\",\n alignItems: \"center\",\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--color-text-muted)\",\n padding: 0,\n borderRadius: 3,\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <X size={14} />\n </button>\n )}\n </div>\n );\n}\n","import { ChevronDown, ChevronUp } from \"lucide-react\";\nimport type { JSX, RefObject } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport type { SearchStatus } from \"../../state/store.js\";\nimport { SearchInputCore } from \"./SearchInputCore.js\";\n\ninterface SearchPopoverProps {\n value: string;\n onChange(q: string): void;\n onClear(): void;\n onClose(): void;\n searchTotal: number;\n searchStatus: SearchStatus;\n searchError?: string | null;\n searchTruncated: boolean;\n searchMatchCount: number;\n focusedSearchIndex: number | null;\n onNavigate(direction: \"previous\" | \"next\"): void;\n inputRef?: RefObject<HTMLInputElement | null> | undefined;\n}\n\nexport function SearchPopover({\n value,\n onChange,\n onClear,\n onClose,\n searchTotal,\n searchStatus,\n searchError,\n searchTruncated,\n searchMatchCount,\n focusedSearchIndex,\n onNavigate,\n inputRef,\n}: SearchPopoverProps): JSX.Element {\n const popoverRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n function handleKeyDown(e: KeyboardEvent) {\n if (e.key === \"Escape\") {\n onClose();\n }\n }\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [onClose]);\n\n const hasSearch = value.trim() !== \"\";\n const hasSearchMatches = hasSearch && searchTotal > 0;\n const searchStatusText = !hasSearch\n ? null\n : searchStatus === \"searching\"\n ? \"Searching...\"\n : searchStatus === \"error\"\n ? `Search failed${searchError ? `: ${searchError}` : \"\"}`\n : focusedSearchIndex !== null && focusedSearchIndex >= 0\n ? `${(focusedSearchIndex + 1).toLocaleString()} of ${searchMatchCount.toLocaleString()} ${searchMatchCount === 1 ? \"match\" : \"matches\"}${searchTruncated ? \"+\" : \"\"}`\n : `${searchMatchCount.toLocaleString()} ${searchMatchCount === 1 ? \"match\" : \"matches\"}${searchTruncated ? \"+\" : \"\"}`;\n\n return (\n <div\n ref={popoverRef}\n role=\"region\"\n aria-label=\"Search popover\"\n data-testid=\"search-popover\"\n style={{\n position: \"absolute\",\n top: \"100%\",\n right: 12,\n marginTop: \"4px\",\n width: 344,\n maxWidth: \"calc(100% - 24px)\",\n zIndex: 1100,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n boxShadow: \"var(--shadow-menu)\",\n padding: \"var(--space-2)\",\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-2)\",\n }}\n >\n {/* Search input core — no flex wrapper */}\n <SearchInputCore\n value={value}\n onChange={onChange}\n onClear={onClear}\n ref={inputRef}\n />\n\n {/* Status and navigation */}\n {searchStatusText !== null && (\n <div\n data-testid=\"search-status\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"var(--space-1)\",\n color:\n searchStatus === \"error\" ? \"var(--color-danger)\" : \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n whiteSpace: \"nowrap\",\n }}\n >\n <span>{searchStatusText}</span>\n <div style={{ display: \"flex\", gap: \"var(--space-1)\" }}>\n <button\n type=\"button\"\n aria-label=\"Previous search match\"\n disabled={!hasSearchMatches}\n onClick={() => onNavigate(\"previous\")}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"none\",\n border: \"none\",\n cursor: !hasSearchMatches ? \"not-allowed\" : \"pointer\",\n color: !hasSearchMatches\n ? \"var(--color-text-disabled)\"\n : \"var(--color-text-muted)\",\n padding: 0,\n borderRadius: 3,\n }}\n onFocus={(e) => {\n if (!hasSearchMatches) return;\n (e.currentTarget as HTMLButtonElement).style.outline =\n \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <ChevronUp size={16} />\n </button>\n <button\n type=\"button\"\n aria-label=\"Next search match\"\n disabled={!hasSearchMatches}\n onClick={() => onNavigate(\"next\")}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"none\",\n border: \"none\",\n cursor: !hasSearchMatches ? \"not-allowed\" : \"pointer\",\n color: !hasSearchMatches\n ? \"var(--color-text-disabled)\"\n : \"var(--color-text-muted)\",\n padding: 0,\n borderRadius: 3,\n }}\n onFocus={(e) => {\n if (!hasSearchMatches) return;\n (e.currentTarget as HTMLButtonElement).style.outline =\n \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <ChevronDown size={16} />\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { Search } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface SearchTriggerProps {\n isActive: boolean;\n onClick(): void;\n}\n\nexport function SearchTrigger({ isActive, onClick }: SearchTriggerProps): JSX.Element {\n return (\n <button\n type=\"button\"\n aria-label=\"Open search\"\n title=\"Press / to open search\"\n onClick={onClick}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 28,\n height: 28,\n padding: \"var(--space-1)\",\n background: isActive ? \"var(--color-chip-bg-active)\" : \"var(--color-chip-bg)\",\n border: isActive\n ? \"1px solid var(--color-accent)\"\n : \"1px solid var(--color-chip-border)\",\n borderRadius: 4,\n color: \"var(--color-chip-fg)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: \"var(--weight-semibold)\",\n cursor: \"pointer\",\n outline: \"none\",\n whiteSpace: \"nowrap\",\n flexShrink: 0,\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n (e.currentTarget as HTMLButtonElement).style.outlineOffset = \"2px\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n <Search size={16} />\n </button>\n );\n}\n","import type { JSX } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\n\ninterface TimeRangePopoverProps {\n from: number | null;\n to: number | null;\n onApply(from: number | null, to: number | null): void;\n onClose(): void;\n}\n\nfunction tsToDatetimeLocal(ts: number | null): string {\n if (ts === null) return \"\";\n const d = new Date(ts);\n // format: YYYY-MM-DDTHH:mm\n const pad = (n: number) => String(n).padStart(2, \"0\");\n return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}`;\n}\n\nfunction datetimeLocalToTs(s: string): number | null {\n if (!s) return null;\n const ms = new Date(s).getTime();\n return Number.isNaN(ms) ? null : ms;\n}\n\nexport function TimeRangePopover({\n from,\n to,\n onApply,\n onClose,\n}: TimeRangePopoverProps): JSX.Element {\n const ref = useRef<HTMLDivElement>(null);\n const [fromVal, setFromVal] = useState(tsToDatetimeLocal(from));\n const [toVal, setToVal] = useState(tsToDatetimeLocal(to));\n\n useEffect(() => {\n function handleMouseDown(e: MouseEvent) {\n if (ref.current && !ref.current.contains(e.target as Node)) {\n onClose();\n }\n }\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, [onClose]);\n\n function handleApply() {\n onApply(datetimeLocalToTs(fromVal), datetimeLocalToTs(toVal));\n onClose();\n }\n\n function handleClear() {\n setFromVal(\"\");\n setToVal(\"\");\n onApply(null, null);\n }\n\n const inputStyle: React.CSSProperties = {\n width: \"100%\",\n background: \"var(--color-surface)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1) var(--space-2)\",\n outline: \"none\",\n colorScheme: \"var(--color-scheme)\",\n };\n\n return (\n <div\n ref={ref}\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n left: 0,\n zIndex: 1100,\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n minWidth: 240,\n boxShadow: \"var(--shadow-menu)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-3)\",\n }}\n >\n <label\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-1)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n From\n <input\n type=\"datetime-local\"\n value={fromVal}\n onChange={(e) => setFromVal(e.target.value)}\n style={inputStyle}\n onFocus={(e) => {\n (e.target as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n (e.target as HTMLInputElement).style.outlineOffset = \"-2px\";\n }}\n onBlur={(e) => {\n (e.target as HTMLInputElement).style.outline = \"none\";\n }}\n />\n </label>\n <label\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-1)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n To\n <input\n type=\"datetime-local\"\n value={toVal}\n onChange={(e) => setToVal(e.target.value)}\n style={inputStyle}\n onFocus={(e) => {\n (e.target as HTMLInputElement).style.outline = \"2px solid var(--color-accent)\";\n (e.target as HTMLInputElement).style.outlineOffset = \"-2px\";\n }}\n onBlur={(e) => {\n (e.target as HTMLInputElement).style.outline = \"none\";\n }}\n />\n </label>\n <div style={{ display: \"flex\", gap: \"var(--space-2)\", justifyContent: \"flex-end\" }}>\n <button\n type=\"button\"\n onClick={handleClear}\n style={{\n background: \"none\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text-muted)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n padding: \"var(--space-1) var(--space-2)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Clear selection\n </button>\n <button\n type=\"button\"\n onClick={handleApply}\n style={{\n background: \"var(--color-accent)\",\n border: \"none\",\n borderRadius: 4,\n color: \"var(--color-accent-foreground)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: \"var(--weight-semibold)\",\n padding: \"var(--space-1) var(--space-2)\",\n outline: \"none\",\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"2px solid var(--color-accent)\";\n (e.currentTarget as HTMLButtonElement).style.outlineOffset = \"2px\";\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLButtonElement).style.outline = \"none\";\n }}\n >\n Apply range\n </button>\n </div>\n </div>\n );\n}\n","import { formatSessionShort, type Status } from \"@ahp-inspector/core\";\nimport type { EventKind } from \"@ahp-inspector/shared\";\nimport type { JSX, RefObject } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useFacetCounts, useFilteredRows, useVisibleSearchMatches } from \"../../state/selectors.js\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { FacetChip } from \"./FacetChip.js\";\nimport { FacetPopover } from \"./FacetPopover.js\";\nimport { GroupToggleChip } from \"./GroupToggleChip.js\";\nimport { ResultCounter } from \"./ResultCounter.js\";\nimport { RowFilterInput } from \"./RowFilterInput.js\";\nimport { SearchPopover } from \"./SearchPopover.js\";\nimport { SearchTrigger } from \"./SearchTrigger.js\";\nimport { TimeRangePopover } from \"./TimeRangePopover.js\";\n\ntype OpenPopover =\n | \"direction\"\n | \"kind\"\n | \"method\"\n | \"action\"\n | \"session\"\n | \"turn\"\n | \"status\"\n | \"time\"\n | null;\n\nfunction mapToOptions(\n m: Map<string, number>,\n labelFor: (value: string) => string = (value) => value,\n): { value: string; label: string; count: number }[] {\n return Array.from(m.entries()).map(([value, count]) => ({\n value,\n label: labelFor(value),\n count,\n }));\n}\n\nfunction visibleSelectionFromHidden(\n options: { value: string; label: string; count: number }[],\n hiddenValues: string[],\n): string[] {\n return options.map((option) => option.value).filter((value) => !hiddenValues.includes(value));\n}\n\nfunction hiddenValuesFromSelection(\n options: { value: string; label: string; count: number }[],\n selectedValues: string[],\n previousHiddenValues: string[],\n): string[] {\n const nextHiddenValues = options\n .map((option) => option.value)\n .filter((value) => !selectedValues.includes(value));\n const availableValues = new Set(options.map((option) => option.value));\n const nextHiddenSet = new Set(nextHiddenValues);\n const carriedHiddenValues = previousHiddenValues.filter(\n (value) => !availableValues.has(value) || nextHiddenSet.has(value),\n );\n return [\n ...carriedHiddenValues,\n ...nextHiddenValues.filter((value) => !carriedHiddenValues.includes(value)),\n ];\n}\n\nexport function FilterBar({\n searchInputRef,\n}: {\n searchInputRef?: RefObject<HTMLInputElement | null>;\n}): JSX.Element {\n const searchQuery = useAppStore((s) => s.searchQuery);\n const setSearchQuery = useAppStore((s) => s.setSearchQuery);\n const searchTotal = useAppStore((s) => s.searchTotal);\n const searchStatus = useAppStore((s) => s.searchStatus);\n const searchTruncated = useAppStore((s) => s.searchTruncated);\n const searchError = useAppStore((s) => s.searchError);\n const searchMatches = useAppStore((s) => s.searchMatches);\n const selectedIdx = useAppStore((s) => s.selectedIdx);\n const filters = useAppStore((s) => s.filters);\n const patchFilter = useAppStore((s) => s.patchFilter);\n const grouping = useAppStore((s) => s.grouping);\n const setGrouping = useAppStore((s) => s.setGrouping);\n const facetCounts = useFacetCounts();\n const filteredRows = useFilteredRows();\n const visibleSearchMatches = useVisibleSearchMatches();\n const totalRows = useAppStore((s) => s.rows.length);\n\n const directionOptions = mapToOptions(facetCounts.direction);\n const kindOptions = mapToOptions(facetCounts.kind);\n const methodOptions = mapToOptions(facetCounts.method);\n const actionOptions = mapToOptions(facetCounts.actionType);\n const channelOptions = mapToOptions(facetCounts.session, formatSessionShort);\n const turnOptions = mapToOptions(facetCounts.turn);\n const statusOptions = mapToOptions(facetCounts.status);\n\n const [openPopover, setOpenPopover] = useState<OpenPopover>(null);\n const isSearchPopoverOpen = useAppStore((s) => s.searchPopoverOpen);\n const setSearchPopoverOpen = useAppStore((s) => s.setSearchPopoverOpen);\n const searchPopoverInputRef = useRef<HTMLInputElement | null>(null);\n\n // Open the search popover and focus its input once it mounts (next render).\n function openSearch() {\n setSearchPopoverOpen(true);\n setTimeout(() => {\n searchPopoverInputRef.current?.focus();\n }, 0);\n }\n\n // Handle \"/\" and cmd+f / ctrl+f keyboard shortcuts to open the search popover.\n useEffect(() => {\n function handleKeyDown(e: KeyboardEvent) {\n if (isSearchPopoverOpen) {\n return;\n }\n const isFindShortcut = (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"f\";\n if (e.key === \"/\" || isFindShortcut) {\n // Suppress the browser's native find dialog and drive in-app search instead.\n e.preventDefault();\n openSearch();\n }\n }\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [isSearchPopoverOpen]);\n\n function togglePopover(name: OpenPopover) {\n setOpenPopover((prev) => (prev === name ? null : name));\n }\n\n function close() {\n setOpenPopover(null);\n }\n\n function navigateSearch(direction: \"previous\" | \"next\"): void {\n window.dispatchEvent(new CustomEvent(\"ahp-search-nav\", { detail: direction }));\n }\n\n const hasSearch = searchQuery.trim() !== \"\";\n const hasSearchMatches = hasSearch && searchTotal > 0;\n const searchMatchCount =\n visibleSearchMatches.length > 0 ? visibleSearchMatches.length : searchMatches?.size ?? searchTotal;\n const focusedSearchIndex =\n selectedIdx === null\n ? null\n : visibleSearchMatches.indexOf(selectedIdx) >= 0\n ? visibleSearchMatches.indexOf(selectedIdx)\n : searchMatches?.has(selectedIdx)\n ? Array.from(searchMatches).indexOf(selectedIdx)\n : null;\n\n return (\n <div\n data-testid=\"filter-bar\"\n className=\"filter-bar\"\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n minHeight: \"var(--filter-bar-height)\",\n paddingLeft: \"var(--space-3)\",\n paddingRight: \"var(--space-3)\",\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border)\",\n position: \"relative\",\n zIndex: 1000,\n }}\n >\n {/* Row filter input — primary visible input */}\n <RowFilterInput\n value={filters.rowText}\n onChange={(value) => patchFilter(\"rowText\", value)}\n onClear={() => patchFilter(\"rowText\", \"\")}\n />\n\n {/* Search trigger button */}\n <SearchTrigger\n isActive={hasSearch}\n onClick={() => {\n if (isSearchPopoverOpen) {\n setSearchPopoverOpen(false);\n } else {\n openSearch();\n }\n }}\n />\n\n {/* Direction facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Dir\"\n activeCount={filters.direction.length}\n isOpen={openPopover === \"direction\"}\n isDisabled={false}\n onClick={() => togglePopover(\"direction\")}\n />\n {openPopover === \"direction\" && (\n <FacetPopover\n options={directionOptions}\n selected={visibleSelectionFromHidden(directionOptions, filters.direction)}\n onChange={(values) =>\n patchFilter(\n \"direction\",\n hiddenValuesFromSelection(directionOptions, values, filters.direction) as (\n | \"c2s\"\n | \"s2c\"\n )[],\n )\n }\n onClose={close}\n />\n )}\n </div>\n\n {/* Kind facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Kind\"\n activeCount={filters.kind.length}\n isOpen={openPopover === \"kind\"}\n isDisabled={false}\n onClick={() => togglePopover(\"kind\")}\n />\n {openPopover === \"kind\" && (\n <FacetPopover\n options={kindOptions}\n selected={visibleSelectionFromHidden(kindOptions, filters.kind)}\n onChange={(values) =>\n patchFilter(\n \"kind\",\n hiddenValuesFromSelection(kindOptions, values, filters.kind) as EventKind[],\n )\n }\n onClose={close}\n />\n )}\n </div>\n\n {/* Method facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Method\"\n activeCount={filters.method.length}\n isOpen={openPopover === \"method\"}\n isDisabled={false}\n onClick={() => togglePopover(\"method\")}\n />\n {openPopover === \"method\" && (\n <FacetPopover\n options={methodOptions}\n selected={visibleSelectionFromHidden(methodOptions, filters.method)}\n onChange={(values) =>\n patchFilter(\"method\", hiddenValuesFromSelection(methodOptions, values, filters.method))\n }\n onClose={close}\n searchable\n align=\"end\"\n />\n )}\n </div>\n\n {/* Action facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Action\"\n activeCount={filters.actionType.length}\n isOpen={openPopover === \"action\"}\n isDisabled={false}\n onClick={() => togglePopover(\"action\")}\n />\n {openPopover === \"action\" && (\n <FacetPopover\n options={actionOptions}\n selected={visibleSelectionFromHidden(actionOptions, filters.actionType)}\n onChange={(values) =>\n patchFilter(\n \"actionType\",\n hiddenValuesFromSelection(actionOptions, values, filters.actionType),\n )\n }\n onClose={close}\n align=\"end\"\n />\n )}\n </div>\n\n {/* Channel facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Channel\"\n activeCount={filters.session.length}\n isOpen={openPopover === \"session\"}\n isDisabled={false}\n onClick={() => togglePopover(\"session\")}\n />\n {openPopover === \"session\" && (\n <FacetPopover\n options={channelOptions}\n selected={visibleSelectionFromHidden(channelOptions, filters.session)}\n onChange={(values) =>\n patchFilter(\"session\", hiddenValuesFromSelection(channelOptions, values, filters.session))\n }\n onClose={close}\n searchable\n align=\"end\"\n />\n )}\n </div>\n\n {/* Turn facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Turn\"\n activeCount={filters.turn.length}\n isOpen={openPopover === \"turn\"}\n isDisabled={false}\n onClick={() => togglePopover(\"turn\")}\n />\n {openPopover === \"turn\" && (\n <FacetPopover\n options={turnOptions}\n selected={visibleSelectionFromHidden(turnOptions, filters.turn)}\n onChange={(values) =>\n patchFilter(\"turn\", hiddenValuesFromSelection(turnOptions, values, filters.turn))\n }\n onClose={close}\n searchable\n align=\"end\"\n />\n )}\n </div>\n\n {/* Status facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Status\"\n activeCount={filters.status.length}\n isOpen={openPopover === \"status\"}\n isDisabled={false}\n onClick={() => togglePopover(\"status\")}\n />\n {openPopover === \"status\" && (\n <FacetPopover\n options={statusOptions}\n selected={visibleSelectionFromHidden(statusOptions, filters.status)}\n onChange={(values) =>\n patchFilter(\n \"status\",\n hiddenValuesFromSelection(statusOptions, values, filters.status) as Status[],\n )\n }\n onClose={close}\n align=\"end\"\n />\n )}\n </div>\n\n {/* Time facet */}\n <div style={{ position: \"relative\", flexShrink: 0 }}>\n <FacetChip\n label=\"Time\"\n activeCount={(filters.timeFrom !== null ? 1 : 0) + (filters.timeTo !== null ? 1 : 0)}\n isOpen={openPopover === \"time\"}\n isDisabled={false}\n onClick={() => togglePopover(\"time\")}\n />\n {openPopover === \"time\" && (\n <TimeRangePopover\n from={filters.timeFrom}\n to={filters.timeTo}\n onApply={(from, to) => {\n patchFilter(\"timeFrom\", from);\n patchFilter(\"timeTo\", to);\n }}\n onClose={close}\n />\n )}\n </div>\n\n {/* Group toggle — right-aligned */}\n <div style={{ marginLeft: \"auto\", flexShrink: 0 }}>\n <GroupToggleChip value={grouping} onChange={setGrouping} />\n </div>\n\n {/* Result counter */}\n <ResultCounter visible={filteredRows.length} total={totalRows} />\n\n {/* Search popover — positioned absolutely above toolbar when open */}\n {isSearchPopoverOpen && (\n <SearchPopover\n value={searchQuery}\n onChange={setSearchQuery}\n onClear={() => setSearchQuery(\"\")}\n onClose={() => setSearchPopoverOpen(false)}\n searchTotal={searchTotal}\n searchStatus={searchStatus}\n searchError={searchError}\n searchTruncated={searchTruncated}\n searchMatchCount={searchMatchCount}\n focusedSearchIndex={focusedSearchIndex}\n onNavigate={navigateSearch}\n inputRef={searchPopoverInputRef}\n />\n )}\n </div>\n );\n}\n","import { apiUrl } from \"./api-base.js\";\n\nexport interface SearchResult {\n matches: number[];\n total: number;\n truncated: boolean;\n}\n\n/**\n * Fetch search results from the server.\n * Respects AbortSignal; throws DOMException AbortError on cancel (caller handles).\n * No Node.js imports — browser-only fetch API only.\n */\nexport async function searchEvents(q: string, signal?: AbortSignal): Promise<SearchResult> {\n const params = new URLSearchParams({ q, limit: \"5000\" });\n // exactOptionalPropertyTypes: only include signal property when it's defined,\n // because RequestInit.signal is AbortSignal | null (not | undefined).\n const init: RequestInit = {\n ...(signal !== undefined ? { signal } : {}),\n };\n const resp = await fetch(apiUrl(`/api/log/search?${params.toString()}`), init);\n if (!resp.ok) throw new Error(`Search failed: ${resp.status}`);\n return resp.json() as Promise<SearchResult>;\n}\n","import { useEffect, useRef } from \"react\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { searchEvents } from \"../../transport/search-client.js\";\n\nconst DEBOUNCE_MS = 150;\n\n/**\n * Call inside FilterBar or a top-level component.\n * Watches searchQuery from store; debounces 150ms;\n * on each new query, aborts the previous request and fetches new results.\n * On empty query, clears volatile search results (match-all = no server call).\n *\n * T-03-05-01: Each query change creates a new AbortController; previous one is\n * aborted; useEffect cleanup also aborts on unmount (listener-leak mitigation).\n */\nexport function useSearch(): void {\n const query = useAppStore((s) => s.searchQuery);\n const clearSearchResults = useAppStore((s) => s.clearSearchResults);\n const setSearchPending = useAppStore((s) => s.setSearchPending);\n const setSearchResult = useAppStore((s) => s.setSearchResult);\n const setSearchError = useAppStore((s) => s.setSearchError);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n useEffect(() => {\n if (timerRef.current) clearTimeout(timerRef.current);\n if (!query) {\n // Empty query — clear matches immediately; cancel any in-flight request.\n abortRef.current?.abort();\n abortRef.current = null;\n clearSearchResults();\n return;\n }\n timerRef.current = setTimeout(() => {\n abortRef.current?.abort();\n const ctrl = new AbortController();\n abortRef.current = ctrl;\n setSearchPending();\n searchEvents(query, ctrl.signal)\n .then((r) => setSearchResult(r.matches, r.total, r.truncated))\n .catch((err: unknown) => {\n if ((err as { name?: string })?.name === \"AbortError\") return;\n console.error(\"[useSearch]\", err);\n setSearchError(err instanceof Error ? err.message : String(err));\n });\n }, DEBOUNCE_MS);\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n abortRef.current?.abort(); // cancel any in-flight request immediately\n abortRef.current = null;\n };\n }, [query, clearSearchResults, setSearchError, setSearchPending, setSearchResult]);\n}\n","import type { JSX } from \"react\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\n\nconst ORIGIN_LABEL: Record<SafeCandidate[\"origin\"], string> = {\n vscode: \"VS Code\",\n \"vscode-insiders\": \"VS Code Insiders\",\n \"vscode-oss-dev\": \"VS Code OSS (dev)\",\n manual: \"Manual\",\n};\n\nfunction relTime(ms: number): string {\n const diff = Date.now() - ms;\n const min = Math.floor(diff / 60_000);\n if (min < 1) return \"just now\";\n if (min < 60) return `${min}m ago`;\n const hr = Math.floor(min / 60);\n if (hr < 24) return `${hr}h ago`;\n return `${Math.floor(hr / 24)}d ago`;\n}\nfunction formatBytes(n: number): string {\n if (n < 1024) return `${n} B`;\n if (n < 1024 * 1024) return `${(n / 1024).toFixed(1)} KB`;\n if (n < 1024 * 1024 * 1024) return `${(n / 1024 / 1024).toFixed(1)} MB`;\n return `${(n / 1024 / 1024 / 1024).toFixed(1)} GB`;\n}\n\nfunction stripJsonlExt(label: string): string {\n return label.endsWith(\".jsonl\") ? label.slice(0, -\".jsonl\".length) : label;\n}\n\nexport function CandidateRow({\n candidate,\n onSelect,\n}: {\n candidate: SafeCandidate;\n onSelect(): void;\n}): JSX.Element {\n const dotColor =\n candidate.confidence === \"high\"\n ? \"var(--color-confidence-high)\"\n : candidate.confidence === \"medium\"\n ? \"var(--color-confidence-medium)\"\n : \"var(--color-confidence-low)\";\n return (\n <li style={{ listStyle: \"none\" }}>\n <button\n type=\"button\"\n onClick={onSelect}\n title={candidate.contextLabel ?? \"\"}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-3)\",\n width: \"100%\",\n height: \"var(--candidate-row-height)\",\n padding: \"0 var(--space-4)\",\n background: \"transparent\",\n border: \"none\",\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-row-size)\",\n textAlign: \"left\",\n cursor: \"pointer\",\n }}\n >\n <span\n aria-hidden=\"true\"\n style={{\n width: 8,\n height: 8,\n borderRadius: \"50%\",\n background: dotColor,\n flex: \"0 0 8px\",\n }}\n />\n <span\n style={{\n width: 80,\n flex: \"0 0 80px\",\n textAlign: \"left\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text-muted)\",\n }}\n >\n {relTime(candidate.mtimeMs)}\n </span>\n <span\n style={{\n flex: 1,\n minWidth: 0,\n fontFamily: \"var(--font-mono)\",\n fontWeight: 600,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {stripJsonlExt(candidate.label)}\n </span>\n <span\n style={{\n minWidth: 80,\n textAlign: \"right\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text-muted)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n {ORIGIN_LABEL[candidate.origin]}\n </span>\n <span\n style={{\n width: 56,\n textAlign: \"right\",\n fontSize: \"var(--text-ui-muted-size)\",\n color: \"var(--color-text-muted)\",\n }}\n >\n {formatBytes(candidate.sizeBytes)}\n </span>\n <span aria-hidden=\"true\" style={{ color: \"var(--color-text-muted)\", fontSize: 16 }}>\n ›\n </span>\n </button>\n </li>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function NoCandidatesHint(): JSX.Element {\n return (\n <div\n role=\"status\"\n style={{\n padding: \"var(--space-5)\",\n background: \"var(--color-surface)\",\n border: \"1px dashed var(--color-border)\",\n borderRadius: 6,\n color: \"var(--color-text-muted)\",\n fontSize: \"var(--text-body-size)\",\n }}\n >\n <div\n style={{\n fontWeight: 600,\n color: \"var(--color-text)\",\n marginBottom: \"var(--space-2)\",\n }}\n >\n No logs discovered\n </div>\n <p style={{ margin: 0 }}>\n AHP logs are created when VS Code and the Copilot extension generate protocol traffic. Check\n that VS Code is installed and has been used recently.\n </p>\n </div>\n );\n}\n","import type { JSX } from \"react\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\nimport { CandidateRow } from \"./CandidateRow.js\";\nimport { NoCandidatesHint } from \"./NoCandidatesHint.js\";\n\nexport function CandidateList({\n candidates,\n onSelect,\n}: {\n candidates: readonly SafeCandidate[];\n onSelect(id: string): void;\n}): JSX.Element {\n if (candidates.length === 0) return <NoCandidatesHint />;\n return (\n <ul aria-label=\"Discovered logs\" style={{ margin: 0, padding: 0 }}>\n {candidates.map((c) => (\n <CandidateRow key={c.id} candidate={c} onSelect={() => onSelect(c.id)} />\n ))}\n </ul>\n );\n}\n","import { type FormEvent, type JSX, useId, useState } from \"react\";\nimport { ERROR_COPY, FALLBACK_ERROR } from \"./error-copy.js\";\n\nconst MAX_PATH_LEN = 4096;\n\nexport function ManualOpenInput({\n onOpen,\n disabled,\n}: {\n onOpen(path: string): Promise<void>;\n disabled?: boolean;\n}): JSX.Element {\n const [path, setPath] = useState(\"\");\n const [error, setError] = useState<string | null>(null);\n const [busy, setBusy] = useState(false);\n const errorId = useId();\n\n async function submit(e: FormEvent): Promise<void> {\n e.preventDefault();\n if (busy || disabled) return;\n setError(null);\n if (path.length === 0) return;\n if (path.length > MAX_PATH_LEN) {\n setError(ERROR_COPY[\"path-too-long\"] ?? FALLBACK_ERROR);\n return;\n }\n setBusy(true);\n try {\n await onOpen(path);\n } catch (err) {\n const code = (err as { code?: string }).code;\n const copy = (code && ERROR_COPY[code]) || FALLBACK_ERROR;\n setError(copy);\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <form\n onSubmit={submit}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--space-2)\" }}\n aria-label=\"Open log by path\"\n >\n <div style={{ display: \"flex\", gap: \"var(--space-3)\" }}>\n <input\n type=\"text\"\n value={path}\n onChange={(e) => setPath(e.target.value)}\n maxLength={MAX_PATH_LEN}\n placeholder=\"Paste a log file path\"\n disabled={disabled || busy}\n aria-invalid={error !== null}\n aria-describedby={error ? errorId : undefined}\n style={{\n flex: 1,\n height: 32,\n padding: \"0 var(--space-3)\",\n background: \"var(--color-surface)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n fontFamily: \"var(--font-mono)\",\n fontSize: \"var(--text-row-size)\",\n }}\n />\n <button\n type=\"submit\"\n disabled={disabled || busy || path.length === 0}\n style={{\n height: 32,\n padding: \"0 var(--space-4)\",\n background: \"var(--color-accent)\",\n border: \"none\",\n borderRadius: 4,\n color: \"var(--color-bg)\",\n fontWeight: 600,\n cursor: \"pointer\",\n }}\n >\n {busy ? \"Opening…\" : \"Open Log\"}\n </button>\n </div>\n {error !== null && (\n <div\n id={errorId}\n role=\"alert\"\n style={{\n color: \"var(--color-destructive)\",\n fontSize: \"var(--text-body-size)\",\n }}\n >\n {error}\n </div>\n )}\n </form>\n );\n}\n","import { type JSX, useEffect, useRef } from \"react\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\nimport { CandidateList } from \"./CandidateList.js\";\nimport { ManualOpenInput } from \"./ManualOpenInput.js\";\n\nexport function LogPickerPanel({\n open,\n candidates,\n isLoading,\n onSelect,\n onOpenPath,\n onRefresh,\n onClose,\n}: {\n open: boolean;\n candidates: readonly SafeCandidate[];\n isLoading: boolean;\n onSelect(id: string): void;\n onOpenPath(path: string): Promise<void>;\n onRefresh(): void;\n onClose(): void;\n}): JSX.Element | null {\n const panelRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!open) return;\n function onKey(e: KeyboardEvent): void {\n if (e.key === \"Escape\") onClose();\n }\n document.addEventListener(\"keydown\", onKey);\n // Move focus into the panel.\n const first = panelRef.current?.querySelector<HTMLElement>(\n 'ul[aria-label=\"Discovered logs\"] button',\n );\n if (first) first.focus();\n else panelRef.current?.querySelector<HTMLInputElement>(\"input\")?.focus();\n return () => document.removeEventListener(\"keydown\", onKey);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return (\n <div\n ref={panelRef}\n role=\"dialog\"\n aria-modal=\"false\"\n aria-label=\"Switch log\"\n style={{\n position: \"fixed\",\n // Drop below the 40px HeaderBar; FilterBar (z-index 1000) sits below it\n // in the document, so the picker must use a higher z-index than the\n // FilterBar to fully cover the search row underneath. Otherwise the\n // FilterBar's search input paints on top of this header.\n top: 40,\n left: 0,\n right: 0,\n maxHeight: \"calc(100vh - 40px)\",\n overflowY: \"auto\",\n zIndex: 1200,\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border-strong)\",\n boxShadow: \"var(--shadow-menu)\",\n padding: \"var(--space-4)\",\n }}\n >\n <header\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"var(--space-4)\",\n paddingBottom: \"var(--space-3)\",\n borderBottom: \"1px solid var(--color-border)\",\n }}\n >\n <h2\n style={{\n margin: 0,\n fontSize: \"var(--text-heading-size)\",\n fontWeight: 600,\n color: \"var(--color-text)\",\n }}\n >\n Switch log\n </h2>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"var(--space-2)\" }}>\n <button\n type=\"button\"\n onClick={onRefresh}\n disabled={isLoading}\n style={{\n height: 28,\n padding: \"0 var(--space-3)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n {isLoading ? \"Refreshing…\" : \"Refresh\"}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close\"\n style={{\n height: 28,\n padding: \"0 var(--space-3)\",\n background: \"transparent\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n }}\n >\n ✕\n </button>\n </div>\n </header>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"var(--space-4)\" }}>\n <CandidateList candidates={candidates} onSelect={onSelect} />\n <div\n style={{\n borderTop: \"1px solid var(--color-border)\",\n paddingTop: \"var(--space-3)\",\n }}\n >\n <ManualOpenInput onOpen={onOpenPath} />\n </div>\n </div>\n </div>\n );\n}\n","import type { CSSProperties, JSX } from \"react\";\n\nexport interface StickyGroupBarProps {\n topGroup: { level: \"session\" | \"turn\"; label: string } | null;\n}\n\n/**\n * Renders a 24px bar above the timeline showing the current topmost visible\n * group label. Hidden (returns null) when topGroup is null (no grouping or\n * no visible headers).\n */\nexport function StickyGroupBar({ topGroup }: StickyGroupBarProps): JSX.Element | null {\n if (topGroup === null) return null;\n\n return (\n <div\n data-testid=\"sticky-group-bar\"\n style={{\n height: \"var(--row-group-header-height)\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: topGroup.level === \"turn\" ? \"var(--space-5)\" : \"var(--space-3)\",\n paddingRight: \"var(--space-3)\",\n background: \"var(--color-group-header-bg)\",\n color: \"var(--color-group-header-fg)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n fontWeight: \"var(--weight-semibold)\" as CSSProperties[\"fontWeight\"],\n borderBottom: \"1px solid var(--color-border)\",\n flexShrink: 0,\n zIndex: 1,\n }}\n >\n {topGroup.label}\n </div>\n );\n}\n","// RotationBanner (Plan 04-05 Task 2 / UI-SPEC §6).\n// Auto-dismissing alert shown when SSE `rotation` event fires.\n// Mounted by TimelineRegion (04-06 Task 2) above the virtual list — NOT by AppShell.\n\nimport { type JSX, useEffect } from \"react\";\n\nexport function RotationBanner({ onAutoDismiss }: { onAutoDismiss(): void }): JSX.Element {\n useEffect(() => {\n const t = setTimeout(onAutoDismiss, 5000);\n return () => clearTimeout(t);\n }, [onAutoDismiss]);\n return (\n <div\n role=\"alert\"\n data-testid=\"rotation-banner\"\n style={{\n height: 32,\n background: \"var(--color-banner-rotation-bg)\",\n color: \"var(--color-banner-rotation-fg)\",\n borderLeft: \"3px solid var(--color-banner-rotation-fg)\",\n padding: \"0 var(--space-4)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n }}\n >\n <span aria-hidden=\"true\">⚠</span>\n <span>Log rotated — reloading from new file.</span>\n </div>\n );\n}\n","// NewEventsPill — Phase 4 Plan 06 Task 1 / UI-SPEC §5.\n// Floating pill rendered by TimelineRegion (absolute, bottom-center) when\n// livePaused === true && pendingNewCount > 0. Click flushes the buffered rows\n// and resumes live-follow.\n\nimport type { JSX } from \"react\";\n\nexport function NewEventsPill({ count, onClick }: { count: number; onClick(): void }): JSX.Element {\n const display = count >= 100 ? \"99+\" : count.toLocaleString();\n const noun = count === 1 ? \"new event\" : \"new events\";\n return (\n <button\n type=\"button\"\n onClick={onClick}\n aria-live=\"polite\"\n data-testid=\"new-events-pill\"\n style={{\n position: \"absolute\",\n bottom: 16,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n height: 28,\n padding: \"0 var(--space-4)\",\n background: \"var(--color-surface-raised)\",\n color: \"var(--color-text)\",\n border: \"1px solid var(--color-pill-border)\",\n borderRadius: 14,\n boxShadow: \"var(--shadow-menu)\",\n cursor: \"pointer\",\n fontWeight: 600,\n fontSize: \"var(--text-row-size)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n }}\n >\n <span>\n {display} {noun}\n </span>\n <span aria-hidden=\"true\">·</span>\n <span style={{ color: \"var(--color-accent)\" }}>Resume Following</span>\n </button>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function StreamBacklogPill({ count }: { count: number }): JSX.Element {\n const display = count >= 100 ? \"99+\" : count.toLocaleString();\n const noun = count === 1 ? \"event\" : \"events\";\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n data-testid=\"stream-backlog-pill\"\n style={{\n position: \"absolute\",\n bottom: 52,\n left: \"50%\",\n transform: \"translateX(-50%)\",\n height: 28,\n padding: \"0 var(--space-4)\",\n background: \"var(--color-surface-raised)\",\n color: \"var(--color-text)\",\n border: \"1px solid var(--color-pill-border)\",\n borderRadius: 14,\n boxShadow: \"var(--shadow-menu)\",\n fontWeight: 600,\n fontSize: \"var(--text-row-size)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n }}\n >\n {display} stream {noun} queued\n </div>\n );\n}\n","import { WifiOff } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\nexport function DisconnectedBanner({ onReconnect }: { onReconnect: () => void }): JSX.Element {\n return (\n <div\n data-testid=\"banner-disconnected\"\n style={{\n height: 40,\n padding: \"0 var(--space-3)\",\n background: \"var(--color-surface)\",\n borderLeft: \"2px solid var(--color-destructive)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n }}\n >\n <WifiOff size={16} color=\"var(--color-destructive)\" />\n <span style={{ flex: 1 }}>Disconnected from log stream. Showing last received events.</span>\n <button\n type=\"button\"\n onClick={onReconnect}\n style={{\n background: \"transparent\",\n border: \"none\",\n color: \"var(--color-accent)\",\n cursor: \"pointer\",\n padding: 0,\n }}\n >\n Retry connection\n </button>\n </div>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function EmptyState(): JSX.Element {\n return (\n <div\n data-testid=\"state-empty\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n gap: \"var(--space-2)\",\n color: \"var(--color-text-muted)\",\n }}\n >\n <div style={{ fontWeight: 600, color: \"var(--color-text)\" }}>No events yet</div>\n <div>This log file is empty. Events will appear as they are written.</div>\n </div>\n );\n}\n","import { Loader2 } from \"lucide-react\";\nimport type { JSX } from \"react\";\nimport type { LoadProgress } from \"../../state/store.js\";\n\nexport function LoadingState({\n filename,\n progress,\n}: {\n filename: string;\n progress?: LoadProgress;\n}): JSX.Element {\n return (\n <div\n data-testid=\"state-loading\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1,\n gap: \"var(--space-2)\",\n }}\n >\n <Loader2 className=\"spin\" color=\"var(--color-text-muted)\" size={24} />\n <div style={{ fontWeight: 600 }}>Loading log…</div>\n <div>\n Reading <span className=\"mono\">{filename}</span>\n </div>\n {progress?.percent !== undefined ? (\n <div>{progress.percent}% loaded</div>\n ) : progress && (progress.loadedRows > 0 || progress.loadedBytes > 0) ? (\n <div>{progress.loadedRows.toLocaleString()} rows loaded</div>\n ) : null}\n </div>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function NoResultsBanner({ heading, body }: { heading: string; body: string }): JSX.Element {\n return (\n <div\n data-testid=\"banner-no-results\"\n style={{\n minHeight: 64,\n padding: \"var(--space-3)\",\n background: \"var(--color-surface)\",\n borderLeft: \"4px solid var(--color-warning)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-1)\",\n }}\n >\n <div style={{ fontWeight: 600 }}>{heading}</div>\n <div>{body}</div>\n </div>\n );\n}\n","function memo(getDeps, fn, opts) {\n let deps = opts.initialDeps ?? [];\n let result;\n let isInitial = true;\n function memoizedFunction() {\n var _a, _b, _c;\n let depTime;\n if (opts.key && ((_a = opts.debug) == null ? void 0 : _a.call(opts))) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && ((_b = opts.debug) == null ? void 0 : _b.call(opts))) resultTime = Date.now();\n result = fn(...newDeps);\n if (opts.key && ((_c = opts.debug) == null ? void 0 : _c.call(opts))) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = \" \" + str;\n }\n return str;\n };\n console.info(\n `%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`,\n `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(\n 0,\n Math.min(120 - 120 * resultFpsPercentage, 120)\n )}deg 100% 31%);`,\n opts == null ? void 0 : opts.key\n );\n }\n if ((opts == null ? void 0 : opts.onChange) && !(isInitial && opts.skipInitialOnChange)) {\n opts.onChange(result);\n }\n isInitial = false;\n return result;\n }\n memoizedFunction.updateDeps = (newDeps) => {\n deps = newDeps;\n };\n return memoizedFunction;\n}\nfunction notUndefined(value, msg) {\n if (value === void 0) {\n throw new Error(`Unexpected undefined${msg ? `: ${msg}` : \"\"}`);\n } else {\n return value;\n }\n}\nconst approxEqual = (a, b) => Math.abs(a - b) < 1.01;\nconst debounce = (targetWindow, fn, ms) => {\n let timeoutId;\n return function(...args) {\n targetWindow.clearTimeout(timeoutId);\n timeoutId = targetWindow.setTimeout(() => fn.apply(this, args), ms);\n };\n};\nexport {\n approxEqual,\n debounce,\n memo,\n notUndefined\n};\n//# sourceMappingURL=utils.js.map\n","import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.scrollState = null;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.now = () => {\n var _a, _b, _c;\n return ((_c = (_b = (_a = this.targetWindow) == null ? void 0 : _a.performance) == null ? void 0 : _b.now) == null ? void 0 : _c.call(_b)) ?? Date.now();\n };\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n const node = entry.target;\n const index = this.indexFromElement(node);\n if (!node.isConnected) {\n this.observer.unobserve(node);\n return;\n }\n if (this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(\n index,\n this.options.measureElement(node, entry, this)\n );\n }\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n laneAssignmentMode: \"estimate\",\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n if (this.rafId != null && this.targetWindow) {\n this.targetWindow.cancelAnimationFrame(this.rafId);\n this.rafId = null;\n }\n this.scrollState = null;\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n if (this.scrollState) {\n this.scheduleScrollReconcile();\n }\n this.maybeNotify();\n })\n );\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n }\n };\n this.rafId = null;\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes,\n this.options.laneAssignmentMode\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes, laneAssignmentMode) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n };\n },\n {\n key: false\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes,\n laneAssignmentMode\n }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMeasuredCacheIndexes = [];\n }\n if (this.measurementsCache.length === 0 && !this.lanesSettling) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n laneLastIndex[item.lane] = m;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n const shouldCacheLane = laneAssignmentMode === \"estimate\" || itemSizeCache.has(key);\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin;\n } else {\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n if (this.options.lanes > 1 && shouldCacheLane) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n laneLastIndex[lane] = i;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this.shouldMeasureDuringScroll = (index) => {\n var _a;\n if (!this.scrollState || this.scrollState.behavior !== \"smooth\") {\n return true;\n }\n const scrollIndex = this.scrollState.index ?? ((_a = this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)) == null ? void 0 : _a.index);\n if (scrollIndex !== void 0 && this.range) {\n const bufferSize = Math.max(\n this.options.overscan,\n Math.ceil((this.range.endIndex - this.range.startIndex) / 2)\n );\n const minIndex = Math.max(0, scrollIndex - bufferSize);\n const maxIndex = Math.min(\n this.options.count - 1,\n scrollIndex + bufferSize\n );\n return index >= minIndex && index <= maxIndex;\n }\n return true;\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key2) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key2);\n }\n });\n return;\n }\n const index = this.indexFromElement(node);\n const key = this.options.getItemKey(index);\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if ((!this.isScrolling || this.scrollState) && this.shouldMeasureDuringScroll(index)) {\n this.resizeItem(index, this.options.measureElement(node, void 0, this));\n }\n };\n this.resizeItem = (index, size) => {\n var _a;\n const item = this.measurementsCache[index];\n if (!item) return;\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (((_a = this.scrollState) == null ? void 0 : _a.behavior) !== \"smooth\" && (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments)) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getMaxScrollOffset = () => {\n if (!this.scrollElement) return 0;\n if (\"scrollHeight\" in this.scrollElement) {\n return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;\n } else {\n const doc = this.scrollElement.document.documentElement;\n return this.options.horizontal ? doc.scrollWidth - this.scrollElement.innerWidth : doc.scrollHeight - this.scrollElement.innerHeight;\n }\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n if (!this.scrollElement) return 0;\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getMaxScrollOffset();\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n const item = this.measurementsCache[index];\n if (!item) return;\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n if (align === \"end\" && index === this.options.count - 1) {\n return [this.getMaxScrollOffset(), align];\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.scrollToOffset = (toOffset, { align = \"start\", behavior = \"auto\" } = {}) => {\n const offset = this.getOffsetForAlignment(toOffset, align);\n const now = this.now();\n this.scrollState = {\n index: null,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollToIndex = (index, {\n align: initialAlign = \"auto\",\n behavior = \"auto\"\n } = {}) => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const offsetInfo = this.getOffsetForIndex(index, initialAlign);\n if (!offsetInfo) {\n return;\n }\n const [offset, align] = offsetInfo;\n const now = this.now();\n this.scrollState = {\n index,\n align,\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.scrollBy = (delta, { behavior = \"auto\" } = {}) => {\n const offset = this.getScrollOffset() + delta;\n const now = this.now();\n this.scrollState = {\n index: null,\n align: \"start\",\n behavior,\n startedAt: now,\n lastTargetOffset: offset,\n stableFrames: 0\n };\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.scheduleScrollReconcile();\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n scheduleScrollReconcile() {\n if (!this.targetWindow) {\n this.scrollState = null;\n return;\n }\n if (this.rafId != null) return;\n this.rafId = this.targetWindow.requestAnimationFrame(() => {\n this.rafId = null;\n this.reconcileScroll();\n });\n }\n reconcileScroll() {\n if (!this.scrollState) return;\n const el = this.scrollElement;\n if (!el) return;\n const MAX_RECONCILE_MS = 5e3;\n if (this.now() - this.scrollState.startedAt > MAX_RECONCILE_MS) {\n this.scrollState = null;\n return;\n }\n const offsetInfo = this.scrollState.index != null ? this.getOffsetForIndex(this.scrollState.index, this.scrollState.align) : void 0;\n const targetOffset = offsetInfo ? offsetInfo[0] : this.scrollState.lastTargetOffset;\n const STABLE_FRAMES = 1;\n const targetChanged = targetOffset !== this.scrollState.lastTargetOffset;\n if (!targetChanged && approxEqual(targetOffset, this.getScrollOffset())) {\n this.scrollState.stableFrames++;\n if (this.scrollState.stableFrames >= STABLE_FRAMES) {\n this.scrollState = null;\n return;\n }\n } else {\n this.scrollState.stableFrames = 0;\n if (targetChanged) {\n this.scrollState.lastTargetOffset = targetOffset;\n this.scrollState.behavior = \"auto\";\n this._scrollToOffset(targetOffset, {\n adjustments: void 0,\n behavior: \"auto\"\n });\n }\n }\n this.scheduleScrollReconcile();\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n","import * as React from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { Virtualizer, elementScroll, observeElementOffset, observeElementRect, windowScroll, observeWindowOffset, observeWindowRect } from \"@tanstack/virtual-core\";\nexport * from \"@tanstack/virtual-core\";\nconst useIsomorphicLayoutEffect = typeof document !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\nfunction useVirtualizerBase({\n useFlushSync = true,\n ...options\n}) {\n const rerender = React.useReducer(() => ({}), {})[1];\n const resolvedOptions = {\n ...options,\n onChange: (instance2, sync) => {\n var _a;\n if (useFlushSync && sync) {\n flushSync(rerender);\n } else {\n rerender();\n }\n (_a = options.onChange) == null ? void 0 : _a.call(options, instance2, sync);\n }\n };\n const [instance] = React.useState(\n () => new Virtualizer(resolvedOptions)\n );\n instance.setOptions(resolvedOptions);\n useIsomorphicLayoutEffect(() => {\n return instance._didMount();\n }, []);\n useIsomorphicLayoutEffect(() => {\n return instance._willUpdate();\n });\n return instance;\n}\nfunction useVirtualizer(options) {\n return useVirtualizerBase({\n observeElementRect,\n observeElementOffset,\n scrollToFn: elementScroll,\n ...options\n });\n}\nfunction useWindowVirtualizer(options) {\n return useVirtualizerBase({\n getScrollElement: () => typeof document !== \"undefined\" ? window : null,\n observeElementRect: observeWindowRect,\n observeElementOffset: observeWindowOffset,\n scrollToFn: windowScroll,\n initialOffset: () => typeof document !== \"undefined\" ? window.scrollY : 0,\n ...options\n });\n}\nexport {\n useVirtualizer,\n useWindowVirtualizer\n};\n//# sourceMappingURL=index.js.map\n","import type { Direction } from \"@ahp-inspector/shared\";\nimport type { JSX } from \"react\";\n\n// Plan 02-03 deviation (Rule 3): the canonical `Direction` from\n// @ahp-inspector/shared is \"c2s\" | \"s2c\". The plan called for an \"unknown\"\n// fallback glyph (UI-SPEC §5.1). We widen the cell prop locally to keep\n// the renderer total without changing the shared type.\nexport type DirectionInput = Direction | \"unknown\";\n\nconst GLYPH: Record<DirectionInput, string> = {\n c2s: \"→\",\n s2c: \"←\",\n unknown: \"·\",\n};\nconst COLOR: Record<DirectionInput, string> = {\n c2s: \"var(--dir-c2s)\",\n s2c: \"var(--dir-s2c)\",\n unknown: \"var(--color-text-muted)\",\n};\n\nexport function DirectionGlyph({ direction }: { direction: DirectionInput }): JSX.Element {\n return (\n <span\n data-testid=\"dir-glyph\"\n data-direction={direction}\n style={{\n display: \"inline-block\",\n width: 16,\n textAlign: \"center\",\n color: COLOR[direction],\n }}\n >\n {GLYPH[direction]}\n </span>\n );\n}\n","import type { KindTag as KindTagValue } from \"@ahp-inspector/core\";\nimport type { JSX } from \"react\";\n\nconst VAR: Record<KindTagValue, string> = {\n REQ: \"--kind-request\",\n RES: \"--kind-response\",\n NTF: \"--kind-notification\",\n ACT: \"--kind-action\",\n BAD: \"--kind-parse-error\",\n LOG: \"--kind-action\",\n};\n\nconst TITLE: Record<KindTagValue, string> = {\n REQ: \"Request\",\n RES: \"Response\",\n NTF: \"Notification\",\n ACT: \"Action\",\n BAD: \"Parse error\",\n LOG: \"Log\",\n};\n\nexport function KindTag({ kind }: { kind: KindTagValue }): JSX.Element {\n const v = VAR[kind];\n return (\n <span\n data-testid=\"kind-tag\"\n data-kind={kind}\n title={TITLE[kind]}\n style={{\n display: \"inline-block\",\n width: 44,\n textAlign: \"center\",\n padding: \"0 4px\",\n fontSize: \"var(--text-ui-muted-size)\",\n textTransform: \"uppercase\",\n background: `color-mix(in srgb, var(${v}) 20%, transparent)`,\n color: `var(${v})`,\n borderRadius: 2,\n }}\n >\n {kind}\n </span>\n );\n}\n","import type { LatencyBand } from \"@ahp-inspector/core\";\nimport type { JSX } from \"react\";\n\nfunction fmt(ms: number | null): string {\n if (ms == null) return \"—\";\n if (ms < 1000) return `${ms}ms`;\n return `${(ms / 1000).toFixed(1)}s`;\n}\n\nexport function LatencyCell({\n ms,\n band,\n}: {\n ms: number | null;\n band: LatencyBand | null;\n}): JSX.Element {\n return (\n <div\n data-testid=\"latency-cell\"\n data-band={band ?? \"\"}\n className=\"latency\"\n style={{\n position: \"relative\",\n width: 72,\n height: \"var(--row-height)\",\n display: \"flex\",\n alignItems: \"center\",\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n <span>{fmt(ms)}</span>\n {band && (\n <span\n data-testid=\"latency-bar\"\n style={{\n position: \"absolute\",\n left: 0,\n right: 0,\n bottom: 0,\n height: 4,\n background: `var(--latency-${band})`,\n }}\n />\n )}\n </div>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function SummaryCell({ text }: { text: string }): JSX.Element {\n return (\n <span\n data-testid=\"row-summary\"\n className=\"summary\"\n style={{\n color: \"var(--color-text-muted)\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n display: \"inline-block\",\n maxWidth: \"100%\",\n }}\n >\n {text}\n </span>\n );\n}\n","// biome-ignore-all lint/a11y/useSemanticElements: virtualized grid rows/cells use divs per ARIA grid pattern and absolute positioning.\n// biome-ignore-all lint/a11y/useFocusableInteractive: grid keyboard focus is managed at the row level; individual cells are not tab stops.\n\nimport type { EventRow as EventRowData } from \"@ahp-inspector/core\";\nimport { ShieldAlert } from \"lucide-react\";\nimport type { CSSProperties, JSX } from \"react\";\nimport { memo } from \"react\";\nimport { DirectionGlyph } from \"./cells/DirectionGlyph.js\";\nimport { KindTag } from \"./cells/KindTag.js\";\nimport { LatencyCell } from \"./cells/LatencyCell.js\";\nimport { SummaryCell } from \"./cells/SummaryCell.js\";\n\nexport interface EventRowProps {\n row: EventRowData;\n isSelected: boolean;\n onClick: () => void;\n style?: CSSProperties;\n searchQuery?: string;\n isSearchMatch?: boolean;\n pairHighlight?: \"request\" | \"response\" | null;\n pairHidden?: \"request\" | \"response\" | null;\n /** Grid template for this row; must match the header and all sibling rows. */\n gridColumns?: string;\n}\n\n/** Default ID column width (px) used before any data-driven sizing applies. */\nexport const ID_COLUMN_DEFAULT_WIDTH = 96;\n\n/**\n * Builds the timeline grid template. The ID column is sized to fit the widest\n * ID present in the data (computed by the caller) so short or absent IDs don't\n * leave a large gap before the Time column.\n */\nexport function buildTimelineGridColumns(idColumnWidth: number = ID_COLUMN_DEFAULT_WIDTH): string {\n return `4px ${idColumnWidth}px 96px 16px 44px 220px 132px 72px 72px minmax(240px, 1fr)`;\n}\n\nexport const TIMELINE_GRID_COLUMNS = buildTimelineGridColumns();\n\nconst cellStyle: CSSProperties = {\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n};\n\nfunction railColor(row: EventRowData, isSelected: boolean): string {\n if (isSelected) return \"var(--color-accent)\";\n if (row.status === \"error\" || row.isAuthFailure) return \"var(--color-destructive)\";\n if (row.status === \"orphan\" || row.status === \"unmatched\") return \"var(--color-warning)\";\n return \"transparent\";\n}\n\nfunction primaryLabel(row: EventRowData): string | null {\n if (row.kind === \"action\" || row.kind === \"protocol-notification\") {\n return row.actionType ?? row.method;\n }\n return row.method ?? row.actionType;\n}\n\nfunction primaryLabelTitle(row: EventRowData): string {\n const label = primaryLabel(row);\n if (\n (row.kind === \"action\" || row.kind === \"protocol-notification\") &&\n row.method &&\n row.actionType\n ) {\n return `${row.actionType} (${row.method})`;\n }\n return label ?? \"\";\n}\n\nfunction statusBadge(\n row: EventRowData,\n): { text: string; title: string; tone: \"error\" | \"warning\" } | null {\n if (row.isAuthFailure) {\n return { text: \"AUTH\", title: \"Authentication failure\", tone: \"error\" };\n }\n if (row.status === \"error\") {\n return { text: \"ERR\", title: \"Error response\", tone: \"error\" };\n }\n if (row.status === \"unmatched\") {\n return {\n text: \"TIMEOUT\",\n title: \"Request timed out before a response was observed\",\n tone: \"warning\",\n };\n }\n if (row.status === \"orphan\") {\n return {\n text: \"ORPHAN\",\n title: \"Response could not be paired with a visible request\",\n tone: \"warning\",\n };\n }\n return null;\n}\n\n/**\n * Highlight occurrences of `query` (case-insensitive) within `text`.\n * Returns a JSX element with <mark> wrapping each match.\n * Only applies when query is ≥ 2 characters (T-03-05-03: uses React elements — auto-escaped, no XSS).\n */\nfunction highlightMatches(text: string, query: string): JSX.Element {\n if (query.length < 2) return <>{text}</>;\n const lower = text.toLowerCase();\n const lowerQ = query.toLowerCase();\n const parts: JSX.Element[] = [];\n let last = 0;\n let idx = lower.indexOf(lowerQ, last);\n while (idx !== -1) {\n if (idx > last) {\n parts.push(<span key={`t-${last}`}>{text.slice(last, idx)}</span>);\n }\n parts.push(\n <mark\n key={`m-${idx}`}\n style={{\n background: \"var(--color-search-match-bg)\",\n color: \"var(--color-search-match-fg)\",\n }}\n >\n {text.slice(idx, idx + query.length)}\n </mark>,\n );\n last = idx + query.length;\n idx = lower.indexOf(lowerQ, last);\n }\n if (last < text.length) {\n parts.push(<span key={`t-${last}`}>{text.slice(last)}</span>);\n }\n return <>{parts}</>;\n}\n\nexport const EventRow = memo(function EventRow({\n row,\n isSelected,\n onClick,\n style,\n searchQuery = \"\",\n isSearchMatch = false,\n pairHighlight = null,\n pairHidden = null,\n gridColumns = TIMELINE_GRID_COLUMNS,\n}: EventRowProps): JSX.Element {\n const label = primaryLabel(row);\n const labelTitle = primaryLabelTitle(row);\n const badge = statusBadge(row);\n const hiddenPairCopy =\n pairHidden === \"response\"\n ? \"Correlated response is hidden by current filters\"\n : pairHidden === \"request\"\n ? \"Correlated request is hidden by current filters\"\n : null;\n\n return (\n <div\n role=\"row\"\n aria-rowindex={row.idx + 1}\n aria-selected={isSelected}\n aria-label={`${row.keyId ?? \"no id\"} ${row.tsFmt} ${row.dir} ${row.kindTag} ${label ?? \"no event\"}${\n badge ? ` ${badge.text}` : \"\"\n }${hiddenPairCopy ? ` ${hiddenPairCopy}` : \"\"}`}\n title={hiddenPairCopy ?? undefined}\n onClick={onClick}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onClick();\n }\n }}\n tabIndex={isSelected ? 0 : -1}\n data-testid={`row-${row.idx}`}\n data-selected={isSelected ? \"true\" : undefined}\n data-search-match={isSearchMatch ? \"true\" : undefined}\n data-pair-highlight={pairHighlight ?? undefined}\n data-pair-hidden={pairHidden ?? undefined}\n style={{\n display: \"grid\",\n gridTemplateColumns: gridColumns,\n alignItems: \"center\",\n height: \"var(--row-height)\",\n boxSizing: \"border-box\",\n padding: \"4px 8px\",\n cursor: \"pointer\",\n minWidth: \"max-content\",\n background: isSelected\n ? \"var(--row-selected-bg)\"\n : pairHighlight\n ? \"color-mix(in srgb, var(--color-info) 14%, transparent)\"\n : isSearchMatch\n ? \"color-mix(in srgb, var(--color-search-match-bg) 28%, transparent)\"\n : \"transparent\",\n ...style,\n }}\n >\n <div\n role=\"gridcell\"\n data-testid=\"row-rail\"\n style={{\n ...cellStyle,\n width: 4,\n height: \"100%\",\n background:\n isSearchMatch && !isSelected\n ? \"var(--color-search-match-bg)\"\n : railColor(row, isSelected),\n }}\n />\n <div role=\"gridcell\" className=\"id\" style={cellStyle}>\n {row.keyId ?? \"—\"}\n </div>\n <div role=\"gridcell\" className=\"ts\" style={cellStyle}>\n {row.tsFmt}\n </div>\n <div role=\"gridcell\" style={cellStyle}>\n {row.isAuthFailure ? (\n <ShieldAlert\n size={14}\n data-testid=\"auth-fail-glyph\"\n aria-label=\"Authentication failure\"\n style={{ color: \"var(--color-auth-fail-rail)\", display: \"block\" }}\n />\n ) : (\n <DirectionGlyph direction={row.dir} />\n )}\n </div>\n <div role=\"gridcell\" style={cellStyle}>\n <KindTag kind={row.kindTag} />\n </div>\n <div\n role=\"gridcell\"\n className=\"method\"\n title={labelTitle}\n style={{\n ...cellStyle,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n }}\n >\n {badge ? (\n <span\n data-testid=\"row-status-badge\"\n title={badge.title}\n style={{\n color: badge.tone === \"error\" ? \"var(--color-destructive)\" : \"var(--color-warning)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: 600,\n flexShrink: 0,\n }}\n >\n {badge.text}\n </span>\n ) : null}\n <span\n style={{\n fontWeight: label ? 600 : 400,\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n display: \"block\",\n }}\n >\n {label ? highlightMatches(label, searchQuery) : \"—\"}\n </span>\n </div>\n <div role=\"gridcell\" className=\"id\" title={row.sessionId ?? \"\"} style={cellStyle}>\n {row.sessionShort ?? \"—\"}\n </div>\n <div role=\"gridcell\" className=\"id\" title={row.turnId ?? \"\"} style={cellStyle}>\n {row.turnShort ?? \"—\"}\n </div>\n <div role=\"gridcell\" style={cellStyle}>\n <LatencyCell ms={row.latencyMs} band={row.latencyBand} />\n </div>\n <div role=\"gridcell\" style={cellStyle}>\n <SummaryCell text={row.summary ?? row.payloadPreview} />\n </div>\n </div>\n );\n});\n","// biome-ignore-all lint/a11y/useSemanticElements: virtualized grid uses divs for absolute positioning.\n\nimport { formatSessionShort } from \"@ahp-inspector/core\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\nimport type { CSSProperties, JSX } from \"react\";\n\nexport interface GroupHeaderRowProps {\n level: \"session\" | \"turn\";\n sessionId: string;\n turnId?: string;\n count: number;\n durationMs: number;\n isCollapsed: boolean;\n onToggle(): void;\n virtualStyle: CSSProperties;\n}\n\nfunction formatDuration(ms: number): string {\n if (ms < 50) return `${ms}ms`;\n if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`;\n const m = Math.floor(ms / 60_000);\n const s = Math.floor((ms % 60_000) / 1000);\n return `${m}m ${s}s`;\n}\n\nexport function GroupHeaderRow({\n level,\n sessionId,\n turnId,\n count,\n durationMs,\n isCollapsed,\n onToggle,\n virtualStyle,\n}: GroupHeaderRowProps): JSX.Element {\n const label =\n level === \"session\"\n ? `Session ${formatSessionShort(sessionId)}`\n : `↳ Turn ${(turnId ?? \"\").slice(-6)}`;\n\n const ariaLabel = isCollapsed ? `Expand ${label}` : `Collapse ${label}`;\n\n return (\n <div\n role=\"row\"\n data-testid={`group-header-${level}`}\n tabIndex={-1}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n height: \"var(--row-group-header-height)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n paddingLeft: level === \"turn\" ? \"var(--space-5)\" : \"var(--space-3)\",\n paddingRight: \"var(--space-3)\",\n background: \"var(--color-group-header-bg)\",\n color: \"var(--color-group-header-fg)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontFamily: \"var(--font-sans)\",\n userSelect: \"none\",\n ...virtualStyle,\n }}\n >\n <button\n type=\"button\"\n aria-label={ariaLabel}\n onClick={onToggle}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--color-group-header-fg)\",\n display: \"flex\",\n alignItems: \"center\",\n padding: 0,\n flexShrink: 0,\n }}\n >\n {isCollapsed ? <ChevronRight size={12} /> : <ChevronDown size={12} />}\n </button>\n <span\n style={{ flex: 1, fontWeight: \"var(--weight-semibold)\" as CSSProperties[\"fontWeight\"] }}\n >\n {label}\n </span>\n <span style={{ color: \"var(--color-group-header-meta)\", flexShrink: 0 }}>\n {count} {count === 1 ? \"event\" : \"events\"} · {formatDuration(durationMs)}\n </span>\n </div>\n );\n}\n","// biome-ignore-all lint/a11y/useSemanticElements: virtualized grid rows/cells use divs per ARIA grid pattern and absolute positioning.\n// biome-ignore-all lint/a11y/useFocusableInteractive: grid keyboard focus is managed at the row level; individual cells are not tab stops.\n\nimport type { EventRow as EventRowData } from \"@ahp-inspector/core\";\nimport type { CSSProperties, JSX } from \"react\";\n\nexport function ParseErrorRow({\n row,\n isSelected,\n onClick,\n style,\n}: {\n row: EventRowData;\n isSelected: boolean;\n onClick: () => void;\n style?: CSSProperties;\n}): JSX.Element {\n const cellStyle: CSSProperties = {\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n };\n\n return (\n <div\n role=\"row\"\n aria-rowindex={row.idx + 1}\n aria-selected={isSelected}\n onClick={onClick}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n onClick();\n }\n }}\n tabIndex={isSelected ? 0 : -1}\n data-testid={`parse-error-${row.idx}`}\n style={{\n display: \"grid\",\n gridTemplateColumns: \"2px 1fr\",\n alignItems: \"center\",\n height: \"var(--row-height)\",\n boxSizing: \"border-box\",\n padding: \"4px 8px\",\n cursor: \"pointer\",\n background: isSelected ? \"var(--color-surface-raised)\" : \"transparent\",\n ...style,\n }}\n >\n <div\n role=\"gridcell\"\n data-testid=\"parse-error-rail\"\n style={{\n width: 2,\n height: \"100%\",\n overflow: \"hidden\",\n background:\n \"repeating-linear-gradient(45deg, var(--color-destructive) 0 2px, transparent 2px 6px)\",\n }}\n />\n <div\n role=\"gridcell\"\n className=\"mono\"\n style={{ ...cellStyle, color: \"var(--color-destructive)\" }}\n >\n {`BAD · line ${row.lineIndex ?? \"?\"} · ${row.parseErrorReason ?? \"unknown\"}`}\n </div>\n </div>\n );\n}\n","// biome-ignore-all lint/a11y/useSemanticElements: virtualized grid uses divs so rows can be absolutely positioned.\n\nimport { type EventRow as EventRowData, formatSessionShort } from \"@ahp-inspector/core\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { ArrowDown } from \"lucide-react\";\nimport type { CSSProperties, JSX } from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type { VirtualItem } from \"../../state/selectors.js\";\nimport { buildTimelineGridColumns, EventRow, ID_COLUMN_DEFAULT_WIDTH } from \"./EventRow.js\";\nimport { GroupHeaderRow } from \"./GroupHeaderRow.js\";\nimport { ParseErrorRow } from \"./ParseErrorRow.js\";\n\nconst ITEM_HEIGHT = {\n row: 28,\n \"parse-error\": 28,\n header: 24,\n} as const;\n\n// ID cells render in the monospace font at the row text size (13px); JetBrains\n// Mono advances ~7.8px per glyph. Pad for the 8px cell gutters and clamp so the\n// column never collapses below the \"ID\" header or grows past the 12-char cap.\nconst ID_CHAR_WIDTH_PX = 7.8;\nconst ID_COLUMN_PADDING_PX = 14;\nconst ID_COLUMN_MIN_WIDTH = 36;\n\n/** Width (px) needed to fit the widest ID present in the rows, header included. */\nfunction measureIdColumnWidth(rows: readonly EventRowData[]): number {\n let maxChars = 2; // room for the \"ID\" header / \"\\u2014\" placeholder\n for (const row of rows) {\n const len = row.keyId?.length ?? 0;\n if (len > maxChars) maxChars = len;\n }\n const fitted = Math.ceil(maxChars * ID_CHAR_WIDTH_PX) + ID_COLUMN_PADDING_PX;\n return Math.min(ID_COLUMN_DEFAULT_WIDTH, Math.max(ID_COLUMN_MIN_WIDTH, fitted));\n}\n\nconst COLUMN_LABELS = [\n { key: \"rail\", label: \"\", ariaLabel: \"row state\" },\n { key: \"id\", label: \"ID\", ariaLabel: \"Request or event ID\" },\n { key: \"time\", label: \"Time\", ariaLabel: \"Time\" },\n { key: \"direction\", label: \"Dir\", ariaLabel: \"Direction\" },\n { key: \"kind\", label: \"Kind\", ariaLabel: \"Kind\" },\n { key: \"event\", label: \"Event\", ariaLabel: \"Event\" },\n { key: \"session\", label: \"Channel\", ariaLabel: \"Channel\" },\n { key: \"turn\", label: \"Turn\", ariaLabel: \"Turn\" },\n { key: \"latency\", label: \"Latency\", ariaLabel: \"Latency\" },\n { key: \"summary\", label: \"Summary\", ariaLabel: \"Parsed event summary\" },\n] as const;\n\nfunction getItemKindKey(item: VirtualItem): keyof typeof ITEM_HEIGHT {\n if (item.kind === \"header\") return \"header\";\n return \"row\";\n}\n\nexport interface TimelineListProps {\n items: VirtualItem[];\n rows: EventRowData[];\n selectedIdx: number | null;\n onSelect: (idx: number) => void;\n searchQuery?: string;\n searchMatches?: Set<number> | null;\n onTopGroupChange?: (group: { level: \"session\" | \"turn\"; label: string } | null) => void;\n groupCollapsed?: Set<string>;\n onToggleGroup?: (key: string) => void;\n}\n\nexport function TimelineList({\n items,\n rows,\n selectedIdx,\n onSelect,\n searchQuery = \"\",\n searchMatches = null,\n onTopGroupChange,\n groupCollapsed,\n onToggleGroup,\n}: TimelineListProps): JSX.Element {\n const parentRef = useRef<HTMLDivElement>(null);\n const [isAtBottom, setIsAtBottom] = useState(true);\n const gridColumns = useMemo(() => buildTimelineGridColumns(measureIdColumnWidth(rows)), [rows]);\n const visibleRowIdxs = useMemo(() => {\n const visible = new Set<number>();\n for (const item of items) {\n if (item.kind === \"row\") {\n const row = rows[item.rowIdx];\n if (row) visible.add(row.idx);\n }\n }\n return visible;\n }, [items, rows]);\n const selectedRow = selectedIdx !== null ? rows[selectedIdx] : undefined;\n const selectedPairIdx = selectedRow?.pairIdx ?? null;\n const selectedPairVisible = selectedPairIdx !== null && visibleRowIdxs.has(selectedPairIdx);\n const hiddenPairKind =\n selectedPairIdx !== null && !selectedPairVisible\n ? selectedRow?.kind === \"response\"\n ? \"request\"\n : \"response\"\n : null;\n const v = useVirtualizer({\n count: items.length,\n getScrollElement: () => parentRef.current,\n estimateSize: (i) => {\n const item = items[i];\n if (!item) return 28;\n return ITEM_HEIGHT[getItemKindKey(item)] ?? 28;\n },\n overscan: 12,\n });\n\n // Auto tail-follow: scroll to bottom on first load and on append while the\n // user is parked at the bottom. User scroll-up disables follow; scrolling\n // back to bottom re-enables it. Threshold is generous (4px) to absorb\n // virtualizer rounding.\n const followTailRef = useRef(true);\n const SCROLL_BOTTOM_THRESHOLD_PX = 4;\n\n const scrollToBottom = useCallback((): void => {\n const el = parentRef.current;\n if (!el) return;\n el.scrollTop = el.scrollHeight;\n followTailRef.current = true;\n setIsAtBottom(true);\n }, []);\n\n // Scroll to end whenever item count changes while following. Runs once on\n // initial non-empty mount (followTailRef defaults to true) and on every\n // append after that. Uses rAF so the virtualizer has measured the new total.\n useEffect(() => {\n if (!followTailRef.current) return;\n if (items.length === 0) return;\n const raf = requestAnimationFrame(scrollToBottom);\n return () => cancelAnimationFrame(raf);\n }, [items.length, scrollToBottom]);\n\n // Scroll the selected row into view only when it's currently off-screen\n // (e.g., keyboard navigation or search-match jump). Clicking a visible row\n // must not scroll the timeline.\n const lastSelectionScrollIdxRef = useRef<number | null>(null);\n useEffect(() => {\n if (selectedIdx === lastSelectionScrollIdxRef.current) return;\n lastSelectionScrollIdxRef.current = selectedIdx;\n if (selectedIdx === null) return;\n const targetVi = items.findIndex(\n (it) => it.kind === \"row\" && rows[it.rowIdx]?.idx === selectedIdx,\n );\n if (targetVi < 0) return;\n const visible = v.getVirtualItems();\n if (visible.length > 0) {\n const first = visible[0]?.index ?? 0;\n const last = visible[visible.length - 1]?.index ?? 0;\n // Treat overscan rows as off-screen too: only skip when comfortably\n // inside the visible window.\n const margin = 2;\n if (targetVi >= first + margin && targetVi <= last - margin) {\n return;\n }\n }\n followTailRef.current = false;\n v.scrollToIndex(targetVi, { align: \"center\" });\n }, [selectedIdx, items, rows, v]);\n\n const onScroll = useCallback((): void => {\n const el = parentRef.current;\n if (!el) return;\n const distanceFromBottom = el.scrollHeight - el.scrollTop - el.clientHeight;\n const atBottom = distanceFromBottom <= SCROLL_BOTTOM_THRESHOLD_PX;\n followTailRef.current = atBottom;\n setIsAtBottom(atBottom);\n }, []);\n\n // Compute topmost visible group for StickyGroupBar.\n const virtualItems = v.getVirtualItems();\n const topGroup = useMemo(() => {\n if (virtualItems.length === 0) return null;\n const firstVi = virtualItems[0];\n if (firstVi === undefined) return null;\n // Scan backward from firstVi.index to find the most recent header.\n for (let i = firstVi.index; i >= 0; i--) {\n const item = items[i];\n if (item === undefined) continue;\n if (item.kind === \"header\") {\n const label =\n item.level === \"session\"\n ? `Session ${formatSessionShort(item.sessionId)}`\n : `↳ Turn ${(item.turnId ?? \"\").slice(-6)}`;\n return { level: item.level, label };\n }\n }\n return null;\n }, [virtualItems, items]);\n\n // Notify parent of topmost group change (for StickyGroupBar).\n const prevTopGroupRef = useRef<typeof topGroup>(null);\n useEffect(() => {\n const prev = prevTopGroupRef.current;\n const changed = prev?.label !== topGroup?.label || prev?.level !== topGroup?.level;\n if (changed && onTopGroupChange) {\n onTopGroupChange(topGroup);\n }\n prevTopGroupRef.current = topGroup;\n }, [topGroup, onTopGroupChange]);\n\n const headerCellStyle: CSSProperties = {\n minWidth: 0,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n };\n\n return (\n <div\n data-testid=\"timeline-list-shell\"\n className=\"timeline-list-shell\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n minHeight: 0,\n minWidth: 0,\n }}\n >\n <div\n ref={parentRef}\n onScroll={onScroll}\n role=\"grid\"\n aria-label=\"AHP event timeline\"\n aria-rowcount={items.length}\n data-testid=\"timeline-list\"\n style={{\n position: \"relative\",\n flex: 1,\n minHeight: 0,\n overflow: \"auto\",\n background: \"var(--color-bg)\",\n minWidth: 0,\n }}\n >\n <div style={{ minWidth: \"max-content\" }}>\n <div\n role=\"row\"\n tabIndex={-1}\n data-testid=\"timeline-column-header\"\n style={{\n display: \"grid\",\n gridTemplateColumns: gridColumns,\n minWidth: \"max-content\",\n alignItems: \"center\",\n height: 24,\n boxSizing: \"border-box\",\n padding: \"3px 8px\",\n position: \"sticky\",\n top: 0,\n zIndex: 1,\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border)\",\n color: \"var(--color-text-muted)\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n fontWeight: \"var(--weight-semibold)\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.04em\",\n }}\n >\n {COLUMN_LABELS.map(({ key, label, ariaLabel }) => (\n <div\n key={key}\n role=\"columnheader\"\n aria-label={ariaLabel}\n tabIndex={-1}\n style={headerCellStyle}\n >\n {label}\n </div>\n ))}\n </div>\n <div style={{ height: v.getTotalSize(), position: \"relative\" }}>\n {v.getVirtualItems().map((vi) => {\n const item = items[vi.index];\n if (!item) return null;\n\n if (item.kind === \"header\") {\n const style: CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n height: 24,\n transform: `translateY(${vi.start}px)`,\n };\n return (\n <GroupHeaderRow\n key={`header-${item.groupKey}`}\n level={item.level}\n sessionId={item.sessionId}\n {...(item.turnId !== undefined ? { turnId: item.turnId } : {})}\n count={item.count}\n durationMs={item.durationMs}\n isCollapsed={groupCollapsed?.has(item.groupKey) ?? false}\n onToggle={() => onToggleGroup?.(item.groupKey)}\n virtualStyle={style}\n />\n );\n }\n\n // kind === \"row\"\n const row = rows[item.rowIdx];\n if (!row) return null;\n const isSelected = row.idx === selectedIdx;\n const pairHighlight =\n selectedPairIdx !== null && row.idx === selectedPairIdx && selectedPairVisible\n ? row.kind === \"response\"\n ? \"response\"\n : \"request\"\n : null;\n const pairHidden = isSelected ? hiddenPairKind : null;\n const style: CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n height: 28,\n transform: `translateY(${vi.start}px)`,\n };\n\n return row.kind === \"parse-error\" ? (\n <ParseErrorRow\n key={row.idx}\n row={row}\n isSelected={isSelected}\n onClick={() => onSelect(row.idx)}\n style={style}\n />\n ) : (\n <EventRow\n key={row.idx}\n row={row}\n isSelected={isSelected}\n onClick={() => onSelect(row.idx)}\n searchQuery={searchQuery}\n isSearchMatch={searchMatches?.has(row.idx) ?? false}\n pairHighlight={pairHighlight}\n pairHidden={pairHidden}\n gridColumns={gridColumns}\n style={style}\n />\n );\n })}\n </div>\n </div>\n </div>\n {items.length > 0 && !isAtBottom && (\n <button\n type=\"button\"\n aria-label=\"Scroll to bottom\"\n onClick={scrollToBottom}\n style={{\n position: \"absolute\",\n right: \"var(--space-3)\",\n bottom: \"var(--space-3)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 999,\n padding: \"var(--space-1) var(--space-2)\",\n background: \"var(--color-surface-raised)\",\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n boxShadow: \"0 6px 18px rgb(0 0 0 / 0.16)\",\n zIndex: 2,\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n <ArrowDown size={14} />\n <span>Bottom</span>\n </button>\n )}\n </div>\n );\n}\n","// biome-ignore-all lint/a11y/noStaticElementInteractions: TimelineRegion is a focusable scroll viewport — Space-key toggles live-pause (UI-SPEC §Keyboard) with editable-target guards inside.\n// biome-ignore-all lint/a11y/noNoninteractiveTabindex: region must be focusable to receive the Space-key shortcut without stealing focus from inputs inside it.\n\nimport type { JSX, KeyboardEvent as ReactKeyboardEvent, RefObject } from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport {\n useFilteredRows,\n useGroupedItems,\n useVisibleSearchMatches,\n} from \"../../state/selectors.js\";\nimport { useAppStore } from \"../../state/store.js\";\nimport { connectLogStream } from \"../../transport/sse-client.js\";\nimport { RotationBanner } from \"../banners/RotationBanner.js\";\nimport { NewEventsPill } from \"../shell/NewEventsPill.js\";\nimport { StreamBacklogPill } from \"../shell/StreamBacklogPill.js\";\nimport { DisconnectedBanner } from \"../states/DisconnectedBanner.js\";\nimport { EmptyState } from \"../states/EmptyState.js\";\nimport { LoadingState } from \"../states/LoadingState.js\";\nimport { NoResultsBanner } from \"../states/NoResultsBanner.js\";\nimport { TimelineList } from \"./TimelineList.js\";\n\nexport interface TimelineRegionProps {\n onReconnect?: () => void;\n searchInputRef?: RefObject<HTMLInputElement | null>;\n onTopGroupChange?: (group: { level: \"session\" | \"turn\"; label: string } | null) => void;\n}\n\nfunction defaultReconnect(): void {\n // Tear down any prior handle, then open a fresh one.\n if (typeof window !== \"undefined\" && window.__ahpStream) {\n try {\n window.__ahpStream.close();\n } catch {\n /* ignore */\n }\n }\n const handle = connectLogStream();\n if (typeof window !== \"undefined\") window.__ahpStream = handle;\n}\n\n// Chord state for \"g s\" grouping shortcut\ninterface ChordState {\n key: string;\n at: number;\n}\n\nexport function TimelineRegion({\n onReconnect,\n searchInputRef,\n onTopGroupChange,\n}: TimelineRegionProps = {}): JSX.Element {\n const rows = useAppStore((s) => s.rows);\n const connection = useAppStore((s) => s.connection);\n const meta = useAppStore((s) => s.meta);\n const loadProgress = useAppStore((s) => s.loadProgress);\n const streamBacklog = useAppStore((s) => s.streamBacklog);\n const selectedIdx = useAppStore((s) => s.selectedIdx);\n const select = useAppStore((s) => s.selectIdx);\n const clear = useAppStore((s) => s.clearSelection);\n const searchQuery = useAppStore((s) => s.searchQuery);\n const searchMatches = useAppStore((s) => s.searchMatches);\n const setSearchQuery = useAppStore((s) => s.setSearchQuery);\n const clearSearchResults = useAppStore((s) => s.clearSearchResults);\n const grouping = useAppStore((s) => s.grouping);\n const setGrouping = useAppStore((s) => s.setGrouping);\n const groupCollapsed = useAppStore((s) => s.groupCollapsed);\n const toggleGroupCollapsed = useAppStore((s) => s.toggleGroupCollapsed);\n\n // Phase 4 Plan 06: live-pause + pending pill + rotation banner.\n const livePaused = useAppStore((s) => s.livePaused);\n const pendingNewCount = useAppStore((s) => s.pendingNewCount);\n const rotationNotice = useAppStore((s) => s.rotationNotice);\n const setRotationNotice = useAppStore((s) => s.setRotationNotice);\n\n const onRotationDismiss = useCallback(() => {\n setRotationNotice(false);\n }, [setRotationNotice]);\n\n const onResumeFollowing = useCallback(() => {\n const s = useAppStore.getState();\n s.flushPendingBuffer();\n s.setLivePaused(false);\n }, []);\n\n // UI-SPEC §Keyboard: Space toggles pause/resume when focus is inside the\n // timeline region but NOT inside a form control / contenteditable.\n function isEditableTarget(el: EventTarget | null): boolean {\n if (!(el instanceof HTMLElement)) return false;\n const tag = el.tagName;\n if (tag === \"INPUT\" || tag === \"TEXTAREA\" || tag === \"SELECT\") return true;\n if (el.isContentEditable) return true;\n // jsdom doesn't always reflect isContentEditable from the attribute, so\n // also check the attribute directly.\n const ce = el.getAttribute(\"contenteditable\");\n if (ce !== null && ce !== \"false\") return true;\n return false;\n }\n\n function onRegionKeyDown(ev: ReactKeyboardEvent<HTMLElement>): void {\n if (ev.key !== \" \" && ev.code !== \"Space\") return;\n if (isEditableTarget(ev.target)) return;\n ev.preventDefault();\n const s = useAppStore.getState();\n s.setLivePaused(!s.livePaused);\n }\n\n // Selectors — compute filtered/grouped items.\n const filteredRowIdxs = useFilteredRows();\n const visibleSearchMatches = useVisibleSearchMatches();\n const groupedItems = useGroupedItems(filteredRowIdxs);\n\n const selectSearchMatch = useCallback(\n (direction: \"previous\" | \"next\") => {\n if (visibleSearchMatches.length === 0) return;\n const currentSelectedIdx = useAppStore.getState().selectedIdx;\n const current =\n currentSelectedIdx !== null ? visibleSearchMatches.indexOf(currentSelectedIdx) : -1;\n const nextPos =\n direction === \"next\"\n ? (current + 1) % visibleSearchMatches.length\n : current <= 0\n ? visibleSearchMatches.length - 1\n : current - 1;\n const next = visibleSearchMatches[nextPos];\n if (next !== undefined) select(next);\n },\n [select, visibleSearchMatches],\n );\n\n const chordRef = useRef<ChordState | null>(null);\n\n useEffect(() => {\n function onKey(e: KeyboardEvent): void {\n // \"/\" — focus search input\n if (e.key === \"/\" && !(e.target instanceof HTMLInputElement)) {\n e.preventDefault();\n searchInputRef?.current?.focus();\n return;\n }\n\n // \"g s\" chord — cycle grouping\n const now = Date.now();\n const prev = chordRef.current;\n if (e.key === \"g\") {\n chordRef.current = { key: \"g\", at: now };\n return;\n }\n if (e.key === \"s\" && prev?.key === \"g\" && now - prev.at < 500) {\n chordRef.current = null;\n const next =\n grouping === \"none\" ? \"session\" : grouping === \"session\" ? \"session+turn\" : \"none\";\n setGrouping(next);\n return;\n }\n chordRef.current = null;\n\n // Esc priority: find widget (handled in SearchPopover) → search → selection.\n // Escape never clears a filter — clearing a filter requires an explicit action.\n if (e.key === \"Escape\") {\n // Find widget open → SearchPopover.onClose dismisses it; do nothing else.\n if (useAppStore.getState().searchPopoverOpen) return;\n if (searchQuery) {\n setSearchQuery(\"\");\n clearSearchResults();\n } else {\n clear();\n }\n return;\n }\n\n if (e.key === \"F3\" && searchQuery && visibleSearchMatches.length > 0) {\n e.preventDefault();\n selectSearchMatch(e.shiftKey ? \"previous\" : \"next\");\n return;\n }\n\n // Navigation over filteredRowIdxs\n if (filteredRowIdxs.length === 0) return;\n const curPos = selectedIdx !== null ? filteredRowIdxs.indexOf(selectedIdx) : -1;\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const next = filteredRowIdxs[Math.min(filteredRowIdxs.length - 1, curPos + 1)];\n if (next !== undefined) select(next);\n } else if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const next = filteredRowIdxs[Math.max(0, curPos - 1)];\n if (next !== undefined) select(next);\n } else if (e.key === \"PageDown\") {\n e.preventDefault();\n const next = filteredRowIdxs[Math.min(filteredRowIdxs.length - 1, curPos + 20)];\n if (next !== undefined) select(next);\n } else if (e.key === \"PageUp\") {\n e.preventDefault();\n const next = filteredRowIdxs[Math.max(0, curPos - 20)];\n if (next !== undefined) select(next);\n } else if (e.key === \"Home\") {\n e.preventDefault();\n const next = filteredRowIdxs[0];\n if (next !== undefined) select(next);\n } else if (e.key === \"End\") {\n e.preventDefault();\n const next = filteredRowIdxs[filteredRowIdxs.length - 1];\n if (next !== undefined) select(next);\n }\n }\n window.addEventListener(\"keydown\", onKey);\n function onSearchNav(e: Event): void {\n const direction = (e as CustomEvent<\"previous\" | \"next\">).detail;\n if (direction === \"previous\" || direction === \"next\") selectSearchMatch(direction);\n }\n window.addEventListener(\"ahp-search-nav\", onSearchNav);\n return () => {\n window.removeEventListener(\"keydown\", onKey);\n window.removeEventListener(\"ahp-search-nav\", onSearchNav);\n };\n }, [\n filteredRowIdxs,\n visibleSearchMatches,\n selectedIdx,\n select,\n clear,\n searchQuery,\n setSearchQuery,\n clearSearchResults,\n grouping,\n setGrouping,\n searchInputRef,\n selectSearchMatch,\n ]);\n\n if (connection === \"connecting\" && rows.length === 0) {\n return <LoadingState filename={meta?.filename ?? \"\"} progress={loadProgress} />;\n }\n if (connection === \"connected\" && rows.length === 0) {\n return <EmptyState />;\n }\n\n const allParseErrors = rows.length > 0 && rows.every((r) => r.kind === \"parse-error\");\n return (\n <div\n data-testid=\"timeline-region\"\n tabIndex={0}\n onKeyDown={onRegionKeyDown}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n minHeight: 0,\n position: \"relative\",\n outline: \"none\",\n }}\n >\n {rotationNotice && <RotationBanner onAutoDismiss={onRotationDismiss} />}\n {allParseErrors && (\n <NoResultsBanner\n heading=\"No valid events\"\n body={`All ${rows.length} lines in this file failed to parse. Showing parse errors below.`}\n />\n )}\n {connection === \"disconnected\" && (\n <DisconnectedBanner onReconnect={onReconnect ?? defaultReconnect} />\n )}\n {loadProgress.phase === \"loading\" && (\n <div\n data-testid=\"timeline-load-progress\"\n style={{ padding: \"var(--space-2) var(--space-4)\", color: \"var(--color-text-muted)\" }}\n >\n {loadProgress.percent !== undefined\n ? `${loadProgress.percent}% loaded`\n : `${loadProgress.loadedRows.toLocaleString()} rows loaded`}\n </div>\n )}\n <TimelineList\n items={groupedItems}\n rows={rows}\n selectedIdx={selectedIdx}\n onSelect={(idx) => select(idx)}\n searchQuery={searchQuery}\n searchMatches={searchMatches}\n groupCollapsed={groupCollapsed}\n onToggleGroup={toggleGroupCollapsed}\n {...(onTopGroupChange !== undefined ? { onTopGroupChange } : {})}\n />\n {livePaused && pendingNewCount > 0 && (\n <NewEventsPill count={pendingNewCount} onClick={onResumeFollowing} />\n )}\n {(streamBacklog.queuedRows > 0 || streamBacklog.queuedFrames > 0) && (\n <StreamBacklogPill count={streamBacklog.queuedRows || streamBacklog.queuedFrames} />\n )}\n </div>\n );\n}\n","import { type JSX, useEffect, useRef } from \"react\";\n\nconst vertexShaderSource = `\nattribute vec2 a_position;\nvarying vec2 v_uv;\n\nvoid main() {\n v_uv = a_position * 0.5 + 0.5;\n gl_Position = vec4(a_position, 0.0, 1.0);\n}\n`;\n\nconst fragmentShaderSource = `\nprecision mediump float;\n\nuniform vec2 u_resolution;\nuniform float u_time;\nvarying vec2 v_uv;\n\nfloat hash(float value) {\n return fract(sin(value * 91.132) * 43758.5453123);\n}\n\nvoid main() {\n vec2 point = v_uv * 2.0 - 1.0;\n float radiusSquared = dot(point, point);\n float curvedY = point.y * (1.0 + 0.105 * point.x * point.x);\n float curvedX = point.x * (1.0 + 0.045 * point.y * point.y);\n\n float scanPosition = (curvedY * 0.5 + 0.5) * u_resolution.y;\n float scanBand = 0.5 + 0.5 * sin(scanPosition * 1.08 + u_time * 0.18);\n float scanRow = floor(scanPosition * 0.37);\n float scanVariance = mix(0.58, 1.18, hash(scanRow + floor(u_time * 1.6)));\n float scanGlow = pow(scanBand, 10.0) * 0.028 * scanVariance;\n\n float horizontalMask = 1.0 - smoothstep(0.72, 1.06, abs(curvedX));\n float verticalMask = 1.0 - smoothstep(0.74, 1.08, abs(curvedY));\n float screenMask = horizontalMask * verticalMask;\n\n float lensRim = smoothstep(0.48, 1.22, radiusSquared) * screenMask;\n float edgeBloom = pow(lensRim, 2.1) * 0.23;\n float coreGlow = (1.0 - smoothstep(0.0, 1.42, radiusSquared)) * 0.04;\n float highlight = pow(max(0.0, 1.0 - length(point - vec2(-0.18, -0.76)) * 1.54), 3.0) * 0.15;\n float colorSplit = pow(max(0.0, abs(curvedX) - 0.54), 1.7) * screenMask;\n\n vec3 scanColor = vec3(0.22, 1.0, 0.52) * scanGlow * screenMask;\n vec3 bloomColor = vec3(0.10, 0.86, 0.38) * (edgeBloom + coreGlow);\n vec3 fringeColor = vec3(0.04, 0.52, 0.72) * colorSplit * 0.28;\n vec3 glassColor = vec3(0.70, 1.0, 0.82) * highlight;\n vec3 color = scanColor + bloomColor + fringeColor + glassColor;\n float alpha = clamp(scanGlow * 0.36 + edgeBloom * 0.48 + coreGlow + highlight * 0.54 + colorSplit * 0.1, 0.0, 0.42);\n\n gl_FragColor = vec4(color, alpha);\n}\n`;\n\nfunction compileShader(\n context: WebGLRenderingContext,\n type: number,\n source: string,\n): WebGLShader | null {\n const shader = context.createShader(type);\n if (shader === null) return null;\n context.shaderSource(shader, source);\n context.compileShader(shader);\n if (context.getShaderParameter(shader, context.COMPILE_STATUS)) return shader;\n context.deleteShader(shader);\n return null;\n}\n\nfunction createProgram(context: WebGLRenderingContext): WebGLProgram | null {\n const vertexShader = compileShader(context, context.VERTEX_SHADER, vertexShaderSource);\n const fragmentShader = compileShader(context, context.FRAGMENT_SHADER, fragmentShaderSource);\n if (vertexShader === null || fragmentShader === null) {\n if (vertexShader !== null) context.deleteShader(vertexShader);\n if (fragmentShader !== null) context.deleteShader(fragmentShader);\n return null;\n }\n\n const program = context.createProgram();\n if (program === null) {\n context.deleteShader(vertexShader);\n context.deleteShader(fragmentShader);\n return null;\n }\n context.attachShader(program, vertexShader);\n context.attachShader(program, fragmentShader);\n context.linkProgram(program);\n context.deleteShader(vertexShader);\n context.deleteShader(fragmentShader);\n if (context.getProgramParameter(program, context.LINK_STATUS)) return program;\n context.deleteProgram(program);\n return null;\n}\n\nexport function CrtCurvatureCanvas(): JSX.Element {\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (canvas === null) return;\n const context = canvas.getContext(\"webgl\", {\n alpha: true,\n antialias: false,\n depth: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n stencil: false,\n });\n if (context === null) return;\n\n const program = createProgram(context);\n if (program === null) return;\n const vertexBuffer = context.createBuffer();\n if (vertexBuffer === null) {\n context.deleteProgram(program);\n return;\n }\n\n const positionLocation = context.getAttribLocation(program, \"a_position\");\n const resolutionLocation = context.getUniformLocation(program, \"u_resolution\");\n const timeLocation = context.getUniformLocation(program, \"u_time\");\n context.bindBuffer(context.ARRAY_BUFFER, vertexBuffer);\n context.bufferData(\n context.ARRAY_BUFFER,\n new Float32Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]),\n context.STATIC_DRAW,\n );\n context.useProgram(program);\n context.enableVertexAttribArray(positionLocation);\n context.vertexAttribPointer(positionLocation, 2, context.FLOAT, false, 0, 0);\n context.disable(context.DEPTH_TEST);\n context.enable(context.BLEND);\n context.blendFunc(context.ONE, context.ONE_MINUS_SRC_ALPHA);\n\n const reducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n let animationFrame = 0;\n let disposed = false;\n\n const isHackerThemeActive = (): boolean =>\n document.documentElement.dataset.theme === \"hacker\";\n\n const resizeCanvas = (): void => {\n const rect = canvas.getBoundingClientRect();\n const pixelRatio = Math.min(window.devicePixelRatio || 1, 2);\n const width = Math.max(1, Math.round(rect.width * pixelRatio));\n const height = Math.max(1, Math.round(rect.height * pixelRatio));\n if (canvas.width !== width || canvas.height !== height) {\n canvas.width = width;\n canvas.height = height;\n }\n context.viewport(0, 0, width, height);\n };\n\n const render = (timestamp: number): void => {\n if (disposed) return;\n if (!isHackerThemeActive()) {\n animationFrame = 0;\n return;\n }\n resizeCanvas();\n context.clearColor(0, 0, 0, 0);\n context.clear(context.COLOR_BUFFER_BIT);\n context.uniform2f(resolutionLocation, canvas.width, canvas.height);\n context.uniform1f(timeLocation, reducedMotion.matches ? 0 : timestamp / 1000);\n context.drawArrays(context.TRIANGLES, 0, 6);\n if (!reducedMotion.matches) animationFrame = window.requestAnimationFrame(render);\n };\n\n const rerender = (): void => {\n window.cancelAnimationFrame(animationFrame);\n animationFrame = 0;\n if (isHackerThemeActive()) animationFrame = window.requestAnimationFrame(render);\n };\n\n const resizeObserver = new ResizeObserver(rerender);\n const themeObserver = new MutationObserver(rerender);\n resizeObserver.observe(canvas);\n themeObserver.observe(document.documentElement, {\n attributeFilter: [\"data-theme\"],\n attributes: true,\n });\n reducedMotion.addEventListener(\"change\", rerender);\n rerender();\n\n return () => {\n disposed = true;\n window.cancelAnimationFrame(animationFrame);\n resizeObserver.disconnect();\n themeObserver.disconnect();\n reducedMotion.removeEventListener(\"change\", rerender);\n context.deleteBuffer(vertexBuffer);\n context.deleteProgram(program);\n };\n }, []);\n\n return <canvas ref={canvasRef} className=\"crt-curvature-canvas\" aria-hidden=\"true\" />;\n}\n","import { type JSX } from \"react\";\n\nconst displacementRowCount = 41;\nconst displacementColumnCount = 41;\nconst displacementStrength = 0;\nconst displacementEdgeFalloff = 6;\n\nfunction formatChannel(channel: number): string {\n const boundedChannel = Math.max(0, Math.min(1, channel));\n return Math.round(boundedChannel * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\nfunction formatCoordinate(index: number, count: number): string {\n return (index / (count - 1)).toFixed(4);\n}\n\nfunction renderDisplacementStop(rowIndex: number, columnIndex: number): string {\n const horizontal = (columnIndex / (displacementColumnCount - 1)) * 2 - 1;\n const vertical = (rowIndex / (displacementRowCount - 1)) * 2 - 1;\n const edgeDistance = Math.max(Math.abs(horizontal), Math.abs(vertical));\n const edgeWeight = edgeDistance ** displacementEdgeFalloff;\n const red = 0.5 - horizontal * edgeWeight * displacementStrength;\n const green = 0.5 - vertical * edgeWeight * displacementStrength;\n return `<stop offset=\"${formatCoordinate(columnIndex, displacementColumnCount)}\" stop-color=\"#${formatChannel(red)}${formatChannel(green)}80\" />`;\n}\n\nfunction renderDisplacementRow(rowIndex: number): string {\n const gradientStops = Array.from({ length: displacementColumnCount }, (_, columnIndex) =>\n renderDisplacementStop(rowIndex, columnIndex),\n ).join(\"\\n \");\n return `<linearGradient id=\"row-${rowIndex}\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n ${gradientStops}\n </linearGradient>`;\n}\n\nfunction renderDisplacementBand(rowIndex: number): string {\n const rowHeight = 100 / (displacementRowCount - 1);\n const rowCenter = (rowIndex / (displacementRowCount - 1)) * 100;\n const rowStart = rowCenter - rowHeight;\n const bandHeight = rowHeight * 2;\n return `<rect y=\"${rowStart.toFixed(4)}\" width=\"100\" height=\"${bandHeight.toFixed(4)}\" fill=\"url(#row-${rowIndex})\" />`;\n}\n\nconst crtCurveMap = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\">\n <defs>\n <filter id=\"soften-map\" x=\"-10%\" y=\"-10%\" width=\"120%\" height=\"120%\">\n <feGaussianBlur stdDeviation=\"2.2\" />\n </filter>\n ${Array.from({ length: displacementRowCount }, (_, rowIndex) => renderDisplacementRow(rowIndex)).join(\"\\n \")}\n </defs>\n <rect width=\"100\" height=\"100\" fill=\"#808080\" />\n <g filter=\"url(#soften-map)\">\n ${Array.from({ length: displacementRowCount }, (_, rowIndex) => renderDisplacementBand(rowIndex)).join(\"\\n \")}\n </g>\n</svg>`;\n\nconst crtCurveMapHref = `data:image/svg+xml,${encodeURIComponent(crtCurveMap)}`;\n\nexport function CrtFilterDefs(): JSX.Element {\n return (\n <svg className=\"crt-filter-defs\" aria-hidden=\"true\" focusable=\"false\">\n <defs>\n <filter id=\"ahp-crt-warp\" x=\"-16%\" y=\"-16%\" width=\"132%\" height=\"132%\">\n <feImage href={crtCurveMapHref} preserveAspectRatio=\"none\" result=\"crt-curve-map\" />\n <feComponentTransfer in=\"crt-curve-map\" result=\"crt-barrel-map\">\n <feFuncR type=\"table\" tableValues=\"1 0\" />\n <feFuncG type=\"table\" tableValues=\"1 0\" />\n </feComponentTransfer>\n <feDisplacementMap\n in=\"SourceGraphic\"\n in2=\"crt-barrel-map\"\n scale=\"0\"\n xChannelSelector=\"R\"\n yChannelSelector=\"G\"\n result=\"crt-warped\"\n />\n <feGaussianBlur in=\"crt-warped\" stdDeviation=\"0.7\" result=\"crt-bloom\" />\n <feComponentTransfer in=\"crt-bloom\" result=\"crt-soft-bloom\">\n <feFuncA type=\"linear\" slope=\"0.24\" />\n </feComponentTransfer>\n <feBlend in=\"crt-warped\" in2=\"crt-soft-bloom\" mode=\"screen\" />\n </filter>\n </defs>\n </svg>\n );\n}\n","export const THEMES = [\n { id: \"dark\", label: \"Dark\" },\n { id: \"light\", label: \"Light\" },\n { id: \"hacker\", label: \"Hacker\" },\n] as const;\n\nexport type ThemeId = (typeof THEMES)[number][\"id\"];\n\nexport const THEME_STORAGE_KEY = \"ahp-theme\";\n\nexport function isThemeId(value: unknown): value is ThemeId {\n return value === \"dark\" || value === \"light\" || value === \"hacker\";\n}\n\nexport function readStoredTheme(storage: Pick<Storage, \"getItem\"> = localStorage): ThemeId {\n try {\n const stored = storage.getItem(THEME_STORAGE_KEY);\n return isThemeId(stored) ? stored : \"dark\";\n } catch {\n return \"dark\";\n }\n}\n\nexport function applyTheme(theme: ThemeId, root: Element = document.documentElement): void {\n root.setAttribute(\"data-theme\", theme);\n}\n\nexport function persistTheme(\n theme: ThemeId,\n storage: Pick<Storage, \"setItem\"> = localStorage,\n): void {\n try {\n storage.setItem(THEME_STORAGE_KEY, theme);\n } catch {\n // Storage may be unavailable; the in-page theme still applies.\n }\n}\n\nexport function labelForTheme(theme: ThemeId): string {\n return THEMES.find((option) => option.id === theme)?.label ?? \"Dark\";\n}\n","// LivePauseButton — Phase 4 Plan 06 Task 1 / UI-SPEC §3 / D-13.\n// Toggles `store.livePaused`. Pause is UI-only (D-15): SSE keeps streaming,\n// the server is unaware. While paused, scroll is anchored and incoming rows\n// accumulate in the store's pendingBuffer + pendingNewCount counter.\n\nimport { Pause, Play } from \"lucide-react\";\nimport type { JSX } from \"react\";\nimport { useAppStore } from \"../../state/store.js\";\n\nexport function LivePauseButton(): JSX.Element {\n const livePaused = useAppStore((s) => s.livePaused);\n const setLivePaused = useAppStore((s) => s.setLivePaused);\n const Icon = livePaused ? Play : Pause;\n return (\n <button\n type=\"button\"\n onClick={() => setLivePaused(!livePaused)}\n aria-pressed={livePaused}\n aria-label={livePaused ? \"Resume live follow\" : \"Pause live follow\"}\n data-testid=\"live-pause-button\"\n style={{\n height: 28,\n padding: \"0 var(--space-3)\",\n background: livePaused\n ? \"color-mix(in srgb, var(--color-accent) 15%, var(--color-surface))\"\n : \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: livePaused ? \"var(--color-accent)\" : \"var(--color-text)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-muted-size)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n }}\n >\n <Icon size={14} aria-hidden=\"true\" />\n {livePaused ? \"Resume\" : \"Pause\"}\n </button>\n );\n}\n","import { Check, ChevronDown, Palette } from \"lucide-react\";\nimport type { JSX, KeyboardEvent } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport {\n applyTheme,\n labelForTheme,\n persistTheme,\n THEMES,\n type ThemeId,\n} from \"../../theme/theme.js\";\nimport { __APP_VERSION__ } from \"../../version.js\";\nimport { LivePauseButton } from \"./LivePauseButton.js\";\n\ninterface HeaderBarProps {\n version: string;\n}\n\nfunction readTheme(): ThemeId {\n const attr = document.documentElement.getAttribute(\"data-theme\");\n return attr === \"light\" || attr === \"hacker\" ? attr : \"dark\";\n}\n\nexport function HeaderBar({ version }: HeaderBarProps): JSX.Element {\n const [theme, setThemeState] = useState<ThemeId>(readTheme);\n const [isThemeMenuOpen, setIsThemeMenuOpen] = useState(false);\n const themeMenuRef = useRef<HTMLDivElement>(null);\n const themeButtonRef = useRef<HTMLButtonElement>(null);\n const optionRefs = useRef<Array<HTMLButtonElement | null>>([]);\n\n useEffect(() => {\n function handleMouseDown(event: MouseEvent): void {\n if (themeMenuRef.current && !themeMenuRef.current.contains(event.target as Node)) {\n setIsThemeMenuOpen(false);\n }\n }\n\n document.addEventListener(\"mousedown\", handleMouseDown);\n return () => document.removeEventListener(\"mousedown\", handleMouseDown);\n }, []);\n\n function closeThemeMenu(): void {\n setIsThemeMenuOpen(false);\n themeButtonRef.current?.focus();\n }\n\n function setTheme(next: ThemeId): void {\n applyTheme(next);\n persistTheme(next);\n setThemeState(next);\n closeThemeMenu();\n }\n\n function focusOption(index: number): void {\n optionRefs.current[index]?.focus();\n }\n\n function handleOptionKeyDown(event: KeyboardEvent<HTMLButtonElement>, index: number): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n closeThemeMenu();\n } else if (event.key === \"ArrowDown\") {\n event.preventDefault();\n focusOption((index + 1) % THEMES.length);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n focusOption((index - 1 + THEMES.length) % THEMES.length);\n } else if (event.key === \"Home\") {\n event.preventDefault();\n focusOption(0);\n } else if (event.key === \"End\") {\n event.preventDefault();\n focusOption(THEMES.length - 1);\n }\n }\n\n return (\n <header\n style={{\n height: 40,\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border-strong)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"0 var(--space-3)\",\n flex: \"0 0 auto\",\n }}\n data-testid=\"header-bar\"\n >\n <span style={{ fontWeight: 600 }}>AHP Inspector</span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"var(--space-3)\" }}>\n <LivePauseButton />\n <div ref={themeMenuRef} style={{ position: \"relative\" }}>\n <button\n type=\"button\"\n aria-label={`Theme picker (${labelForTheme(theme)})`}\n aria-haspopup=\"menu\"\n aria-expanded={isThemeMenuOpen}\n title={`Theme: ${labelForTheme(theme)}`}\n ref={themeButtonRef}\n onClick={() => setIsThemeMenuOpen((open) => !open)}\n onMouseDown={(event) => event.stopPropagation()}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"var(--space-1)\",\n height: 28,\n padding: \"0 var(--space-2)\",\n background: isThemeMenuOpen ? \"var(--color-chip-bg-active)\" : \"var(--color-chip-bg)\",\n border: \"1px solid var(--color-chip-border)\",\n borderRadius: 6,\n color: \"var(--color-chip-fg)\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n outline: \"none\",\n }}\n >\n <Palette size={14} aria-hidden=\"true\" />\n <ChevronDown\n size={12}\n aria-hidden=\"true\"\n style={{ color: \"var(--color-chip-fg-muted)\" }}\n />\n </button>\n {isThemeMenuOpen && (\n <div\n role=\"menu\"\n aria-label=\"Theme\"\n style={{\n position: \"absolute\",\n top: \"calc(100% + 4px)\",\n right: 0,\n zIndex: 1200,\n minWidth: 148,\n padding: \"var(--space-1) 0\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border-strong)\",\n borderRadius: 6,\n boxShadow: \"var(--shadow-menu)\",\n }}\n >\n {THEMES.map((option, index) => {\n const active = theme === option.id;\n return (\n <button\n key={option.id}\n type=\"button\"\n role=\"menuitemradio\"\n aria-checked={active}\n ref={(node) => {\n optionRefs.current[index] = node;\n }}\n onClick={() => setTheme(option.id)}\n onKeyDown={(event) => handleOptionKeyDown(event, index)}\n style={{\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"var(--space-3)\",\n padding: \"var(--space-1) var(--space-3)\",\n background: active ? \"var(--color-chip-bg-active)\" : \"transparent\",\n border: \"none\",\n color: active ? \"var(--color-text)\" : \"var(--color-text-muted)\",\n boxShadow: active ? \"inset 3px 0 0 var(--color-accent)\" : \"none\",\n cursor: \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-ui-muted-size)\",\n textAlign: \"left\",\n }}\n >\n <span>{option.label}</span>\n {active && <Check size={12} aria-hidden=\"true\" />}\n </button>\n );\n })}\n </div>\n )}\n </div>\n <span className=\"mono\" style={{ color: \"var(--color-text-muted)\" }}>\n v{version}\n </span>\n </div>\n </header>\n );\n}\n\nHeaderBar.defaultVersion = __APP_VERSION__;\n","// NOTE: lucide-react@1.14.0 does not export `FileJson`; using `FileBraces`\n// (JSON-style braces icon) is the closest semantic match. Tracked in SUMMARY\n// as a Rule 3 deviation.\nimport { FileBraces } from \"lucide-react\";\nimport type { JSX } from \"react\";\n\ninterface SourceStripProps {\n filename: string | null;\n eventCount: number;\n sessionCount: number;\n onSwitchLog?: () => void;\n}\n\nexport function SourceStrip({\n filename,\n eventCount,\n sessionCount,\n onSwitchLog,\n}: SourceStripProps): JSX.Element {\n return (\n <div\n style={{\n height: 32,\n background: \"var(--color-surface)\",\n borderBottom: \"1px solid var(--color-border)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n padding: \"0 var(--space-3)\",\n fontSize: \"var(--text-ui-size)\",\n flex: \"0 0 auto\",\n }}\n data-testid=\"source-strip\"\n >\n {filename === null ? (\n <span style={{ color: \"var(--color-text-muted)\" }}>No file open</span>\n ) : (\n <>\n <FileBraces size={14} aria-hidden />\n {onSwitchLog ? (\n <button\n type=\"button\"\n onClick={onSwitchLog}\n aria-label=\"Switch log\"\n title=\"Switch log\"\n className=\"mono\"\n style={{\n background: \"transparent\",\n border: \"none\",\n padding: 0,\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n font: \"inherit\",\n textDecoration: \"underline\",\n textDecorationColor: \"var(--color-border)\",\n textUnderlineOffset: 3,\n }}\n >\n {filename}\n </button>\n ) : (\n <span className=\"mono\">{filename}</span>\n )}\n <span style={{ color: \"var(--color-text-muted)\" }}>\n {\" · \"}\n {eventCount} events\n {eventCount > 0 && sessionCount > 0 ? ` · ${sessionCount} sessions` : \"\"}\n </span>\n </>\n )}\n </div>\n );\n}\n","import type { JSX } from \"react\";\nimport type { Connection } from \"../../state/store.js\";\n\ninterface StatusBarProps {\n connection: Connection;\n eventCount: number;\n selectedRowIndex?: number | null;\n visibleCount?: number;\n totalCount?: number;\n groupCount?: number;\n}\n\ninterface StatusVisual {\n glyph: string;\n dotColor: string;\n label: string;\n}\n\nfunction visualFor(\n connection: Connection,\n eventCount: number,\n selectedRowIndex: number | null | undefined,\n visibleCount: number | undefined,\n totalCount: number | undefined,\n groupCount: number | undefined,\n): StatusVisual {\n switch (connection) {\n case \"connected\": {\n const base = `Connected · ${eventCount} events`;\n let label =\n selectedRowIndex != null && selectedRowIndex >= 0\n ? `${base} · selected #${selectedRowIndex}`\n : base;\n // Show visible/total when filtered\n if (visibleCount !== undefined && totalCount !== undefined && visibleCount !== totalCount) {\n label = `${label} · ${visibleCount}/${totalCount} visible`;\n }\n // Show group count when grouped\n if (groupCount !== undefined && groupCount > 0) {\n label = `${label} · ${groupCount} groups`;\n }\n return { glyph: \"●\", dotColor: \"var(--color-success)\", label };\n }\n case \"connecting\":\n return { glyph: \"◐\", dotColor: \"var(--color-warning)\", label: \"Connecting…\" };\n case \"disconnected\":\n return { glyph: \"●\", dotColor: \"var(--color-destructive)\", label: \"Disconnected\" };\n case \"no-server\":\n return { glyph: \"●\", dotColor: \"var(--color-destructive)\", label: \"No server\" };\n case \"no-log\":\n return { glyph: \"○\", dotColor: \"var(--color-text-subtle)\", label: \"No log selected\" };\n }\n}\n\nexport function StatusBar({\n connection,\n eventCount,\n selectedRowIndex = null,\n visibleCount,\n totalCount,\n groupCount,\n}: StatusBarProps): JSX.Element {\n const { glyph, dotColor, label } = visualFor(\n connection,\n eventCount,\n selectedRowIndex,\n visibleCount,\n totalCount,\n groupCount,\n );\n return (\n <div\n style={{\n height: 24,\n background: \"var(--color-surface)\",\n borderTop: \"1px solid var(--color-border)\",\n padding: \"0 var(--space-2)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"var(--space-2)\",\n fontSize: \"var(--text-ui-muted-size)\",\n flex: \"0 0 auto\",\n }}\n data-testid=\"status-bar\"\n >\n <span data-testid=\"status-dot\" style={{ color: dotColor, width: 8 }}>\n {glyph}\n </span>\n <span data-testid=\"status-label\">{label}</span>\n </div>\n );\n}\n","import { X } from \"lucide-react\";\nimport { type JSX, useCallback, useEffect, useRef, useState } from \"react\";\nimport { usePersistEffect } from \"../../persistence/persist-effect.js\";\nimport { isFiltersEmpty } from \"../../state/filters.js\";\nimport { useFilteredRows, useGroupedItems } from \"../../state/selectors.js\";\nimport { useAppStore } from \"../../state/store.js\";\nimport {\n fetchCandidates,\n openSessionByCandidate,\n openSessionByPath,\n uploadSessionFile,\n} from \"../../transport/sessions-client.js\";\nimport { type ConnectionHandle, connectLogStream } from \"../../transport/sse-client.js\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\nimport { __APP_VERSION__ } from \"../../version.js\";\nimport { WatchErrorBanner } from \"../banners/WatchErrorBanner.js\";\nimport { DETAIL_DESKTOP_BREAKPOINT } from \"../detail/detail-layout.js\";\nimport { DetailPanel } from \"../detail/index.js\";\nimport { DropOverlay } from \"../drop/DropOverlay.js\";\nimport { MultiFileToast } from \"../drop/MultiFileToast.js\";\nimport { useDropZone } from \"../drop/useDropZone.js\";\nimport { ActiveFilterChips, FilterBar } from \"../filters/index.js\";\nimport { useSearch } from \"../filters/useSearch.js\";\nimport { LogPickerPanel } from \"../picker/LogPickerPanel.js\";\nimport { StickyGroupBar } from \"../timeline/StickyGroupBar.js\";\nimport { TimelineRegion } from \"../timeline/TimelineRegion.js\";\nimport { CrtCurvatureCanvas } from \"./CrtCurvatureCanvas.js\";\nimport { CrtFilterDefs } from \"./CrtFilterDefs.js\";\nimport { HeaderBar } from \"./HeaderBar.js\";\nimport { SourceStrip } from \"./SourceStrip.js\";\nimport { StatusBar } from \"./StatusBar.js\";\n\nfunction getIsDetailDesktop(): boolean {\n if (typeof window === \"undefined\") return true;\n if (typeof window.matchMedia === \"function\") {\n return window.matchMedia(`(min-width: ${DETAIL_DESKTOP_BREAKPOINT}px)`).matches;\n }\n return window.innerWidth >= DETAIL_DESKTOP_BREAKPOINT;\n}\n\nfunction useIsDetailDesktop(): boolean {\n const [isDesktop, setIsDesktop] = useState(getIsDetailDesktop);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n const update = (): void => setIsDesktop(getIsDetailDesktop());\n const query =\n typeof window.matchMedia === \"function\"\n ? window.matchMedia(`(min-width: ${DETAIL_DESKTOP_BREAKPOINT}px)`)\n : null;\n query?.addEventListener?.(\"change\", update);\n window.addEventListener(\"resize\", update);\n update();\n return () => {\n query?.removeEventListener?.(\"change\", update);\n window.removeEventListener(\"resize\", update);\n };\n }, []);\n\n return isDesktop;\n}\n\nfunction replaceLogStream(): ConnectionHandle {\n const previous = typeof window !== \"undefined\" ? window.__ahpStream : undefined;\n previous?.close();\n const handle = connectLogStream();\n if (typeof window !== \"undefined\") window.__ahpStream = handle;\n return handle;\n}\n\nexport function AppShell(): JSX.Element {\n // Phase 4 Plan 06: per-log persistence (single mount).\n usePersistEffect();\n\n const meta = useAppStore((s) => s.meta);\n const connection = useAppStore((s) => s.connection);\n const rows = useAppStore((s) => s.rows);\n const filters = useAppStore((s) => s.filters);\n const grouping = useAppStore((s) => s.grouping);\n const detailWidth = useAppStore((s) => s.detailWidth);\n const selectedIdx = useAppStore((s) => s.selectedIdx);\n const clearSelection = useAppStore((s) => s.clearSelection);\n const lastWatchError = useAppStore((s) => s.lastWatchError);\n const lastOpenRef = useAppStore((s) => s.lastOpenRef);\n const isDetailDesktop = useIsDetailDesktop();\n const closeDetailDrawer = useCallback((): void => clearSelection(), [clearSelection]);\n\n // Register debounced search effect\n useSearch();\n\n // Compute filtered/grouped items for StatusBar and StickyGroupBar\n const filteredRowIdxs = useFilteredRows();\n const groupedItems = useGroupedItems(filteredRowIdxs);\n\n // Active filters check\n const hasActiveFilters = !isFiltersEmpty(filters);\n\n // StickyGroupBar state — updated via onTopGroupChange callback from TimelineList\n const [stickyGroup, setStickyGroup] = useState<{\n level: \"session\" | \"turn\";\n label: string;\n } | null>(null);\n\n // Switch-log picker state\n const [pickerOpen, setPickerOpen] = useState(false);\n const [pickerCandidates, setPickerCandidates] = useState<readonly SafeCandidate[]>([]);\n const [pickerLoading, setPickerLoading] = useState(false);\n\n const refreshPickerCandidates = useCallback(async (): Promise<void> => {\n setPickerLoading(true);\n try {\n const list = await fetchCandidates();\n setPickerCandidates(list);\n } catch {\n setPickerCandidates([]);\n } finally {\n setPickerLoading(false);\n }\n }, []);\n\n const onToggleSwitchLog = useCallback((): void => {\n setPickerOpen((open) => {\n const next = !open;\n if (next) void refreshPickerCandidates();\n return next;\n });\n }, [refreshPickerCandidates]);\n\n const onPickerSelect = useCallback((id: string): void => {\n void (async () => {\n try {\n const result = await openSessionByCandidate(id);\n useAppStore.getState().setLogKey(result.active.logKey);\n useAppStore.getState().setLastOpenRef({ kind: \"candidate\", id });\n replaceLogStream();\n } finally {\n setPickerOpen(false);\n }\n })();\n }, []);\n\n const onPickerOpenPath = useCallback(async (path: string): Promise<void> => {\n const result = await openSessionByPath(path);\n useAppStore.getState().setLogKey(result.active.logKey);\n useAppStore.getState().setLastOpenRef({ kind: \"path\", path });\n replaceLogStream();\n setPickerOpen(false);\n }, []);\n\n const onDropUploadFile = useCallback(async (file: File): Promise<void> => {\n const result = await uploadSessionFile(file);\n useAppStore.getState().setLogKey(result.active.logKey);\n // No lastOpenRef — uploaded sessions live in a temp file and can't be\n // re-opened by path/id after the server cleans them up.\n replaceLogStream();\n }, []);\n\n const { overlayState, toast, dismissError, dismissToast } = useDropZone({\n hasActiveLog: meta !== null,\n onOpenPath: onPickerOpenPath,\n onUploadFile: onDropUploadFile,\n });\n\n const onWatchErrorRetry = useCallback((): void => {\n replaceLogStream();\n useAppStore.getState().setLastWatchError(null);\n }, []);\n\n const onWatchErrorReopen = useCallback((): void => {\n void (async () => {\n try {\n if (lastOpenRef?.kind === \"candidate\") {\n const result = await openSessionByCandidate(lastOpenRef.id);\n useAppStore.getState().setLogKey(result.active.logKey);\n } else if (lastOpenRef?.kind === \"path\") {\n const result = await openSessionByPath(lastOpenRef.path);\n useAppStore.getState().setLogKey(result.active.logKey);\n }\n useAppStore.getState().setLastWatchError(null);\n replaceLogStream();\n } catch {\n /* swallow — banner stays visible until retry/reopen succeeds */\n }\n })();\n }, [lastOpenRef]);\n\n // Ref to SearchInput's <input> element for \"/\" keyboard shortcut\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const drawerCloseRef = useRef<HTMLButtonElement | null>(null);\n const drawerWasOpenRef = useRef(false);\n\n // Count group headers in groupedItems for StatusBar\n const groupCount = groupedItems.filter((i) => i.kind === \"header\").length;\n\n useEffect(() => {\n const drawerOpen = !isDetailDesktop && selectedIdx !== null;\n // Move focus to the close control only when the drawer first opens; the\n // drawer is non-modal, so selecting other rows while it stays open must\n // not keep stealing focus away from timeline navigation.\n if (drawerOpen && !drawerWasOpenRef.current) {\n drawerCloseRef.current?.focus();\n }\n drawerWasOpenRef.current = drawerOpen;\n }, [isDetailDesktop, selectedIdx]);\n\n useEffect(() => {\n if (isDetailDesktop || selectedIdx === null) return;\n function onKeyDown(event: KeyboardEvent): void {\n if (event.key === \"Escape\") closeDetailDrawer();\n }\n window.addEventListener(\"keydown\", onKeyDown);\n return () => window.removeEventListener(\"keydown\", onKeyDown);\n }, [closeDetailDrawer, isDetailDesktop, selectedIdx]);\n\n return (\n <>\n <CrtFilterDefs />\n <div data-testid=\"crt-display-surface\" className=\"crt-display-surface\">\n <div\n data-testid=\"app-shell\"\n className=\"app-shell\"\n style={{ display: \"flex\", flexDirection: \"column\", height: \"100%\" }}\n >\n <HeaderBar version={__APP_VERSION__} />\n {lastWatchError && (\n <WatchErrorBanner\n code={lastWatchError.code}\n message={lastWatchError.message}\n onRetry={onWatchErrorRetry}\n onReopen={onWatchErrorReopen}\n onDismiss={() => useAppStore.getState().setLastWatchError(null)}\n />\n )}\n <SourceStrip\n filename={meta?.filename ?? null}\n eventCount={meta?.eventCount ?? 0}\n sessionCount={meta?.sessionCount ?? 0}\n onSwitchLog={onToggleSwitchLog}\n />\n <FilterBar searchInputRef={searchInputRef} />\n {hasActiveFilters && <ActiveFilterChips />}\n <div className=\"app-main\" style={{ display: \"flex\", flex: 1, minHeight: 0 }}>\n <div\n className=\"timeline-pane\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n flex: 1,\n minHeight: 0,\n minWidth: 0,\n }}\n >\n {grouping !== \"none\" && stickyGroup && <StickyGroupBar topGroup={stickyGroup} />}\n <TimelineRegion searchInputRef={searchInputRef} onTopGroupChange={setStickyGroup} />\n </div>\n {isDetailDesktop && (\n <div\n data-testid=\"detail-panel-wrapper\"\n className=\"detail-rail\"\n style={{\n display: \"flex\",\n flex: `0 0 ${detailWidth}px`,\n minHeight: 0,\n minWidth: 0,\n overflow: \"hidden\",\n }}\n >\n <DetailPanel />\n </div>\n )}\n </div>\n {!isDetailDesktop && selectedIdx !== null && (\n <div className=\"detail-drawer-backdrop\" data-testid=\"detail-drawer-backdrop\">\n <div\n className=\"detail-drawer\"\n role=\"dialog\"\n aria-label=\"Event detail\"\n data-testid=\"detail-drawer\"\n style={{ width: `${detailWidth}px` }}\n >\n <button\n type=\"button\"\n className=\"detail-drawer-close\"\n ref={drawerCloseRef}\n onClick={closeDetailDrawer}\n aria-label=\"Close details\"\n title=\"Close details\"\n >\n <X size={18} aria-hidden=\"true\" />\n </button>\n <DetailPanel fill={true} />\n </div>\n </div>\n )}\n <StatusBar\n connection={connection}\n eventCount={meta?.eventCount ?? 0}\n selectedRowIndex={selectedIdx}\n visibleCount={filteredRowIdxs.length}\n totalCount={rows.length}\n groupCount={grouping !== \"none\" ? groupCount : 0}\n />\n <LogPickerPanel\n open={pickerOpen}\n candidates={pickerCandidates}\n isLoading={pickerLoading}\n onSelect={onPickerSelect}\n onOpenPath={onPickerOpenPath}\n onRefresh={() => void refreshPickerCandidates()}\n onClose={() => setPickerOpen(false)}\n />\n <DropOverlay state={overlayState} onDismiss={dismissError} />\n {toast !== null && (\n <MultiFileToast\n basename={toast.basename}\n ignoredCount={toast.ignoredCount}\n onDismiss={dismissToast}\n />\n )}\n </div>\n <CrtCurvatureCanvas />\n </div>\n </>\n );\n}\n","import { type JSX, useEffect, useRef } from \"react\";\nimport type { SafeCandidate } from \"../../types/safe-candidate.js\";\nimport { CandidateList } from \"../picker/CandidateList.js\";\nimport { ManualOpenInput } from \"../picker/ManualOpenInput.js\";\n\nexport function NoActiveLogState({\n candidates,\n isLoading,\n onSelect,\n onOpenPath,\n onRefresh,\n}: {\n candidates: readonly SafeCandidate[];\n isLoading: boolean;\n onSelect(id: string): void;\n onOpenPath(path: string): Promise<void>;\n onRefresh(): void;\n}): JSX.Element {\n const focusTargetRef = useRef<HTMLElement | null>(null);\n useEffect(() => {\n // On mount: focus first candidate row's button if any, else the manual-open input.\n const first = document.querySelector<HTMLElement>('ul[aria-label=\"Discovered logs\"] button');\n if (first) {\n first.focus();\n return;\n }\n const input = document.querySelector<HTMLInputElement>(\n 'form[aria-label=\"Open log by path\"] input',\n );\n input?.focus();\n }, []);\n\n const heading = \"No log open\";\n const body =\n candidates.length === 0 && !isLoading\n ? \"No VS Code logs found automatically. Enter a file path below to open a log.\"\n : \"Select a discovered log below or open a file by path.\";\n\n return (\n <main\n ref={(el) => {\n focusTargetRef.current = el;\n }}\n style={{\n minHeight: \"100vh\",\n background: \"var(--color-bg)\",\n display: \"flex\",\n justifyContent: \"center\",\n }}\n >\n <section\n style={{\n width: \"100%\",\n maxWidth: 640,\n padding: \"var(--space-6) var(--space-4)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"var(--space-6)\",\n }}\n >\n <header>\n <h1\n style={{\n fontSize: \"var(--text-heading-size)\",\n fontWeight: 600,\n color: \"var(--color-text)\",\n margin: 0,\n }}\n >\n {heading}\n </h1>\n <p\n style={{\n color: \"var(--color-text-muted)\",\n margin: \"var(--space-2) 0 0\",\n fontSize: \"var(--text-body-size)\",\n }}\n >\n {body}\n </p>\n </header>\n\n <section>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginBottom: \"var(--space-3)\",\n }}\n >\n <h2\n style={{\n fontSize: \"var(--text-heading-size)\",\n fontWeight: 600,\n color: \"var(--color-text)\",\n margin: 0,\n }}\n >\n Discovered logs\n </h2>\n <button\n type=\"button\"\n onClick={onRefresh}\n disabled={isLoading}\n aria-label=\"Refresh List\"\n style={{\n height: 28,\n padding: \"0 var(--space-3)\",\n background: \"var(--color-surface-raised)\",\n border: \"1px solid var(--color-border)\",\n borderRadius: 4,\n color: \"var(--color-text)\",\n cursor: \"pointer\",\n fontSize: \"var(--text-ui-muted-size)\",\n }}\n >\n {isLoading ? \"Refreshing…\" : \"Refresh List\"}\n </button>\n </div>\n <CandidateList candidates={candidates} onSelect={onSelect} />\n </section>\n\n <div\n aria-hidden=\"true\"\n style={{\n borderTop: \"1px solid var(--color-border)\",\n color: \"var(--color-text-muted)\",\n fontSize: \"var(--text-ui-muted-size)\",\n paddingTop: \"var(--space-3)\",\n textAlign: \"center\",\n }}\n >\n or open manually\n </div>\n\n <ManualOpenInput onOpen={onOpenPath} />\n </section>\n </main>\n );\n}\n","import type { JSX } from \"react\";\n\nexport function ServerNotRunningState(): JSX.Element {\n return (\n <div\n data-testid=\"state-server-not-running\"\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n gap: \"var(--space-2)\",\n padding: \"var(--space-4)\",\n textAlign: \"center\",\n }}\n >\n <div style={{ fontWeight: 600 }}>Start the viewer from the CLI</div>\n <div>\n Run <code className=\"mono\">ahp-inspector path/to/log.jsonl</code> from your terminal, then\n refresh this page.\n </div>\n </div>\n );\n}\n","import { createContext, type JSX, type ReactNode, useContext } from \"react\";\nimport type { AhpViewerClient } from \"./client.js\";\n\nconst Ctx = createContext<AhpViewerClient | null>(null);\n\nexport interface AhpViewerClientProviderProps {\n readonly client: AhpViewerClient;\n readonly children: ReactNode;\n}\n\nexport function AhpViewerClientProvider(props: AhpViewerClientProviderProps): JSX.Element {\n return <Ctx.Provider value={props.client}>{props.children}</Ctx.Provider>;\n}\n\nexport function useAhpViewerClient(): AhpViewerClient {\n const value = useContext(Ctx);\n if (value === null) {\n throw new Error(\n \"useAhpViewerClient must be used inside <AhpViewerClientProvider>; \" +\n \"wrap the app in main.tsx or pass a fake client in tests.\",\n );\n }\n return value;\n}\n","import { type JSX, useCallback, useEffect, useState } from \"react\";\nimport { AppShell } from \"./components/shell/AppShell.js\";\nimport { NoActiveLogState } from \"./components/states/NoActiveLogState.js\";\nimport { ServerNotRunningState } from \"./components/states/ServerNotRunningState.js\";\nimport { useAppStore } from \"./state/store.js\";\nimport type { LogStreamHandle } from \"./transport/client.js\";\nimport { useAhpViewerClient } from \"./transport/transport-context.js\";\nimport type { SafeCandidate } from \"./types/safe-candidate.js\";\n\ndeclare global {\n interface Window {\n __ahpStream?: LogStreamHandle;\n }\n}\n\nexport function App(): JSX.Element {\n const client = useAhpViewerClient();\n const connection = useAppStore((s) => s.connection);\n const [candidates, setCandidates] = useState<readonly SafeCandidate[]>([]);\n const [loadingCandidates, setLoadingCandidates] = useState(false);\n\n const refreshCandidates = useCallback(async (): Promise<void> => {\n setLoadingCandidates(true);\n try {\n const list = await client.fetchCandidates();\n setCandidates(list);\n } catch {\n setCandidates([]);\n } finally {\n setLoadingCandidates(false);\n }\n }, [client]);\n\n const replaceLogStream = useCallback((): LogStreamHandle => {\n const previous = typeof window !== \"undefined\" ? window.__ahpStream : undefined;\n previous?.close();\n const handle = client.connectLogStream();\n if (typeof window !== \"undefined\") window.__ahpStream = handle;\n return handle;\n }, [client]);\n\n // Probe transport first; map result to store connection state and (when\n // ready) open the live stream. Browser transport probes /api/log/meta;\n // Plan 11-03 webview transport probes via postMessage.\n useEffect(() => {\n let cancelled = false;\n let handle: LogStreamHandle | null = null;\n const run = async (): Promise<void> => {\n try {\n const result = await client.probeLogMeta();\n if (cancelled) return;\n if (result === \"no-log\") {\n useAppStore.getState().setConnection(\"no-log\");\n await refreshCandidates();\n return;\n }\n if (result === \"no-server\") {\n useAppStore.getState().setConnection(\"no-server\");\n return;\n }\n handle = client.connectLogStream();\n if (typeof window !== \"undefined\") window.__ahpStream = handle;\n } catch {\n if (!cancelled) useAppStore.getState().setConnection(\"no-server\");\n }\n };\n void run();\n return () => {\n cancelled = true;\n handle?.close();\n if (typeof window !== \"undefined\") delete window.__ahpStream;\n };\n }, [client, refreshCandidates]);\n\n const onSelect = useCallback(\n async (id: string): Promise<void> => {\n const result = await client.openSessionByCandidate(id);\n useAppStore.getState().setLogKey(result.active.logKey);\n useAppStore.getState().setLastOpenRef({ kind: \"candidate\", id });\n replaceLogStream();\n },\n [client, replaceLogStream],\n );\n\n const onOpenPath = useCallback(\n async (path: string): Promise<void> => {\n const result = await client.openSessionByPath(path);\n useAppStore.getState().setLogKey(result.active.logKey);\n useAppStore.getState().setLastOpenRef({ kind: \"path\", path });\n replaceLogStream();\n },\n [client, replaceLogStream],\n );\n\n if (connection === \"no-server\") return <ServerNotRunningState />;\n if (connection === \"no-log\") {\n return (\n <NoActiveLogState\n candidates={candidates}\n isLoading={loadingCandidates}\n onSelect={(id) => void onSelect(id)}\n onOpenPath={onOpenPath}\n onRefresh={() => void refreshCandidates()}\n />\n );\n }\n return <AppShell />;\n}\n","/**\n * Browser HTTP/SSE implementation of `AhpViewerClient` (Plan 11-02 Task 2).\n *\n * Composes the existing transport modules without changing their public\n * shapes. The only behavior moved up to this layer is `probeLogMeta`,\n * which used to live inline in `App.tsx`. Lifting it here means the Plan\n * 11-03 webview client can implement the same probe over postMessage\n * without duplicating App startup logic.\n */\n\nimport type { AhpViewerClient, LogMetaProbeResult, LogStreamHandle } from \"./client.js\";\nimport { apiUrl } from \"./api-base.js\";\nimport { fetchEvent } from \"./http-client.js\";\nimport { searchEvents } from \"./search-client.js\";\nimport { fetchCandidates, openSessionByCandidate, openSessionByPath } from \"./sessions-client.js\";\nimport { connectLogStream } from \"./sse-client.js\";\nimport { fetchStateAt } from \"./state-client.js\";\n\nasync function probeLogMeta(): Promise<LogMetaProbeResult> {\n let resp: Response;\n try {\n resp = await fetch(apiUrl(\"/api/log/meta\"));\n } catch {\n return \"no-server\";\n }\n if (resp.status === 204) return \"no-log\";\n const contentType = resp.headers.get(\"content-type\") ?? \"\";\n if (!resp.ok || !contentType.toLowerCase().includes(\"application/json\")) {\n return \"no-server\";\n }\n return \"ready\";\n}\n\nexport function createBrowserAhpViewerClient(): AhpViewerClient {\n return {\n probeLogMeta,\n fetchCandidates,\n openSessionByCandidate,\n openSessionByPath,\n connectLogStream(): LogStreamHandle {\n return connectLogStream();\n },\n fetchEvent,\n searchEvents,\n fetchStateAt,\n };\n}\n","import { StrictMode } from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { App } from \"./App.js\";\nimport \"./styles/global.css\";\nimport { applyTheme, readStoredTheme } from \"./theme/theme.js\";\nimport { createBrowserAhpViewerClient } from \"./transport/browser-client.js\";\nimport { AhpViewerClientProvider } from \"./transport/transport-context.js\";\n\napplyTheme(readStoredTheme());\n\nconst el = document.getElementById(\"root\");\nif (el) {\n const client = createBrowserAhpViewerClient();\n createRoot(el).render(\n <StrictMode>\n <AhpViewerClientProvider client={client}>\n <App />\n </AhpViewerClientProvider>\n </StrictMode>,\n );\n}\n"],"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,33,36,37,47,48,62,115,116,117],"mappings":"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wB,EAAc,EAAa,OAAQ,EAAM,OAGnE,GACE,EACA,EACA,EACA,EACD,CACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,MACF,IAAK,IACH,MACF,IAAK,IACH,EAAyB,EAAa,UACtC,EAAK,EAAa,UACT,EAAa,gBAAtB,KASI,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,EACC,EAAuB,aAAe,EACxC,GACE,EACA,EACA,EACA,GACO,EAAa,aAAe,QAAnC,GAA6C,CAAC,EAC/C,EAtBH,EAAuB,YAAc,EACnC,GACE,EACA,EACA,EACA,EACD,CACD,GAAwC,EAAc,EAAa,CAgBzE,EAAQ,MAAQ,GAAmC,EAAI,EAAa,CACpE,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACD,CACD,EAAQ,MACN,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QACE,GACE,EACA,EACA,EACA,EACD,EAGP,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,CAIA,IAHA,KAEU,EAAY,aAAe,QAAlC,GAA4C,CAAC,EAC3C,EAAc,EAAY,MAAgB,IAAT,MAAwB,CAC5D,IAAI,EAAe,EACjB,EAAe,EACf,EAAiB,EACjB,EAAuB,EACvB,EAAQ,EAAa,MACvB,OAAQ,EAAa,IAArB,CACE,IAAK,GACL,IAAK,IACL,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GAA0B,EAAG,EAAa,CAC1C,MACF,IAAK,IACH,MACF,IAAK,IACH,IAAI,EAAW,EAAa,UACnB,EAAa,gBAAtB,MAaM,EAAS,aAAe,EAC1B,GACE,EACA,EACA,EACA,EACA,EACD,EAnBD,EAAS,YAAc,EACrB,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EACA,EACD,CASP,GACE,EAAQ,MACR,GACE,EAAa,UACb,EACD,CACH,MACF,IAAK,IACH,GACE,EACA,EACA,EACA,EACA,EACD,CACD,GACE,EAAQ,MACR,GAA8B,EAAa,UAAW,EAAa,CACrE,MACF,QA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,EAAO,EACX,EAAa,GACb,IAAI,EAAoB,EAAK,QAAQ,cAAc,aAQnD,GAPA,IACG,GAAkB,EAAM,EAAyB,CAAC,OAAS,KAC9D,EAA2B,GACzB,EACA,EACA,CAAC,EACF,CACS,IAAN,EAAgC,CAClC,GACE,IACA,CAAC,EACD,CACA,EAAK,4BAA8B,EACnC,IACE,EACF,EAAa,EACb,MAAM,EAER,EAAsB,GACtB,GAAsC,EAC7B,IAAT,OACY,KAAT,KACI,GAAsC,EACvC,GAAoC,KAAK,MACvC,GACA,EACD,EAET,EAAa,EAGf,GADA,EAAsB,CAAC,EACb,IAAN,EAAkB,UAG1B,GAAU,IAAN,EAAkB,CACpB,GAAkB,EAAe,EAAE,CACnC,GAAkB,EAAe,EAAO,EAAG,CAAC,EAAE,CAC9C,MAEF,EAAG,CAGD,OAFA,EAAkB,EAClB,EAAsB,EACd,EAAR,CACE,IAAK,GACL,IAAK,GACH,MAAM,MAAM,EAAuB,IAAI,CAAC,CAC1C,IAAK,GACH,IAAK,EAAQ,WAAa,EAAO,MACnC,IAAK,GACH,GACE,EACA,EACA,GACA,CAAC,GACF,CACD,MAAM,EACR,IAAK,GACH,GAAsC,KACtC,MACF,IAAK,GACL,IAAK,GACH,MACF,QACE,MAAM,MAAM,EAAuB,IAAI,CAAC,CAE5C,IACG,EAAQ,YAAc,IACrB,EAAa,GAA+B,IAAM,IAAK,CACzD,GAAK,GACL,CAOA,GANA,GACE,EACA,EACA,GACA,CAAC,GACF,CACS,GAAa,EAAiB,EAAG,CAAC,EAAE,GAA1C,EAA4C,MAAM,EACtD,GAAsB,EACtB,EAAgB,cAAgB,GAC9B,GAAoB,KAClB,KACA,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,YACA,GACA,EACD,CACD,EACD,CACD,MAAM,EAER,GACE,EACA,EACA,GACA,GACA,GACA,EACA,GACA,GACA,GACA,GACA,EACA,KACA,GACA,EACD,EAGL,YACO,GACT,GAAsB,EAAc,CAEtC,SAAS,GACP,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA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"}
|