turn node; } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) { if (0 !== (node.flags & 128)) return node; } else if (null !== node.child) { node.child.return = node; node = node.child; continue; } if (node === row) break; for (; null === node.sibling; ) { if (null === node.return || node.return === row) return null; node = node.return; } node.sibling.return = node.return; node = node.sibling; } return null; } function createCache() { return { controller: new AbortControllerLocal(), data: /* @__PURE__ */ new Map(), refCount: 0 }; } function retainCache(cache) { cache.controller.signal.aborted && console.warn( "A cache instance was retained after it was already freed. This likely indicates a bug in React." ); cache.refCount++; } function releaseCache(cache) { cache.refCount--; 0 > cache.refCount && console.warn( "A cache instance was released after it was already freed. This likely indicates a bug in React." ); 0 === cache.refCount && scheduleCallback$2(NormalPriority, function() { cache.controller.abort(); }); } function entangleAsyncAction(transition, thenable) { if (null === currentEntangledListeners) { var entangledListeners = currentEntangledListeners = []; currentEntangledPendingCount = 0; currentEntangledLane = requestTransitionLane(); currentEntangledActionThenable = { status: "pending", value: void 0, then: function(resolve) { entangledListeners.push(resolve); } }; } currentEntangledPendingCount++; thenable.then(pingEngtangledActionScope, pingEngtangledActionScope); return thenable; } function pingEngtangledActionScope() { if (0 === --currentEntangledPendingCount && null !== currentEntangledListeners) { null !== currentEntangledActionThenable && (currentEntangledActionThenable.status = "fulfilled"); var listeners = currentEntangledListeners; currentEntangledListeners = null; currentEntangledLane = 0; currentEntangledActionThenable = null; for (var i = 0; i < listeners.length; i++) (0, listeners[i])(); } } function chainThenableValue(thenable, result) { var listeners = [], thenableWithOverride = { status: "pending", value: null, reason: null, then: function(resolve) { listeners.push(resolve); } }; thenable.then( function() { thenableWithOverride.status = "fulfilled"; thenableWithOverride.value = result; for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result); }, function(error) { thenableWithOverride.status = "rejected"; thenableWithOverride.reason = error; for (error = 0; error < listeners.length; error++) (0, listeners[error])(void 0); } ); return thenableWithOverride; } function peekCacheFromPool() { var cacheResumedFromPreviousRender = resumedCache.current; return null !== cacheResumedFromPreviousRender ? cacheResumedFromPreviousRender : workInProgressRoot.pooledCache; } function pushTransition(offscreenWorkInProgress, prevCachePool) { null === prevCachePool ? push(resumedCache, resumedCache.current, offscreenWorkInProgress) : push(resumedCache, prevCachePool.pool, offscreenWorkInProgress); } function getSuspendedCache() { var cacheFromPool = peekCacheFromPool(); return null === cacheFromPool ? null : { parent: CacheContext._currentValue, pool: cacheFromPool }; } function mountHookTypesDev() { var hookName = currentHookNameInDev; null === hookTypesDev ? hookTypesDev = [hookName] : hookTypesDev.push(hookName); } function updateHookTypesDev() { var hookName = currentHookNameInDev; if (null !== hookTypesDev && (hookTypesUpdateIndexDev++, hookTypesDev[hookTypesUpdateIndexDev] !== hookName)) { var componentName2 = getComponentNameFromFiber( currentlyRenderingFiber$1 ); if (!didWarnAboutMismatchedHooksForComponent.has(componentName2) && (didWarnAboutMismatchedHooksForComponent.add(componentName2), null !== hookTypesDev)) { for (var table = "", i = 0; i <= hookTypesUpdateIndexDev; i++) { var oldHookName = hookTypesDev[i], newHookName = i === hookTypesUpdateIndexDev ? hookName : oldHookName; for (oldHookName = i + 1 + ". " + oldHookName; 30 > oldHookName.length; ) oldHookName += " "; oldHookName += newHookName + "\n"; table += oldHookName; } console.error( "React has detected a change in the order of Hooks called by %s. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://react.dev/link/rules-of-hooks\n\n Previous render Next render\n ------------------------------------------------------\n%s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n", componentName2, table ); } } } function checkDepsAreArrayDev(deps) { void 0 === deps || null === deps || isArrayImpl(deps) || console.error( "%s received a final argument that is not an array (instead, received `%s`). When specified, the final argument must be an array.", currentHookNameInDev, typeof deps ); } function warnOnUseFormStateInDev() { var componentName2 = getComponentNameFromFiber(currentlyRenderingFiber$1); didWarnAboutUseFormState.has(componentName2) || (didWarnAboutUseFormState.add(componentName2), console.error( "ReactDOM.useFormState has been renamed to React.useActionState. Please update %s to use React.useActionState.", componentName2 )); } function throwInvalidHookError() { throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem." ); } function areHookInputsEqual(nextDeps, prevDeps) { if (ignorePreviousDependencies) return false; if (null === prevDeps) return console.error( "%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.", currentHookNameInDev ), false; nextDeps.length !== prevDeps.length && console.error( "The final argument passed to %s changed size between renders. The order and size of this array must remain constant.\n\nPrevious: %s\nIncoming: %s", currentHookNameInDev, "[" + prevDeps.join(", ") + "]", "[" + nextDeps.join(", ") + "]" ); for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) if (!objectIs(nextDeps[i], prevDeps[i])) return false; return true; } function renderWithHooks(current2, workInProgress2, Component, props, secondArg, nextRenderLanes) { renderLanes = nextRenderLanes; currentlyRenderingFiber$1 = workInProgress2; hookTypesDev = null !== current2 ? current2._debugHookTypes : null; hookTypesUpdateIndexDev = -1; ignorePreviousDependencies = null !== current2 && current2.type !== workInProgress2.type; if ("[object AsyncFunction]" === Object.prototype.toString.call(Component) || "[object AsyncGeneratorFunction]" === Object.prototype.toString.call(Component)) nextRenderLanes = getComponentNameFromFiber( currentlyRenderingFiber$1 ), didWarnAboutAsyncClientComponent.has(nextRenderLanes) || (didWarnAboutAsyncClientComponent.add(nextRenderLanes), console.error( "async/await is not yet supported in Client Components, only Server Components. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server." )); workInProgress2.memoizedState = null; workInProgress2.updateQueue = null; workInProgress2.lanes = 0; ReactSharedInternals.H = null !== current2 && null !== current2.memoizedState ? HooksDispatcherOnUpdateInDEV : null !== hookTypesDev ? HooksDispatcherOnMountWithHookTypesInDEV : HooksDispatcherOnMountInDEV; shouldDoubleInvokeUserFnsInHooksDEV = nextRenderLanes = (workInProgress2.mode & StrictLegacyMode) !== NoMode; var children = callComponentInDEV(Component, props, secondArg); shouldDoubleInvokeUserFnsInHooksDEV = false; didScheduleRenderPhaseUpdateDuringThisPass && (children = renderWithHooksAgain( workInProgress2, Component, props, secondArg )); if (nextRenderLanes) { setIsStrictModeForDevtools(true); try { children = renderWithHooksAgain( workInProgress2, Component, props, secondArg ); } finally { setIsStrictModeForDevtools(false); } } finishRenderingHooks(current2, workInProgress2); return children; } function finishRenderingHooks(current2, workInProgress2) { workInProgress2._debugHookTypes = hookTypesDev; null === workInProgress2.dependencies ? null !== thenableState && (workInProgress2.dependencies = { lanes: 0, firstContext: null, _debugThenableState: thenableState }) : workInProgress2.dependencies._debugThenableState = thenableState; ReactSharedInternals.H = ContextOnlyDispatcher; var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next; renderLanes = 0; hookTypesDev = currentHookNameInDev = workInProgressHook = currentHook = currentlyRenderingFiber$1 = null; hookTypesUpdateIndexDev = -1; null !== current2 && (current2.flags & 31457280) !== (workInProgress2.flags & 31457280) && console.error( "Internal React error: Expected static flag was missing. Please notify the React team." ); didScheduleRenderPhaseUpdate = false; thenableIndexCounter = 0; thenableState = null; if (didRenderTooFewHooks) throw Error( "Rendered fewer hooks than expected. This may be caused by an accidental early return statement." ); null === current2 || didReceiveUpdate || (current2 = current2.dependencies, null !== current2 && checkIfContextChanged(current2) && (didReceiveUpdate = true)); needsToResetSuspendedThenableDEV ? (needsToResetSuspendedThenableDEV = false, current2 = true) : current2 = false; current2 && (workInProgress2 = getComponentNameFromFiber(workInProgress2) || "Unknown", didWarnAboutUseWrappedInTryCatch.has(workInProgress2) || didWarnAboutAsyncClientComponent.has(workInProgress2) || (didWarnAboutUseWrappedInTryCatch.add(workInProgress2), console.error( "`use` was called from inside a try/catch block. This is not allowed and can lead to unexpected behavior. To handle errors triggered by `use`, wrap your component in a error boundary." ))); } function renderWithHooksAgain(workInProgress2, Component, props, secondArg) { currentlyRenderingFiber$1 = workInProgress2; var numberOfReRenders = 0; do { didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null); thenableIndexCounter = 0; didScheduleRenderPhaseUpdateDuringThisPass = false; if (numberOfReRenders >= RE_RENDER_LIMIT) throw Error( "Too many re-renders. React limits the number of renders to prevent an infinite loop." ); numberOfReRenders += 1; ignorePreviousDependencies = false; workInProgressHook = currentHook = null; if (null != workInProgress2.updateQueue) { var children = workInProgress2.updateQueue; children.lastEffect = null; children.events = null; children.stores = null; null != children.memoCache && (children.memoCache.index = 0); } hookTypesUpdateIndexDev = -1; ReactSharedInternals.H = HooksDispatcherOnRerenderInDEV; children = callComponentInDEV(Component, props, secondArg); } while (didScheduleRenderPhaseUpdateDuringThisPass); return children; } function TransitionAwareHostComponent() { var dispatcher = ReactSharedInternals.H, maybeThenable = dispatcher.useState()[0]; maybeThenable = "function" === typeof maybeThenable.then ? useThenable(maybeThenable) : maybeThenable; dispatcher = dispatcher.useState()[0]; (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher && (currentlyRenderingFiber$1.flags |= 1024); return maybeThenable; } function checkDidRenderIdHook() { var didRenderIdHook = 0 !== localIdCounter; localIdCounter = 0; return didRenderIdHook; } function bailoutHooks(current2, workInProgress2, lanes) { workInProgress2.updateQueue = current2.updateQueue; workInProgress2.flags = (workInProgress2.mode & StrictEffectsMode) !== NoMode ? workInProgress2.flags & -201328645 : workInProgress2.flags & -2053; current2.lanes &= ~lanes; } function resetHooksOnUnwind(workInProgress2) { if (didScheduleRenderPhaseUpdate) { for (workInProgress2 = workInProgress2.memoizedState; null !== workInProgress2; ) { var queue = workInProgress2.queue; null !== queue && (queue.pending = null); workInProgress2 = workInProgress2.next; } didScheduleRenderPhaseUpdate = false; } renderLanes = 0; hookTypesDev = workInProgressHook = currentHook = currentlyRenderingFiber$1 = null; hookTypesUpdateIndexDev = -1; currentHookNameInDev = null; didScheduleRenderPhaseUpdateDuringThisPass = false; thenableIndexCounter = localIdCounter = 0; thenableState = null; } function mountWorkInProgressHook() { var hook = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null }; null === workInProgressHook ? currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook : workInProgressHook = workInProgressHook.next = hook; return workInProgressHook; } function updateWorkInProgressHook() { if (null === currentHook) { var nextCurrentHook = currentlyRenderingFiber$1.alternate; nextCurrentHook = null !== nextCurrentHook ? nextCurrentHook.memoizedState : null; } else nextCurrentHook = currentHook.next; var nextWorkInProgressHook = null === workInProgressHook ? currentlyRenderingFiber$1.memoizedState : workInProgressHook.next; if (null !== nextWorkInProgressHook) workInProgressHook = nextWorkInProgressHook, currentHook = nextCurrentHook; else { if (null === nextCurrentHook) { if (null === currentlyRenderingFiber$1.alternate) throw Error( "Update hook called on initial render. This is likely a bug in React. Please file an issue." ); throw Error("Rendered more hooks than during the previous render."); } currentHook = nextCurrentHook; nextCurrentHook = { memoizedState: currentHook.memoizedState, baseState: currentHook.baseState, baseQueue: currentHook.baseQueue, queue: currentHook.queue, next: null }; null === workInProgressHook ? currentlyRenderingFiber$1.memoizedState = workInProgressHook = nextCurrentHook : workInProgressHook = workInProgressHook.next = nextCurrentHook; } return workInProgressHook; } function useThenable(thenable) { var index = thenableIndexCounter; thenableIndexCounter += 1; null === thenableState && (thenableState = createThenableState()); thenable = trackUsedThenable(thenableState, thenable, index); index = currentlyRenderingFiber$1; null === (null === workInProgressHook ? index.memoizedState : workInProgressHook.next) && (index = index.alternate, ReactSharedInternals.H = null !== index && null !== index.memoizedState ? HooksDispatcherOnUpdateInDEV : HooksDispatcherOnMountInDEV); return thenable; } function use(usable) { if (null !== usable && "object" === typeof usable) { if ("function" === typeof usable.then) return useThenable(usable); if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable); } throw Error("An unsupported type was passed to use(): " + String(usable)); } function useMemoCache(size) { var memoCache = null, updateQueue = currentlyRenderingFiber$1.updateQueue; null !== updateQueue && (memoCache = updateQueue.memoCache); if (null == memoCache) { var current2 = currentlyRenderingFiber$1.alternate; null !== current2 && (current2 = current2.updateQueue, null !== current2 && (current2 = current2.memoCache, null != current2 && (memoCache = { data: current2.data.map(function(array) { return array.slice(); }), index: 0 }))); } null == memoCache && (memoCache = { data: [], index: 0 }); null === updateQueue && (updateQueue = createFunctionComponentUpdateQueue(), currentlyRenderingFiber$1.updateQueue = updateQueue); updateQueue.memoCache = memoCache; updateQueue = memoCache.data[memoCache.index]; if (void 0 === updateQueue || ignorePreviousDependencies) for (updateQueue = memoCache.data[memoCache.index] = Array(size), current2 = 0; current2 < size; current2++) updateQueue[current2] = REACT_MEMO_CACHE_SENTINEL; else updateQueue.length !== size && console.error( "Expected a constant size argument for each invocation of useMemoCache. The previous cache was allocated with size %s but size %s was requested.", updateQueue.length, size ); memoCache.index++; return updateQueue; } function basicStateReducer(state, action) { return "function" === typeof action ? action(state) : action; } function mountReducer(reducer, initialArg, init) { var hook = mountWorkInProgressHook(); if (void 0 !== init) { var initialState = init(initialArg); if (shouldDoubleInvokeUserFnsInHooksDEV) { setIsStrictModeForDevtools(true); try { init(initialArg); } finally { setIsStrictModeForDevtools(false); } } } else initialState = initialArg; hook.memoizedState = hook.baseState = initialState; reducer = { pending: null, lanes: 0, dispatch: null, lastRenderedReducer: reducer, lastRenderedState: initialState }; hook.queue = reducer; reducer = reducer.dispatch = dispatchReducerAction.bind( null, currentlyRenderingFiber$1, reducer ); return [hook.memoizedState, reducer]; } function updateReducer(reducer) { var hook = updateWorkInProgressHook(); return updateReducerImpl(hook, currentHook, reducer); } function updateReducerImpl(hook, current2, reducer) { var queue = hook.queue; if (null === queue) throw Error( "Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)" ); queue.lastRenderedReducer = reducer; var baseQueue = hook.baseQueue, pendingQueue = queue.pending; if (null !== pendingQueue) { if (null !== baseQueue) { var baseFirst = baseQueue.next; baseQueue.next = pendingQueue.next; pendingQueue.next = baseFirst; } current2.baseQueue !== baseQueue && console.error( "Internal error: Expected work-in-progress queue to be a clone. This is a bug in React." ); current2.baseQueue = baseQueue = pendingQueue; queue.pending = null; } pendingQueue = hook.baseState; if (null === baseQueue) hook.memoizedState = pendingQueue; else { current2 = baseQueue.next; var newBaseQueueFirst = baseFirst = null, newBaseQueueLast = null, update = current2, didReadFromEntangledAsyncAction2 = false; do { var updateLane = update.lane & -536870913; if (updateLane !== update.lane ? (workInProgressRootRenderLanes & updateLane) === updateLane : (renderLanes & updateLane) === updateLane) { var revertLane = update.revertLane; if (0 === revertLane) null !== newBaseQueueLast && (newBaseQueueLast = newBaseQueueLast.next = { lane: 0, revertLane: 0, action: update.action, hasEagerState: update.hasEagerState, eagerState: update.eagerState, next: null }), updateLane === currentEntangledLane && (didReadFromEntangledAsyncAction2 = true); else if ((renderLanes & revertLane) === revertLane) { update = update.next; revertLane === currentEntangledLane && (didReadFromEntangledAsyncAction2 = true); continue; } else updateLane = { lane: 0, revertLane: update.revertLane, action: update.action, hasEagerState: update.hasEagerState, eagerState: update.eagerState, next: null }, null === newBaseQueueLast ? (newBaseQueueFirst = newBaseQueueLast = updateLane, baseFirst = pendingQueue) : newBaseQueueLast = newBaseQueueLast.next = updateLane, currentlyRenderingFiber$1.lanes |= revertLane, workInProgressRootSkippedLanes |= revertLane; updateLane = update.action; shouldDoubleInvokeUserFnsInHooksDEV && reducer(pendingQueue, updateLane); pendingQueue = update.hasEagerState ? update.eagerState : reducer(pendingQueue, updateLane); } else revertLane = { lane: updateLane, revertLane: update.revertLane, action: update.action, hasEagerState: update.hasEagerState, eagerState: update.eagerState, next: null }, null === newBaseQueueLast ? (newBaseQueueFirst = newBaseQueueLast = revertLane, baseFirst = pendingQueue) : newBaseQueueLast = newBaseQueueLast.next = revertLane, currentlyRenderingFiber$1.lanes |= updateLane, workInProgressRootSkippedLanes |= updateLane; update = update.next; } while (null !== update && update !== current2); null === newBaseQueueLast ? baseFirst = pendingQueue : newBaseQueueLast.next = newBaseQueueFirst; if (!objectIs(pendingQueue, hook.memoizedState) && (didReceiveUpdate = true, didReadFromEntangledAsyncAction2 && (reducer = currentEntangledActionThenable, null !== reducer))) throw reducer; hook.memoizedState = pendingQueue; hook.baseState = baseFirst; hook.baseQueue = newBaseQueueLast; queue.lastRenderedState = pendingQueue; } null === baseQueue && (queue.lanes = 0); return [hook.memoizedState, queue.dispatch]; } function rerenderReducer(reducer) { var hook = updateWorkInProgressHook(), queue = hook.queue; if (null === queue) throw Error( "Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)" ); queue.lastRenderedReducer = reducer; var dispatch = queue.dispatch, lastRenderPhaseUpdate = queue.pending, newState = hook.memoizedState; if (null !== lastRenderPhaseUpdate) { queue.pending = null; var update = lastRenderPhaseUpdate = lastRenderPhaseUpdate.next; do newState = reducer(newState, update.action), update = update.next; while (update !== lastRenderPhaseUpdate); objectIs(newState, hook.memoizedState) || (didReceiveUpdate = true); hook.memoizedState = newState; null === hook.baseQueue && (hook.baseState = newState); queue.lastRenderedState = newState; } return [newState, dispatch]; } function mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { var fiber = currentlyRenderingFiber$1, hook = mountWorkInProgressHook(); if (isHydrating) { if (void 0 === getServerSnapshot) throw Error( "Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering." ); var nextSnapshot = getServerSnapshot(); didWarnUncachedGetSnapshot || nextSnapshot === getServerSnapshot() || (console.error( "The result of getServerSnapshot should be cached to avoid an infinite loop" ), didWarnUncachedGetSnapshot = true); } else { nextSnapshot = getSnapshot(); didWarnUncachedGetSnapshot || (getServerSnapshot = getSnapshot(), objectIs(nextSnapshot, getServerSnapshot) || (console.error( "The result of getSnapshot should be cached to avoid an infinite loop" ), didWarnUncachedGetSnapshot = true)); if (null === workInProgressRoot) throw Error( "Expected a work-in-progress root. This is a bug in React. Please file an issue." ); 0 !== (workInProgressRootRenderLanes & 60) || pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot); } hook.memoizedState = nextSnapshot; getServerSnapshot = { value: nextSnapshot, getSnapshot }; hook.queue = getServerSnapshot; mountEffect( subscribeToStore.bind(null, fiber, getServerSnapshot, subscribe), [subscribe] ); fiber.flags |= 2048; pushEffect( HasEffect | Passive, updateStoreInstance.bind( null, fiber, getServerSnapshot, nextSnapshot, getSnapshot ), { destroy: void 0 }, null ); return nextSnapshot; } function updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) { var fiber = currentlyRenderingFiber$1, hook = updateWorkInProgressHook(), isHydrating$jscomp$0 = isHydrating; if (isHydrating$jscomp$0) { if (void 0 === getServerSnapshot) throw Error( "Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering." ); getServerSnapshot = getServerSnapshot(); } else if (getServerSnapshot = getSnapshot(), !didWarnUncachedGetSnapshot) { var cachedSnapshot = getSnapshot(); objectIs(getServerSnapshot, cachedSnapshot) || (console.error( "The result of getSnapshot should be cached to avoid an infinite loop" ), didWarnUncachedGetSnapshot = true); } if (cachedSnapshot = !objectIs( (currentHook || hook).memoizedState, getServerSnapshot )) hook.memoizedState = getServerSnapshot, didReceiveUpdate = true; hook = hook.queue; var create = subscribeToStore.bind(null, fiber, hook, subscribe); updateEffectImpl(2048, Passive, create, [subscribe]); if (hook.getSnapshot !== getSnapshot || cachedSnapshot || null !== workInProgressHook && workInProgressHook.memoizedState.tag & HasEffect) { fiber.flags |= 2048; pushEffect( HasEffect | Passive, updateStoreInstance.bind( null, fiber, hook, getServerSnapshot, getSnapshot ), { destroy: void 0 }, null ); if (null === workInProgressRoot) throw Error( "Expected a work-in-progress root. This is a bug in React. Please file an issue." ); isHydrating$jscomp$0 || 0 !== (renderLanes & 60) || pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot); } return getServerSnapshot; } function pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) { fiber.flags |= 16384; fiber = { getSnapshot, value: renderedSnapshot }; getSnapshot = currentlyRenderingFiber$1.updateQueue; null === getSnapshot ? (getSnapshot = createFunctionComponentUpdateQueue(), currentlyRenderingFiber$1.updateQueue = getSnapshot, getSnapshot.stores = [fiber]) : (renderedSnapshot = getSnapshot.stores, null === renderedSnapshot ? getSnapshot.stores = [fiber] : renderedSnapshot.push(fiber)); } function updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) { inst.value = nextSnapshot; inst.getSnapshot = getSnapshot; checkIfSnapshotChanged(inst) && forceStoreRerender(fiber); } function subscribeToStore(fiber, inst, subscribe) { return subscribe(function() { checkIfSnapshotChanged(inst) && forceStoreRerender(fiber); }); } function checkIfSnapshotChanged(inst) { var latestGetSnapshot = inst.getSnapshot; inst = inst.value; try { var nextValue = latestGetSnapshot(); return !objectIs(inst, nextValue); } catch (error) { return true; } } function forceStoreRerender(fiber) { var root2 = enqueueConcurrentRenderForLane(fiber, 2); null !== root2 && scheduleUpdateOnFiber(root2, fiber, 2); } function mountStateImpl(initialState) { var hook = mountWorkInProgressHook(); if ("function" === typeof initialState) { var initialStateInitializer = initialState; initialState = initialStateInitializer(); if (shouldDoubleInvokeUserFnsInHooksDEV) { setIsStrictModeForDevtools(true); try { initialStateInitializer(); } finally { setIsStrictModeForDevtools(false); } } } hook.memoizedState = hook.baseState = initialState; hook.queue = { pending: null, lanes: 0, dispatch: null, lastRenderedReducer: basicStateReducer, lastRenderedState: initialState }; return hook; } function mountState(initialState) { initialState = mountStateImpl(initialState); var queue = initialState.queue, dispatch = dispatchSetState.bind( null, currentlyRenderingFiber$1, queue ); queue.dispatch = dispatch; return [initialState.memoizedState, dispatch]; } function mountOptimistic(passthrough) { var hook = mountWorkInProgressHook(); hook.memoizedState = hook.baseState = passthrough; var queue = { pending: null, lanes: 0, dispatch: null, lastRenderedReducer: null, lastRenderedState: null }; hook.queue = queue; hook = dispatchOptimisticSetState.bind( null, currentlyRenderingFiber$1, true, queue ); queue.dispatch = hook; return [passthrough, hook]; } function updateOptimistic(passthrough, reducer) { var hook = updateWorkInProgressHook(); return updateOptimisticImpl(hook, currentHook, passthrough, reducer); } function updateOptimisticImpl(hook, current2, passthrough, reducer) { hook.baseState = passthrough; return updateReducerImpl( hook, currentHook, "function" === typeof reducer ? reducer : basicStateReducer ); } function rerenderOptimistic(passthrough, reducer) { var hook = updateWorkInProgressHook(); if (null !== currentHook) return updateOptimisticImpl(hook, currentHook, passthrough, reducer); hook.baseState = passthrough; return [passthrough, hook.queue.dispatch]; } function dispatchActionState(fiber, actionQueue, setPendingState, setState, payload) { if (isRenderPhaseUpdate(fiber)) throw Error("Cannot update form state while rendering."); fiber = actionQueue.action; if (null !== fiber) { var actionNode = { payload, action: fiber, next: null, isTransition: true, status: "pending", value: null, reason: null, listeners: [], then: function(listener) { actionNode.listeners.push(listener); } }; null !== ReactSharedInternals.T ? setPendingState(true) : actionNode.isTransition = false; setState(actionNode); setPendingState = actionQueue.pending; null === setPendingState ? (actionNode.next = actionQueue.pending = actionNode, runActionStateAction(actionQueue, actionNode)) : (actionNode.next = setPendingState.next, actionQueue.pending = setPendingState.next = actionNode); } } function runActionStateAction(actionQueue, node) { var action = node.action, payload = node.payload, prevState = actionQueue.state; if (node.isTransition) { var prevTransition = ReactSharedInternals.T, currentTransition = {}; ReactSharedInternals.T = currentTransition; ReactSharedInternals.T._updatedFibers = /* @__PURE__ */ new Set(); try { var returnValue = action(prevState, payload), onStartTransitionFinish = ReactSharedInternals.S; null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue); handleActionReturnValue(actionQueue, node, returnValue); } catch (error) { onActionError(actionQueue, node, error); } finally { ReactSharedInternals.T = prevTransition, null === prevTransition && currentTransition._updatedFibers && (actionQueue = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < actionQueue && console.warn( "Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table." )); } } else try { currentTransition = action(prevState, payload), handleActionReturnValue(actionQueue, node, currentTransition); } catch (error$3) { onActionError(actionQueue, node, error$3); } } function handleActionReturnValue(actionQueue, node, returnValue) { null !== returnValue && "object" === typeof returnValue && "function" === typeof returnValue.then ? (returnValue.then( function(nextState) { onActionSuccess(actionQueue, node, nextState); }, function(error) { return onActionError(actionQueue, node, error); } ), node.isTransition || console.error( "An async function was passed to useActionState, but it was dispatched outside of an action context. This is likely not what you intended. Either pass the dispatch function to an `action` prop, or dispatch manually inside `startTransition`" )) : onActionSuccess(actionQueue, node, returnValue); } function onActionSuccess(actionQueue, actionNode, nextState) { actionNode.status = "fulfilled"; actionNode.value = nextState; notifyActionListeners(actionNode); actionQueue.state = nextState; actionNode = actionQueue.pending; null !== actionNode && (nextState = actionNode.next, nextState === actionNode ? actionQueue.pending = null : (nextState = nextState.next, actionNode.next = nextState, runActionStateAction(actionQueue, nextState))); } function onActionError(actionQueue, actionNode, error) { var last = actionQueue.pending; actionQueue.pending = null; if (null !== last) { last = last.next; do actionNode.status = "rejected", actionNode.reason = error, notifyActionListeners(actionNode), actionNode = actionNode.next; while (actionNode !== last); } actionQueue.action = null; } function notifyActionListeners(actionNode) { actionNode = actionNode.listeners; for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])(); } function actionStateReducer(oldState, newState) { return newState; } function mountActionState(action, initialStateProp) { if (isHydrating) { var ssrFormState = workInProgressRoot.formState; if (null !== ssrFormState) { a: { var isMatching = currentlyRenderingFiber$1; if (isHydrating) { if (nextHydratableInstance) { b: { var markerInstance = nextHydratableInstance; for (var inRootOrSingleton = rootOrSingletonContext; 8 !== markerInstance.nodeType; ) { if (!inRootOrSingleton) { markerInstance = null; break b; } markerInstance = getNextHydratable( markerInstance.nextSibling ); if (null === markerInstance) { markerInstance = null; break b; } } inRootOrSingleton = markerInstance.data; markerInstance = inRootOrSingleton === FORM_STATE_IS_MATCHING || inRootOrSingleton === FORM_STATE_IS_NOT_MATCHING ? markerInstance : null; } if (markerInstance) { nextHydratableInstance = getNextHydratable( markerInstance.nextSibling ); isMatching = markerInstance.data === FORM_STATE_IS_MATCHING; break a; } } throwOnHydrationMismatch(isMatching); } isMatching = false; } isMatching && (initialStateProp = ssrFormState[0]); } } ssrFormState = mountWorkInProgressHook(); ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp; isMatching = { pending: null, lanes: 0, dispatch: null, lastRenderedReducer: actionStateReducer, lastRenderedState: initialStateProp }; ssrFormState.queue = isMatching; ssrFormState = dispatchSetState.bind( null, currentlyRenderingFiber$1, isMatching ); isMatching.dispatch = ssrFormState; isMatching = mountStateImpl(false); inRootOrSingleton = dispatchOptimisticSetState.bind( null, currentlyRenderingFiber$1, false, isMatching.queue ); isMatching = mountWorkInProgressHook(); markerInstance = { state: initialStateProp, dispatch: null, action, pending: null }; isMatching.queue = markerInstance; ssrFormState = dispatchActionState.bind( null, currentlyRenderingFiber$1, markerInstance, inRootOrSingleton, ssrFormState ); markerInstance.dispatch = ssrFormState; isMatching.memoizedState = action; return [initialStateProp, ssrFormState, false]; } function updateActionState(action) { var stateHook = updateWorkInProgressHook(); return updateActionStateImpl(stateHook, currentHook, action); } function updateActionStateImpl(stateHook, currentStateHook, action) { currentStateHook = updateReducerImpl( stateHook, currentStateHook, actionStateReducer )[0]; stateHook = updateReducer(basicStateReducer)[0]; currentStateHook = "object" === typeof currentStateHook && null !== currentStateHook && "function" === typeof currentStateHook.then ? useThenable(currentStateHook) : currentStateHook; var actionQueueHook = updateWorkInProgressHook(), actionQueue = actionQueueHook.queue, dispatch = actionQueue.dispatch; action !== actionQueueHook.memoizedState && (currentlyRenderingFiber$1.flags |= 2048, pushEffect( HasEffect | Passive, actionStateActionEffect.bind(null, actionQueue, action), { destroy: void 0 }, null )); return [currentStateHook, dispatch, stateHook]; } function actionStateActionEffect(actionQueue, action) { actionQueue.action = action; } function rerenderActionState(action) { var stateHook = updateWorkInProgressHook(), currentStateHook = currentHook; if (null !== currentStateHook) return updateActionStateImpl(stateHook, currentStateHook, action); updateWorkInProgressHook(); stateHook = stateHook.memoizedState; currentStateHook = updateWorkInProgressHook(); var dispatch = currentStateHook.queue.dispatch; currentStateHook.memoizedState = action; return [stateHook, dispatch, false]; } function pushEffect(tag, create, inst, deps) { tag = { tag, create, inst, deps, next: null }; create = currentlyRenderingFiber$1.updateQueue; null === create && (create = createFunctionComponentUpdateQueue(), currentlyRenderingFiber$1.updateQueue = create); inst = create.lastEffect; null === inst ? create.lastEffect = tag.next = tag : (deps = inst.next, inst.next = tag, tag.next = deps, create.lastEffect = tag); return tag; } function mountRef(initialValue) { var hook = mountWorkInProgressHook(); initialValue = { current: initialValue }; return hook.memoizedState = initialValue; } function mountEffectImpl(fiberFlags, hookFlags, create, deps) { var hook = mountWorkInProgressHook(); currentlyRenderingFiber$1.flags |= fiberFlags; hook.memoizedState = pushEffect( HasEffect | hookFlags, create, { destroy: void 0 }, void 0 === deps ? null : deps ); } function updateEffectImpl(fiberFlags, hookFlags, create, deps) { var hook = updateWorkInProgressHook(); deps = void 0 === deps ? null : deps; var inst = hook.memoizedState.inst; null !== currentHook && null !== deps && areHookInputsEqual(deps, currentHook.memoizedState.deps) ? hook.memoizedState = pushEffect(hookFlags, create, inst, deps) : (currentlyRenderingFiber$1.flags |= fiberFlags, hook.memoizedState = pushEffect( HasEffect | hookFlags, create, inst, deps )); } function mountEffect(create, deps) { (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode && (currentlyRenderingFiber$1.mode & NoStrictPassiveEffectsMode) === NoMode ? mountEffectImpl(142608384, Passive, create, deps) : mountEffectImpl(8390656, Passive, create, deps); } function mountLayoutEffect(create, deps) { var fiberFlags = 4194308; (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode && (fiberFlags |= 67108864); return mountEffectImpl(fiberFlags, Layout, create, deps); } function imperativeHandleEffect(create, ref) { if ("function" === typeof ref) { create = create(); var refCleanup = ref(create); return function() { "function" === typeof refCleanup ? refCleanup() : ref(null); }; } if (null !== ref && void 0 !== ref) return ref.hasOwnProperty("current") || console.error( "Expected useImperativeHandle() first argument to either be a ref callback or React.createRef() object. Instead received: %s.", "an object with keys {" + Object.keys(ref).join(", ") + "}" ), create = create(), ref.current = create, function() { ref.current = null; }; } function mountImperativeHandle(ref, create, deps) { "function" !== typeof create && console.error( "Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.", null !== create ? typeof create : "null" ); deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null; var fiberFlags = 4194308; (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode && (fiberFlags |= 67108864); mountEffectImpl( fiberFlags, Layout, imperativeHandleEffect.bind(null, create, ref), deps ); } function updateImperativeHandle(ref, create, deps) { "function" !== typeof create && console.error( "Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.", null !== create ? typeof create : "null" ); deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null; updateEffectImpl( 4, Layout, imperativeHandleEffect.bind(null, create, ref), deps ); } function mountCallback(callback, deps) { mountWorkInProgressHook().memoizedState = [ callback, void 0 === deps ? null : deps ]; return callback; } function updateCallback(callback, deps) { var hook = updateWorkInProgressHook(); deps = void 0 === deps ? null : deps; var prevState = hook.memoizedState; if (null !== deps && areHookInputsEqual(deps, prevState[1])) return prevState[0]; hook.memoizedState = [callback, deps]; return callback; } function mountMemo(nextCreate, deps) { var hook = mountWorkInProgressHook(); deps = void 0 === deps ? null : deps; var nextValue = nextCreate(); if (shouldDoubleInvokeUserFnsInHooksDEV) { setIsStrictModeForDevtools(true); try { nextCreate(); } finally { setIsStrictModeForDevtools(false); } } hook.memoizedState = [nextValue, deps]; return nextValue; } function updateMemo(nextCreate, deps) { var hook = updateWorkInProgressHook(); deps = void 0 === deps ? null : deps; var prevState = hook.memoizedState; if (null !== deps && areHookInputsEqual(deps, prevState[1])) return prevState[0]; prevState = nextCreate(); if (shouldDoubleInvokeUserFnsInHooksDEV) { setIsStrictModeForDevtools(true); try { nextCreate(); } finally { setIsStrictModeForDevtools(false); } } hook.memoizedState = [prevState, deps]; return prevState; } function mountDeferredValue(value, initialValue) { var hook = mountWorkInProgressHook(); return mountDeferredValueImpl(hook, value, initialValue); } function updateDeferredValue(value, initialValue) { var hook = updateWorkInProgressHook(); return updateDeferredValueImpl( hook, currentHook.memoizedState, value, initialValue ); } function rerenderDeferredValue(value, initialValue) { var hook = updateWorkInProgressHook(); return null === currentHook ? mountDeferredValueImpl(hook, value, initialValue) : updateDeferredValueImpl( hook, currentHook.memoizedState, value, initialValue ); } function mountDeferredValueImpl(hook, value, initialValue) { if (void 0 === initialValue || 0 !== (renderLanes & 1073741824)) return hook.memoizedState = value; hook.memoizedState = initialValue; hook = requestDeferredLane(); currentlyRenderingFiber$1.lanes |= hook; workInProgressRootSkippedLanes |= hook; return initialValue; } function updateDeferredValueImpl(hook, prevValue, value, initialValue) { if (objectIs(value, prevValue)) return value; if (null !== currentTreeHiddenStackCursor.current) return hook = mountDeferredValueImpl(hook, value, initialValue), objectIs(hook, prevValue) || (didReceiveUpdate = true), hook; if (0 === (renderLanes & 42)) return didReceiveUpdate = true, hook.memoizedState = value; hook = requestDeferredLane(); currentlyRenderingFiber$1.lanes |= hook; workInProgressRootSkippedLanes |= hook; return prevValue; } function startTransition(fiber, queue, pendingState, finishedState, callback) { var previousPriority = ReactDOMSharedInternals.p; ReactDOMSharedInternals.p = 0 !== previousPriority && previousPriority < ContinuousEventPriority ? previousPriority : ContinuousEventPriority; var prevTransition = ReactSharedInternals.T, currentTransition = {}; ReactSharedInternals.T = currentTransition; dispatchOptimisticSetState(fiber, false, queue, pendingState); currentTransition._updatedFibers = /* @__PURE__ */ new Set(); try { var returnValue = callback(), onStartTransitionFinish = ReactSharedInternals.S; null !== onStartTransitionFinish && onStartTransitionFinish(currentTransition, returnValue); if (null !== returnValue && "object" === typeof returnValue && "function" === typeof returnValue.then) { var thenableForFinishedState = chainThenableValue( returnValue, finishedState ); dispatchSetStateInternal( fiber, queue, thenableForFinishedState, requestUpdateLane(fiber) ); } else dispatchSetStateInternal( fiber, queue, finishedState, requestUpdateLane(fiber) ); } catch (error) { dispatchSetStateInternal( fiber, queue, { then: function() { }, status: "rejected", reason: error }, requestUpdateLane(fiber) ); } finally { ReactDOMSharedInternals.p = previousPriority, ReactSharedInternals.T = prevTransition, null === prevTransition && currentTransition._updatedFibers && (fiber = currentTransition._updatedFibers.size, currentTransition._updatedFibers.clear(), 10 < fiber && console.warn( "Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table." )); } } function startHostTransition(formFiber, pendingState, action, formData) { if (5 !== formFiber.tag) throw Error( "Expected the form instance to be a HostComponent. This is a bug in React." ); var queue = ensureFormComponentIsStateful(formFiber).queue; startTransition( formFiber, queue, pendingState, NotPendingTransition, null === action ? noop$2 : function() { requestFormReset$1(formFiber); return action(formData); } ); } function ensureFormComponentIsStateful(formFiber) { var existingStateHook = formFiber.memoizedState; if (null !== existingStateHook) return existingStateHook; existingStateHook = { memoizedState: NotPendingTransition, baseState: NotPendingTransition, baseQueue: null, queue: { pending: null, lanes: 0, dispatch: null, lastRenderedReducer: basicStateReducer, lastRenderedState: NotPendingTransition }, next: null }; var initialResetState = {}; existingStateHook.next = { memoizedState: initialResetState, baseState: initialResetState, baseQueue: null, queue: { pending: null, lanes: 0, dispatch: null, lastRenderedReducer: basicStateReducer, lastRenderedState: initialResetState }, next: null }; formFiber.memoizedState = existingStateHook; formFiber = formFiber.alternate; null !== formFiber && (formFiber.memoizedState = existingStateHook); return existingStateHook; } function requestFormReset$1(formFiber) { null === ReactSharedInternals.T && console.error( "requestFormReset was called outside a transition or action. To fix, move to an action, or wrap with startTransition." ); var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue; dispatchSetStateInternal( formFiber, resetStateQueue, {}, requestUpdateLane(formFiber) ); } function mountTransition() { var stateHook = mountStateImpl(false); stateHook = startTransition.bind( null, currentlyRenderingFiber$1, stateHook.queue, true, false ); mountWorkInProgressHook().memoizedState = stateHook; return [false, stateHook]; } function updateTransition() { var booleanOrThenable = updateReducer(basicStateReducer)[0], start = updateWorkInProgressHook().memoizedState; return [ "boolean" === typeof booleanOrThenable ? booleanOrThenable : useThenable(booleanOrThenable), start ]; } function rerenderTransition() { var booleanOrThenable = rerenderReducer(basicStateReducer)[0], start = updateWorkInProgressHook().memoizedState; return [ "boolean" === typeof booleanOrThenable ? booleanOrThenable : useThenable(booleanOrThenable), start ]; } function useHostTransitionStatus() { return readContext(HostTransitionContext); } function mountId() { var hook = mountWorkInProgressHook(), identifierPrefix = workInProgressRoot.identifierPrefix; if (isHydrating) { var treeId = treeContextOverflow; var idWithLeadingBit = treeContextId; treeId = (idWithLeadingBit & ~(1 << 32 - clz32(idWithLeadingBit) - 1)).toString(32) + treeId; identifierPrefix = ":" + identifierPrefix + "R" + treeId; treeId = localIdCounter++; 0 < treeId && (identifierPrefix += "H" + treeId.toString(32)); identifierPrefix += ":"; } else treeId = globalClientIdCounter++, identifierPrefix = ":" + identifierPrefix + "r" + treeId.toString(32) + ":"; return hook.memoizedState = identifierPrefix; } function mountRefresh() { return mountWorkInProgressHook().memoizedState = refreshCache.bind( null, currentlyRenderingFiber$1 ); } function refreshCache(fiber, seedKey) { for (var provider = fiber.return; null !== provider; ) { switch (provider.tag) { case 24: case 3: var lane = requestUpdateLane(provider); fiber = createUpdate(lane); var root2 = enqueueUpdate(provider, fiber, lane); null !== root2 && (scheduleUpdateOnFiber(root2, provider, lane), entangleTransitions(root2, provider, lane)); provider = createCache(); null !== seedKey && void 0 !== seedKey && null !== root2 && console.error( "The seed argument is not enabled outside experimental channels." ); fiber.payload = { cache: provider }; return; } provider = provider.return; } } function dispatchReducerAction(fiber, queue, action, JSCompiler_OptimizeArgumentsArray_p0) { "function" === typeof JSCompiler_OptimizeArgumentsArray_p0 && console.error( "State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect()." ); JSCompiler_OptimizeArgumentsArray_p0 = requestUpdateLane(fiber); action = { lane: JSCompiler_OptimizeArgumentsArray_p0, revertLane: 0, action, hasEagerState: false, eagerState: null, next: null }; isRenderPhaseUpdate(fiber) ? enqueueRenderPhaseUpdate(queue, action) : (action = enqueueConcurrentHookUpdate( fiber, queue, action, JSCompiler_OptimizeArgumentsArray_p0 ), null !== action && (scheduleUpdateOnFiber( action, fiber, JSCompiler_OptimizeArgumentsArray_p0 ), entangleTransitionUpdate( action, queue, JSCompiler_OptimizeArgumentsArray_p0 ))); markStateUpdateScheduled(fiber, JSCompiler_OptimizeArgumentsArray_p0); } function dispatchSetState(fiber, queue, action, JSCompiler_OptimizeArgumentsArray_p1) { "function" === typeof JSCompiler_OptimizeArgumentsArray_p1 && console.error( "State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect()." ); JSCompiler_OptimizeArgumentsArray_p1 = requestUpdateLane(fiber); dispatchSetStateInternal( fiber, queue, action, JSCompiler_OptimizeArgumentsArray_p1 ); markStateUpdateScheduled(fiber, JSCompiler_OptimizeArgumentsArray_p1); } function dispatchSetStateInternal(fiber, queue, action, lane) { var update = { lane, revertLane: 0, action, hasEagerState: false, eagerState: null, next: null }; if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update); else { var alternate = fiber.alternate; if (0 === fiber.lanes && (null === alternate || 0 === alternate.lanes) && (alternate = queue.lastRenderedReducer, null !== alternate)) { var prevDispatcher = ReactSharedInternals.H; ReactSharedInternals.H = InvalidNestedHooksDispatcherOnUpdateInDEV; try { var currentState = queue.lastRenderedState, eagerState = alternate(currentState, action); update.hasEagerState = true; update.eagerState = eagerState; if (objectIs(eagerState, currentState)) return enqueueUpdate$1(fiber, queue, update, 0), null === workInProgressRoot && finishQueueingConcurrentUpdates(), false; } catch (error) { } finally { ReactSharedInternals.H = prevDispatcher; } } action = enqueueConcurrentHookUpdate(fiber, queue, update, lane); if (null !== action) return scheduleUpdateOnFiber(action, fiber, lane), entangleTransitionUpdate(action, queue, lane), true; } return false; } function dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) { null === ReactSharedInternals.T && 0 === currentEntangledLane && console.error( "An optimistic state update occurred outside a transition or action. To fix, move the update to an action, or wrap with startTransition." ); act